Image recognition, neural nets, machine learning, deep learning, convolutional networks, ... The field is so new and the research so fresh, that it can be hard to find good tutorials and good tools. For this reason, I decided to write a series of related posts about how to build a neural network with Darknet.

For the purpose of these posts, let's assume you need to recognize barcodes. To complicate things somewhat, not just plain barcodes, but say that the fictional barcodes are printed on stones, rocks, and pebbles. I chose stones in this tutorial for several reasons:

  1. Images of stones are extremely easy to find on Google Images.
  2. Images of stones have many different colours in them which gives busy backgrounds.
  3. I needed something that wasn't directly related to the work I've been doing.

What would these fictional barcodes-on-stones look like?

barcode printed on a rock

But that's almost too easy with the white background. So in addition, we also want to train the neural network to recognize barcodes printed without a white background:

more complex barcode on a rock

And by the time we finish, our neural net will recognize those barcodes, and tell us where in the image the barcodes are located:

barcode location

So to get started, see the following posts:

  1. Creating the training images. <-- START HERE!
  2. Installing and building Darknet.
  3. Using Darknet to train a new neural network.
  4. Using C and C++ with Darknet.
2020-03 update: I have since written a different tutorial on how to get started with Darknet, DarkHelp, and DarkMark. It goes into different details than the 4 posts linked above.
Last modified: 2020-03-23
Stéphane Charette, stephanecharette@gmail.com