Share your work here ✅

Great project! It’s good to finally get to see your work after you talked about the idea in our previous meetings.

Are you pointing to this study group run by Assoc. Prof Kan Min-Yen?

I am looking forward to your detailed blog post. Thanks.

1 Like

Hm, thank you for letting know! Not sure why but Medium shows it suspended :frowning:

@ttgm Would you mind sharing your notebook please?

@bholmer interesting work! How did you separate out and visualize the different areas of the painting that appear to belong to different artists?

Hi Jon. The latest update to the API is quite different from the code in my post :smile: so I’ll hopefully refactor it this weekend and link to the new notebook at the bottom.

I used facial keypoint detection dataset from kaggle. (CNN+regression)

It’s a challenging problem. Mainly for two reasons.

  1. Only 1/3 of the training images have data of all the 15 facial keypoints.
  2. And, most of them are erroneous (see below).

As you can see, the training data is not very accurate.
trainind_pics

Rmse Loss

tran_val_loss_facekey

Predictions

What I learnt…

  • The dataset was created using some software, or maybe a camera/device that gives out these key points. Whatever maybe, there must be a underlying mathematical model(fn) for that (camera/device/software). So, that’s what the neural network is trying to approximate, instead of the finding the actual key points. What I mean to say is, here the neural network is not trying to find exactly where is the mouth, eyes or nose; because we haven’t explicitly mentioned it in our dataset. Yoshua Bengio and team created this dataset, I would like to know if there was any intention of such sorts.
  • if that’s the case, even if we predict the actual facial keypoints for the test set, we can expect a higher error.

Also, I have re-structured the original dataset into jpeg images. https://www.kaggle.com/sharwon/facialkeypointsdetectionimg. I think this will be helpful for beginners.

Notebook is still a work in progress. I’ll share a clean version soon.
Also, The submission file is a bit weird. I’m not sure why they are not evaluating on the basis of all the points.

To do:

  • Clean the notebook.
  • Submit to the competition.
  • Use the whole data for training.
10 Likes

Where are you guys hosting your starlette API?

I’ve been using ZEIT but it’s slow as heck when waking up the app from a frozen state. Impressed by how responsive your emoji app is and so interested on what you all are doing.

1 Like

I’ve made lynx classifier (it classifies which lynx species is given lynx).
https://which-lynx-is-it.now.sh/
Error is something 20%ish (lost the notebook, because of issue with gcp). Considering the fact that the dataset was noisy it think it’s good. Interesting thing is it really has problem classifying baby lynxes for some reason.

Hopefully I will have time this week to write a blog post about it.

It’s just a small ec2 instance (behind an ELB to terminate the SSL which is required for WebRTC to work).

I was really surprised at how much throughput we could get during fastai inference. The fact that we were sending smaller cropped images from the client really helped.

1 Like

As in “Elastic Load Balancer”?

I’ve written the following short Medium post doing some theory review of the concepts we deepened into during Lesson 3, like the learning rate and activation functions.

2 Likes

Yes. Another group used fastai for sentiment analysis on market news to perform Forex market prediction.

If you use the production guide we provided then it won’t go to sleep, so you won’t have that problem :slight_smile:

2 Likes

Thanks for the 411!

I’m doing a multi-label prediction project with Pizza Slices. My ultimate goal is to make a GAN-powered app that lets you design the “perfect pizza” slice by clicking buttons to add toppings. This is a first go with using the multi-label classification task like the planet notebook.

My dataset is pretty tiny (only 167 images total).

The potential labels are:

  • mozzarella_cheese
  • tomato_sauce
  • pepperoni
  • peppers
  • sausage

82% accuracy after some initial fine-tuning.

I’m not sure how to do the most_confused or confusion_matrix with this task. I would love some advice!! Thank you.

3 Likes

I tried to classify programming languages based on the text. I want to test out a theory that you don’t need to read through specific text in a document to be able to classify what kind of a document it is.
My dataset was not very large. My error rate was pretty high (30% for 3 classes)
My next course of action will be to increase the size of the dataset and try again. However, please give me suggestions on how you would approach the issue differently (still without using OCR or NLP).

3 Likes

I’m still experimenting on image recognition and did some fun experiment to recognise the dosing numbers (‘500’, ‘250’ etc) on medical packages info like these:
46

Instead of using a lot of package images, I tried to build a word generator. Inspired by the paper ‘Reading Text in the Wild with Convolutional Neural Networks’ (https://arxiv.org/pdf/1412.1842.pdf?))

Using 3000 free fonts of google it generates 1000 images per class like these:
42

Next to that I generated background/other images by cropping small parts from other package images:
background_0_1479726 background_0_1270260

Resulting in a accurate enough classifier with a resnet34 and fit_one_cycle(2):
30

Finally I assess a test image by taking crops and checking each crop.

For the first image resulting in:
[(‘background’, tensor(0.9994)),
(‘background’, tensor(0.9972)),
(‘background’, tensor(0.9956)),
(‘background’, tensor(0.9983)),
(‘background’, tensor(0.9903)),
(‘background’, tensor(0.9669)),
(‘background’, tensor(0.9911)),
(‘background’, tensor(0.9783)),
(‘background’, tensor(0.9533)),
(‘background’, tensor(0.9616)),
(‘background’, tensor(0.9490)),
(‘background’, tensor(0.9971)),
(‘background’, tensor(0.9605)),
(‘background’, tensor(0.9728)),
(‘background’, tensor(0.9144)),

(‘background’, tensor(0.5990)),
(‘background’, tensor(0.8826)),
(‘500’, tensor(0.8235)),
(‘background’, tensor(0.8679)),
(‘background’, tensor(0.9674)),

(‘background’, tensor(0.9831)),
(‘background’, tensor(0.9468)),
(‘background’, tensor(0.9875)),
(‘background’, tensor(0.9906)),
(‘background’, tensor(0.9839)),
(‘background’, tensor(0.9891))]

Obviously this can be improved a lot by integrating a bounding box classifier instead, but it was quite fun to quickly test an idea. Thanks Jeremy and team!

And I would love to get input (like other papers, methods, experiments etc) !

9 Likes

I enjoy learning through open competition. This way someone else has done the very hard work of data collection, and SOTA results are public and detailed. Using fastai v1, and learning it along the way, I teamed up with @kcturgutlu and @radek to achieve 14th out of 894 teams in Kaggle’s Airbus Ship Detection Challenge, narrowly missing a gold medal.

This was basically fastai v1 ‘out of the box’. A world class model was trained in half a dozen lines of code. You can read our solution here https://www.kaggle.com/c/airbus-ship-detection/discussion/71664

Thank you to fastai and jeremy and the community. I only came to pytorch/python early this year through fastai. My mission is to exploit the ‘practical’ side of fastai as a way to experiment and achieve great results quickly and easily.

22 Likes

Have you considered the SVHN dataset? http://ufldl.stanford.edu/housenumbers/

Would love to see how these to datasets interact. How did you get all these fonts? Could you share your code? Then I would not need to recreate the thing from scratch.

1 Like

Thanks for thinking along. Yes I had a look at the house numbers dataset but my end-goal is to spot text, not only numbers.

See https://github.com/ramonhollands/spotting-text for the source-code (including download of fonts, ! wget -c https://github.com/google/fonts/archive/master.zip)

4 Likes