EfficientNet from scratch in Pytorch

Поделиться
HTML-код
  • Опубликовано: 24 окт 2024

Комментарии • 92

  • @AladdinPersson
    @AladdinPersson  3 года назад +11

    These from scratch videos & paper implementations take a lot of time for me to do, if you want to see me make more of these types of videos: please crush that like button and subscribe and I'll do it :)
    Support the channel ❤️:
    ruclips.net/channel/UCkzW5JSFwvKRjXABI-UTAkQjoin
    Original paper: arxiv.org/abs/1905.11946
    Paper review: ruclips.net/video/_OZsGQHB41s/видео.html
    Code: bit.ly/2ORFxR9
    Timestamps:
    0:00 - Introduction
    0:45 - Imports
    1:00 - Architecture config
    6:10 - Implementation Structure
    7:10 - CNNBlock
    10:10 - SqueezeExcitation
    13:05 - InvertedResidualBlock (w. Stocasthic depth)
    23:44 - EfficientNet
    36:22 - Running a small test case
    37:55 - Ending

    • @nikaize
      @nikaize 6 месяцев назад

      Masterpiece

  • @connor-shorten
    @connor-shorten 3 года назад +23

    Awesome channel, wish I found this sooner!

    • @AladdinPersson
      @AladdinPersson  3 года назад +3

      I've watched your videos for a while! I think they're super chill & a really nice way to get an overview of a paper

    • @AladdinPersson
      @AladdinPersson  3 года назад +4

      The kind words means a lot coming from you :)

  • @kirillkharitonov8506
    @kirillkharitonov8506 2 года назад

    Great! Thanks a lot!
    I was trying to implemet EfficientNet myself, but three days in a row stacked with different problems.
    Then had a look at your video and took some tips and trick. Now it's working! Awesome!

  • @jeroenritmeester73
    @jeroenritmeester73 3 года назад +5

    Good video! I guess this video didn't include dataloading, but it would be great to see how that's done, as well as saving the model after training.

  • @willy8898
    @willy8898 3 года назад +2

    It is a really really great video for the deep learning beginner like me! Thank's for the detailed implementation in this video!

  • @Carbon-XII
    @Carbon-XII 3 года назад +3

    That was hard, but I've understood most of it.
    Thank you!

  • @edelweiss7680
    @edelweiss7680 Год назад +1

    Thanks for your amazing work really ! It helps me a lot !

  • @marcinelantkowski662
    @marcinelantkowski662 3 года назад +4

    I'm super impressed with the pace at which you produce these tutorials... How much time goes into creating a video like this? Do you get it right with the first try? Amazing content!

    • @AladdinPersson
      @AladdinPersson  3 года назад +14

      It's quite varied, this one in particular was quite smooth and took me less than a day to go through the paper and implement it. Other implementations I've done, like the Yolo from scratch tutorial took me over a week

  • @linglongxu4196
    @linglongxu4196 3 года назад

    This is the best Pytorch Tutorial I've ever learned

  • @tonystark9497
    @tonystark9497 3 года назад +1

    Great implementation, please try student-teacher architecture (training method ) basically it's knowledge distillation

  • @mrigankanath7337
    @mrigankanath7337 3 года назад +2

    I was waiting for this implementation!! thanks, I would really like a video where you try to make a very good model for a computer vision Kaggle competitions.

    • @AladdinPersson
      @AladdinPersson  3 года назад +2

      Any competitions in particular?

    • @mrigankanath7337
      @mrigankanath7337 3 года назад +1

      @@AladdinPersson to be honest there are object detection github models and we can just clone it and apply to the data; but as in kaggle we have to improve it.
      So i was thinking how would you approach an object detection competition and use different methods to get a higher score.

    • @SK-zs6en
      @SK-zs6en 3 года назад

      @@AladdinPerssondon't have any names in particular but the ones which allows you to showcase good amount of feature extraction and tricks in training. Also, a monthly one competition video or whatever that suits your routine on a long run would be a really informative playlist resource. Cheers.

    • @seanbenhur
      @seanbenhur 3 года назад

      @@AladdinPersson how about hubmap!.

  • @DanielGomez-ws7jj
    @DanielGomez-ws7jj 2 года назад

    Aladdin!! Awesome video! Very well explained, clear. Helped me understand network details that could not get from the paper video. BTW the paper video is also very helpful. :) Thank you! It would be amazing to have similar content on DenseNet

  • @notimportant9018
    @notimportant9018 3 года назад

    The absolute best channel. Thanks so much!

  • @williambittner8828
    @williambittner8828 Год назад

    Amazing video! THanks :)
    I would actually love to see an implementation video of the recent Nerf Paper: HyperReel: High-Fidelity 6-DoF Video with Ray-Conditioned Sampling
    Cheers and keep the good videos coming! :)👏

  • @Martin-lv1xw
    @Martin-lv1xw 3 года назад

    Great content br...so brief and clear explanations

  • @kamikon755
    @kamikon755 3 года назад +1

    In other implementation, squeeze excitation is implemented with fully connected layers. Why are you using conv layers in your implementation?

  • @anoubhav
    @anoubhav 3 года назад +2

    At 16:43, shouldn't the kernel size of the expansion layer by 1x1 and not 3x3? Thanks for the video!

    • @AladdinPersson
      @AladdinPersson  3 года назад

      I think you're right on this part, could you refer where you found this info?

    • @willy8898
      @willy8898 3 года назад

      @@AladdinPersson Hi, I think it is mentioned in the Table.1 of the original MobileNetv2 paper.

    • @lazythor1716
      @lazythor1716 3 года назад

      @@AladdinPersson ​at line 62, the kernel size of the expand_conv should be 1 instead of 3 because we're trying to increase the #channels using 1x1 Conv
      github.com/lukemelas/EfficientNet-PyTorch/blob/7e8b0d312162f335785fb5dcfa1df29a75a1783a/efficientnet_pytorch/model.py

  • @LAKXx
    @LAKXx 2 года назад

    Thank you good sir, this was immensely helpful

  • @SK-zs6en
    @SK-zs6en 3 года назад

    Can you make a walk through+ model building on styleGan family as well. Good work again!

  • @pallavidubey5482
    @pallavidubey5482 3 года назад

    Hi Aladdin,
    Thank you! It is very helpful. I wanted to request if you could please do a similar video on Retina Net Algorithm? It does perform pretty well when compared to YOLO for vision systems, but there is not much out there on it. For a beginner, it will be very helpful! I appreciate the time and effort you put into these videos.

  • @laimeilin6708
    @laimeilin6708 3 года назад +2

    Been watching videos from your channel for a while now, the concepts and implementations are very well explained!! Thanks for the amazing content! Is it possible to go through efficientdet as well (the efficientnet variant for object detection task) or DETR?

    • @AladdinPersson
      @AladdinPersson  3 года назад

      I think I want to do some more Kaggle a bit but will get back to those, which of those two do you think would be most interesting, EfficientDet or DETR? I think the idea of DETR is cool but the performance is not great

    • @laimeilin6708
      @laimeilin6708 3 года назад

      @@AladdinPersson yeah I agree maybe DETR would be more interesting I think integrating transformers into computer vision has become quite popular recently

  • @datnguyentan4093
    @datnguyentan4093 3 года назад +2

    16:20 I wonder whether you made a mistake when using reduced_dim = int(in_channels/reduction) instead of int(hidden_dim/reduction).

    • @lazythor1716
      @lazythor1716 3 года назад

      I think it's a mistake as well

  • @skylarwhite5044
    @skylarwhite5044 Год назад

    thanks for the good video. can i ask something, in list of base_model, how you know the stride, for it was confusing since never explained in paper?. or this has calculation to determine the stride or other. thanks

  • @maciejbalawejder
    @maciejbalawejder 2 года назад

    Good video! But why do you use conv in Squeeze and Excitation? As far as I'm concerned they only use convolutions instead of fully-connected as a NoSqueeze block, which performs worse than the SeBlock.

  • @amineleking9898
    @amineleking9898 3 года назад

    Man your videos are amazing

  • @UnpluggedPerformance
    @UnpluggedPerformance 3 года назад

    Bro when I was watching your awesome videos about Machine Learning i thought you were a invisible machine learning God, but now I finally see you have a face and are human :-D

  • @hamzaarslan6490
    @hamzaarslan6490 3 года назад +3

    Hey Aladdin great video, I just want to ask that I wrote your code and check the summary of total param size and I found that (around)14 million for b0. The paper is showing 5 million, do I miss something? Thank you great work 👍

    • @dickymr1878
      @dickymr1878 2 года назад

      i also noticed it, it's a problem or what?

  • @prod.kashkari3075
    @prod.kashkari3075 3 года назад +2

    I wonder if I’ll ever get to this level of understanding in deep learning.

    • @AladdinPersson
      @AladdinPersson  3 года назад +23

      You just see the refined version when you're watching the video. There's a lot of dumb mistakes, thing not working, me feeling like I'm never going to understand it behind every video. Stick with it whatever it is you're working on and you will improve 👊

  • @JorGe-eu3wi
    @JorGe-eu3wi 3 года назад +1

    awesome! can you do efficientdet from scratch next?

    • @AladdinPersson
      @AladdinPersson  3 года назад +3

      It's a good suggestion, I added it to my list. For now I want to do some Kaggles but I will revisit this idea

  • @adityakane5669
    @adityakane5669 3 года назад

    @Aladdin Persson
    Great video! I just have a small question. Can you please demonstrate how to calculate the actual model architecture for bigger models (B1,B2,etc.)? This bit is not clear (atleast not to me) and the newer paper also uses similar techniques, so it would be great to know.
    Other than that, awesome video! I always learn so much watching these videos.

  • @asiskumarroy4470
    @asiskumarroy4470 3 года назад

    Hello,,your videos have been really helpful for me. As per my request,you made the object detection playlist and bangggg!!!!!,,,it was of great use to me.
    Now here i am stuck in another problem.I am learning tensorflow and ofcourse following your tutorials,but I am stuck in something.Can you please put up a video tutorial on how to do data augmentation on a tf.data dataset consisting of images and its respective masks?

  • @moarshy
    @moarshy 3 года назад

    Thank you so much for all ur videos!

    • @moarshy
      @moarshy 3 года назад

      how about EfficientDet next?

    • @AladdinPersson
      @AladdinPersson  3 года назад

      I'll look into it ^^

  • @maximiliandippel3414
    @maximiliandippel3414 3 года назад

    Great video!
    One question though: you said that a default 3x3 convolution is in fact a cube and that it takes 3 channels into account. But isn't it actually 3x3x(number of channels)? That's why the default value for groups is 1, which means that all channels are in that one group and are being taken into account.

    • @AladdinPersson
      @AladdinPersson  3 года назад

      You're correct, yeah my bad. Only the first convolution will be a cube (assuming RGB input)

    • @maximiliandippel3414
      @maximiliandippel3414 3 года назад

      @@AladdinPersson thanks for clarifying :)

  • @buh357
    @buh357 11 месяцев назад

    thank you for creating such a great content,
    I am working on a 3D medical image classification,
    how do i change 2D efficientnet to 3D efficientnet?
    which parameters should i change?
    thank you.

    • @muhammedjaabir2609
      @muhammedjaabir2609 9 месяцев назад

      instead of using conv2d change it to conv3d , from my knowledge this is the easiest way to implement one

  • @dimuthuanuraj4507
    @dimuthuanuraj4507 3 года назад

    @Aladdin Persson
    Could you please do a video about implementing EfficientNetV2 from scratch in pytorch?

  • @abdelrahmankhaled3595
    @abdelrahmankhaled3595 2 года назад

    hello, cool video.
    I have a question, how do I implement a model in EfficientNET for depth estimation.
    I already have my dataset. I just need to train the model. How do I do it using this?
    Thank You

  • @radhikapatil8003
    @radhikapatil8003 3 года назад

    can you please make a video on custom image classification using FixEfficientNet ,it would be a great help
    thanks in advance

  • @mariomedhat792
    @mariomedhat792 3 года назад

    I have a question
    Why are you implementing papers using pytorch not tensorflow ?
    Can you tell us the differences between both of them ?
    Another thing, there is a lite version of pytorch like the tensorflow one ?
    Thank you

    • @AladdinPersson
      @AladdinPersson  3 года назад +4

      I am more productive in Pytorch and things seem to make more sense. Personally I don't see a benefit to me using Tensorflow for now. I feel that we're seeing a trend of people moving away from Tensorflow, internally Google has started the JAX project which seems to diverge from Tensorflow. OpenAI recently said that they are going to only use Pytorch moving forward. There are things lacking with regards to deployment with Pytorch but I think they are working on it with torchserve etc, with regards to TensorFlow lite I don't think there's an equivalent in Pytorch

  • @jitmanewtyagi565
    @jitmanewtyagi565 3 года назад

    Awesome 💫

  • @bennisyoutube
    @bennisyoutube 3 года назад

    Love the Video! Thank you so much for your content

    • @박민영-k6r
      @박민영-k6r 3 года назад +1

      It is assigned in its parent class , nn.Module.

  • @kamikon755
    @kamikon755 3 года назад

    when I print out the parameters count it says 40 million parameters instead of 12 million like in the paper(b3 , 20 mill vs 7.8 mil for b0)

  • @jijie133
    @jijie133 3 года назад

    Great video!

  • @xiangsong8942
    @xiangsong8942 3 года назад

    great work! like crushed and suscribed! can you also make a video for Bottleneck Transformers for Visual Recognition from google?

  • @harinkumar1073
    @harinkumar1073 3 года назад

    Hey man great work but i found one minor bug torch.randn() in stochastic_depth() sometimes returns numbers less than 0 or more than 1, this might be a problem so try using torch.FloatTensor(x.shape[0], 1, 1, 1).uniform_(0, 1) instead, as it stays in [0, 1] range hope this helps

    • @AladdinPersson
      @AladdinPersson  3 года назад

      Are you sure I wrote torch.randn and not torch.rand? Could you give time stamp?

    • @harinkumar1073
      @harinkumar1073 3 года назад

      @@AladdinPersson sorry my bad😅😅, you wrote torch.rand, my dumbass thought it was randn

  • @НиколайНовичков-е1э

    Thank you :)

  • @shalini286r9
    @shalini286r9 3 года назад

    Great video.Can you implement code for efficient as a encoder and UNet as a Decode for the following paper "A robust framework for glaucoma detection using CLAHE
    and EfcientNet

  • @anaydongre1226
    @anaydongre1226 2 года назад

    Can you please mention the github link for this code.

  • @neilsbohr1s1
    @neilsbohr1s1 3 года назад

    Please make a video on how to train images from this scratch code

  • @omarabubakr6524
    @omarabubakr6524 2 года назад

    I hope you will see my comment. can you please implement EfficientDet model? I know maybe it's long but please try to implement it in a video because I want so much. And thanks for that great content.

  • @yimingqu2403
    @yimingqu2403 3 года назад

    Awesome!!!

  • @baoanhphamngoc635
    @baoanhphamngoc635 3 года назад +5

    alright alright alright

  • @goksuceylan8844
    @goksuceylan8844 3 года назад

    27:04 i thought i got rickrolled for a second 🤣

  • @siddhantshete1744
    @siddhantshete1744 3 года назад

    module 'torch.nn' has no attribute 'SiLU'
    I dont understand why I'm getting this error. can you please help me out

    • @AladdinPersson
      @AladdinPersson  3 года назад

      Update your torch version

    • @siddhantshete1744
      @siddhantshete1744 3 года назад

      @@AladdinPersson I updated to latest version but still it gives the same error but it worked for SELU. Can you suggest the version i should be using?

    • @AladdinPersson
      @AladdinPersson  3 года назад

      @@siddhantshete1744 I don't know what could be causing the error then.. The docs have it: pytorch.org/docs/stable/generated/torch.nn.SiLU.html

  • @igoragoli
    @igoragoli 3 года назад

    like button smashed

  • @neilsbohr1s1
    @neilsbohr1s1 3 года назад

    NotImplementedError: what should i do

  • @saurrav3801
    @saurrav3801 3 года назад

    Nice video

  • @ayushbaranwal1094
    @ayushbaranwal1094 2 дня назад

    Guess I am just dumb...

  • @seanbenhur
    @seanbenhur 3 года назад

    Awesome!