EfficientNet Architecture

Since my last post on EfficientNet on LinkedIn I started further reading on building blocks of the EfficientNet architecture, it can be divided into Architecture (Mobile Inverted Residual Block, Squeeze and Excitation optimization) and Training (Swish activation / Quantization friendly hard Swish activation, Stochastic Depth with Survival probability etc).

EfficientNet architecture is very well explained recently by Aman Arora so if you dont want to go over the paper yourself you should at least read this and off course last year my friend Connor Shorten published a video explaining this paper.

The best explanations of Squeeze and Excitation network are given here and here and Inverted Residual Bottlenecks which were introduced in MobileNetV2 are explained here.

The Fused Convolution, Superpixels and Conditional Conv (Cond conv) are not mentioned in their paper but they are only found in the code implementation.

An implementation of CondConv is also available in Tensorflow Github repository.

There is also a mobile-friendly EfficientNet architecture – EfficientNet-Lite, which removes Squeeze and Excitation network, replaces Swish activation with Relu6 for supporting post-training quantization and heterogeneous hardware.

Criticism and improvements of EfficientNet Architecture:

Here’s an article How Efficient is EfficientNet? that says EfficientNet’s performance on small dataset leaves much to be desired and ML community on Reddit and Twitter seems to agree.

Also there is an article from late July A more parameter-efficient bottleneck for EfficientNet! that introduces Efficient Channel Attention ‘ECA’, it shows that if you replace EfficientNet Linear bottleneck Squeeze-Excitation ‘SE’ layer with Linear Bottleneck ECA it is slightly better in terms of accuracy and also reduces the number of parameters by 12%

Book Review – Raspberry Pi for Computer Vision

Adrian Rosebrock of PyImageSearch.com recently released this new book so in this post, I decided to review it. The book starts with an introduction to Raspberry Pi (RPi), Computer Vision and Deep Learning, with clear explanation of what’s changed from few years ago and why its now suitable to run Computer vision and Deep learning algorithms on RPi, what are co-processor devices Intel Movidius NCS 2, Coral USB Accelerator and how image processing, Computer vision and Deep learning overlap.

Each chapter starts with chapter Learning Objectives which you can read to understand the key takeaways from a chapter before going in the details. After the first few introductory chapters rest of the book is written in a way that you can pick a chapter which is close to the problem that you’re trying to solve and go from there such as if you’re looking to change USB camera parameter or work with multiple cameras with the RPi, this book has chapters on each of these topics and other such projects, full list of topics in this Hobbyist as well as upcoming Hacker and Complete bundles can be found on PyImageSearch.com so I’m not going to repeat them in this post.

Though this book is targeted to those who are new to Computer vision or Raspberry Pi but it is filled with information that is useful for even those with some experience in OpenCV and Computer Vision. Arguably some of the material in the book has been covered previously on PyImageSearch.com blog but Adrian expands on most of these in this book which allows much more room to include all the details unlike a blog post, so if you love his blog posts wait till you read his book.

The book has also helped me come up with a few tricks of my own when I was stuck at the same problem for a while but then I had an Ahaa Moment after I read Adrian’s book and it was interesting to get an insight into how Adrian and his team did a few revisions to arrive at the right solution given the limitations that exist on an RPi computer due to CPU resource and how to work around them. If you are starting out with OpenCV and Computer Vision for edge computing then you should definitely check out this book.

Meanwhile, I’m looking forward to getting Hacker and Complete Bundle when things get much more serious with the introduction of Deep Learning models, many more practical use cases and use of edge computing hardware like Intel Movidius NCS 2, Coral USB Accelerator and Nvidia Jetson Nano.

LearnOpenCV.com – Applications of Foreground-Background separation with Semantic Segmentation

Recently Satya Mallick from LearnOpenCV.com gave me a chance to write for his blog (thank you Satya!)

We decided to write about the application of semantic segmentation using PyTorch, torchvision and DeepLab V3 for foreground and background separation in images

In this post on LearnOpenCV.com I show 4 such applications namely:

  1. Remove the background
  2. Change the background
  3. Blur the background
  4. Create an image filter by desaturating the background.

Click to read the blog post