This repo will contain all useful links for caltech-256 image classification competition.
To have same conditions, we split dataset on train and test chunks. It's up to you get validation set from train one. We set up kaggle in class competition, but unfortunately it's under review yet. So splited datasets are available by direct links to S3:
In case kaggle in place will not be available, we will create simple HTTP server for validation.
Unfortunately this competition is not intended to cover machine learning from the beginning. In case you still want to participate try to cover required topics from this blog post as fast as possible and find some sub mentor from participants.
If you don't know how images are represented in python briefly cover one of such tutorials:
- pillow tutorial - one of the default python library for image processing, but nowadays used not very often. Posted here only for reference.
- numpy and scipy images processing - as per my opinion preferred one. Will explain you how to handle images as numpy array and basic manipulation. If you don't know hot to use numpy - take this numpy tutorial. Numpy is de facto standart python library for handling matrices.
- Scikit-image: image processing - advanced tutorial, that will show how you may manually process your images.
After you know how to handle images it'a time to prepare dataset. Of course you may use framework based decisions(later about them) but I highly advice to create your own preprocessor. It should generate images with same size. It's up to you how it should be done - they can be resized, cropped or filled with some noise. After resize it's better to store them separately - this will reduce computation time during training. Here is quite good discussion what images preprocessing can be done(check first answer).
Here is the brief list of neural networks(NN) frameworks. You can use not NN algorithms also, but I out of this, so I will describe them. Also, this is personal opinion, don't rise holywars here. If there are will be a lot of complains, we may change this part.
- mxnet - as per me quite strange library with hard to explain tracebacks. Don't have a lot of experience with it, but already don't like it.
- caffe - quite popular framework for images processing. Have some pretrained models. I have no any expertise in it, but it should be covered by a lot of tutorials, because it quite old.
- theano - one more framework. I can only say that I've rewrite a lot of code from it to tensorlfow :)
- tensorlow - google framework for ML. Have a lot of stuff out of the box. But also can be quite mess because of a lot of available features. Have a lot of tutorials. I've code with it about a year, so I can help with it.
- keras - syntactic sugar above theano or tensorflow. With it you can write your own model quite fast. Out of the box have all stuff that exist in theano and tensorflow, and a lot of self provided additional features, as data loader for example. Easy to understand. I highly advice to use keras with tensorflow backend is you want to train the NN, and not spend about a 2 weeks reading tons of manuals.
- pytorch - new ML framework, inherited from torch. It's very young, so I cannot say anything. As first opinion it's have clear structure, a little bit strange approach to the optimization and some bugs.
TODO
TODO
TODO