For a long time, I wanted to try my hand at machine learning, more specifically deep learning using convolutional neural networks. One of the projects I wanted to do do was fish species identification. Finally spent some time and created a simple image recognition classifier based on TensorFlow – a library, which among other things, is used for machine learning applications, and Keras – a neural-network library. Here it is in action. In the right panel, I’m running the data processing code written in Python – one of the most popular languages for machine learning. And the left panel is a simple interface that displays the processed data in a nicer format. I can upload an image or just use the image address if it is published online and the classifier will guess what species it is and display the results. In this example, the neural network classifier is 90% sure that it is a Nothern pike and it looks like the case. Neural networks are sets of algorithms modeled to imitate the human brain and designed to recognize patterns. Let’s try to identify another one. This time the classifier is only 34% confident in its top answer. Which is still amazing because it is the correct guess. Yes, it is definitely a Bluegill. At this stage, the classifier can recognize 50 different fish species. I’ve used around 7000 images to train the network, which is barely enough even for 50 species. In the next example, the classifier is only 24% certain that this is Black crappie, but it is still the right prediction. If you are interested in creating your own classifier the instructions on how to install Python, TensorFlow, Keras, and other libraries for machine learning, as well as step-by-step tutorials on how to train your models, can be found on tensorflow.org Naturally, if the network wasn’t taught to recognize the features of a specific species, it wouldn’t identify it correctly. But sometimes even if it was taught to recognize the species, it can fell miserably like in this example. The classifier thinks that this Smallmouth bass is a Pumpkinseed. Very funny. But it is not the fault of the technology. The accuracy of a neural network is only as good as the data-set used for its training. In this case, the data-set is a set of labeled images. And the data-set needs to be massive. Each species requires hundreds or better thousands of photos for accurate identification. For this project, I’ve used on average a bit less than two hundred images per species and the accuracy is still impressive. The accuracy varies from species to species, for example, it is very good in identifying common carp but has difficulties with recognizing smallmouth and largemouth basses. This is probably due to some species have more distinguishing features than other species. The next phase for this project is to make the classifier available online as well as increase its accuracy and teach it to recognize more species. And I need lots of photos for that. Although I’d love to fish full time and take photos of the catches – I can’t. Besides, it would be difficult for one person to catch all the species. That’s why I need your help. If you’d like to help me with this project, please upload the photos of the fish you caught using the link in the description. Your photos will be used to make this fish species classifier much smarter. Leave your comments with any questions and suggestions and subscribe for the further updates.