# Are there any easy ways to create annotated training images for object detection?

For the purposes of object detection, are there any easy ways to create annotated training images? For example, if we have $$10,000$$ images and want to draw bounding boxes on 2 objects for each image, do we have to physically draw those boxes? Is that what most people do these days to create training data?

• I would suggest you to get a look at what openCV can do. I don't think you'll need to draw boxes but you may have to answer manually for each picture if it's object A or B. – Jeanba Nov 23 '19 at 21:00
• Possible duplicate of Are there tools to help labelling images?, but maybe this is not an exact duplicate. – nbro Nov 24 '19 at 0:45
• None of these comments are in the direction of the question. James is asking whether there is a smarter way to automatically annotate large amount of training images. Here is my input. The short answer is: it depends. If objects are certain know objects that you may be able to use a trained model, you may have some decent annotations, but I am afraid that is likely. Google now does it with AutoML. Besides, you do not need more than 300-400 annotations per each object. Why you think you need to train 10,000 images in the first place? – TwinPenguins Nov 24 '19 at 13:53
• I once had a fresh dataset and needed to draw bboxes. I made my own little python+opencv program. I always assumed that people in similar circumstances would do the same...but perhaps a wee bit different depending on the needs of the problem. So, the answer is yes, the boxes need to be draw by somebody and if it's your task, then you're the best person to do it. When I did it, I learned a lot about my images as well. – user1269942 Nov 25 '19 at 21:55

very interesting question. From what I read on the papers and my experience, the trend lately is to generate synthetic data using a photorealistic 3D graphics engine for automating the image labelling. The process would be:

• Get a visually realistic 3D engine such as Unreal, Unity... any videogame engine would work
• Build 3D models of the objects you want to detect (or ask for help to a 3D artist)
• Build 3D environment for placing the objects 3D models
• Generate random instances of the objects in the environments with different environmental conditions: lighting, brightness, position, rotation...

Since you have the 3D model of the object and the whole control in the 3D engine you can anotate images, bounding boxes, pixels... or whatever stuff you want in an automated way.

This is an approach for automatic image labeling with synthetic data. Automating the labeling of real data is a challenge yet to be tackled. Cheers! :)

If you don't manually enter in the information, you expect a system to. Which becomes circular since you're trying to teach a system to detect images....