Implementing Lesson 8 Fast AI 2018 in 2020

Aakash Gupta
5 min readSep 12, 2020

--

Contents

  1. Introduction
  2. Problems faced and the Fast AI Forum
  3. Some comparisons in results
  4. Is it worth practicing 2018 Course in 2020?
  5. Credits and links

Introduction

The lesson 8 of the 2018 Fast AI Cutting Edge Deep Learning is a continuation to the part 1 of the course Practical Deep Learning.

Part 1 Practical Deep Learning

The course was released in 2018 and unlike the 2019 course(which i have attended as well), the 2018 version was more hands on versus the more theoretical 2019 version. Personally, after attending the 2019 course i felt that 2018 course is easier to understand and interesting but that is of course my personal view.

Lesson 8 was aimed at teaching single largest object detection in an image and it used the 2007 Pascal VOOC data set. Links to the data set and related JSON files are in the last section of the story.

As Fast AI receives constant updates and undergoes major changes each year, implementing the 2018 notebook in 2020 was a task but it was made easier by the notes made by Hiromi S and of course the video lecture of the course.

Problems Faced and the Fast AI Forum

As mentioned above, the Fast AI library is constantly updated to stay up to date with the current technologies and I have noticed that each update makes it more user friendly. But, due to the notebook being 2 years old, it was not compatible with the current version and it was clearly mentioned in the Fast AI repository.

There were many small issues like displaying images(show_img function) to some big issues like changed API calls.

Opening Image in Old version vs New version

And many other small issues like the learn.sched.plot has been replaced with learn.recorder.plot ,learn.fit has been replaced with learn.fit_one_cycle etc. But as mentioned before I had completed 2019 Part 1 and 2 before coming to this notebook thus I did not face much problem in this part of the implementation.

The 2 major issues were

  1. Applying TFMStype.COOD which would simply modify the coordinates of the bounding box according to the transformation applied to the image.
From the 2018 Notebook

2. Creating a learner for bounding box : In the 2018 Notebook, they simply put together a custom head with a Resnet34. But again due to my knowledge of Fast AI Part 1 2019 I knew it was a regression problem just like the one in which center of the nose had to be found in the head_pose notebook and it could be solved using PointsItemList.

From the 2020 Notebook

After dealing with this I came across some minor issues for which I turned to the forum and it was there that i found the solutions to some issues and also saved a ton of time to finally complete the notebook.

The Forum is a very nice place to be. We can ask any question and it would be answered by an alumni within hours. Also, there are several topics that are discussed over there, where we can answer someone’s queries or ask a question as to why someone used the particular code or even start a discussion on a new topic.

Some comparisons in results

As expected the image classification neural network did not have much difference due to the fact that same model is used but there is a very small difference which could be due to variety of reasons.

Here, are the results for the bounding box regression training

I should have used L1 loss.

Here, are some output images

First by the 2018 Notebook

Output of 2018 Notebook

Now, by the 2020 Notebook

Output of 2020 Notebook

The output seems decent to me and I shall update next month with Lesson 9 Notebook.

Is it worth practicing 2018 Course in 2020?

Well, this is a subjective question. Before attending the 2019 MOOC I would have definitely said NO but then after attending the 2019 Part 2 course I felt it was not as much hands on and top down as the 2018 one but as mentioned above, implementing the 2018 code today is a big task while implementing a recent notebook is easier. Also, newer courses definitely have more details than the old one’s but it is not like, the old one’s are not challenging , knowledgeable or are totally outdated. Part 1 of both years are more or less the same and equally fun. I would recommend Part 1 2019 over Part 1 2018 any day. Also before going to Part 2 2018, it is recommended to at least watch 2019’s course if not implement it.

--

--