Imglab - minor (and some major) improvement suggestions
Thanks for all the work put into dlib, Davis!
Introduction I know there are a lot of fancy image annotation tools out there, and workarounds to get these files into Dlib.
However, Imglab creates ready to use xml files out of the box, with the option to add parts and also split your set into a traning and testing version.
The output from Imglab have the same format as the example files, which again makes it easy to get your own dataset up and running with dlib.
I think having a good and fast annotation tool is crucial to create/test new datasets, and to get the best out of dlib. Since Imglab is fairly minimalistic and have limited functionality, I pitch some random ideas for improvement:
BOX CREATION AND EDITING
- [ ] Add functionality to create predefined boxsizes and aspect ratios
- [ ] «Hover over» to set the current box ready for editing, instead of picking each box with a click. Especially since you need to pick on the borders, and not anywhere inside the box area.
- [ ] Add functionality to set boxes inactive (Not to be confused with runtime ignore), to avoid conflicts when editing and adding parts to overlapping boxes.
- [ ] Add larger «handles» on the corners, and let boxes be moved and edited in more default fashion( Example grab and drag to move boxes around.)
- [ ] Display the size and/or aspect ratio for each box.
- [ ] Add som sort of aspect ratio control inside imglab, so you know its all good.
ADDING PARTS
- [ ] «Hover over» a box to make it active so parts can added, instead of manually setting each box active with a click.
- [ ] Add functionality to use a key+scroll wheel to cycle trough the available part numbers, and display the chosen part number near the cursor. (Sometimes you need to skip part numbers that are not visible in the image, and this will allow you to do so quickly)
- [ ] Add an option to define a preselected part number (Sometimes it is better to place a particular part on all images in the set, before you go back and complete the remaining parts. )
- [ ] Option to set a custom part order (Sometimes it could be faster to add parts in a different order than 1-2-3-4-5. With a custom sort order, you can start with point 8, then 2, 27 and so on)
- [ ] Add option to create and store a list of predefined vector parts: Lets say you are annotating and creating landmarks just for the right eye, and would like to use 25 points for this purpose. Place these 25 points on the first image, and save this as a predefined "eye" shape. For the the remaining images, drag and adjust the shape to fit the new angles. Now, if you later would like to test out more or less points, adjust the number of points in the shape definition and recalculate it for the entire set. This feature could also be used to get some automated help, especially on objects scaling in a linear way. Manually add point 1 and 3, and calculate point 2 in relation to these.
SEMI AUTOMATED ANNOTATION AND SHARING Some more complicated stuff, but obviously it would be great to load a pretrained model from Dlib and use it to get help when annotating new or expanding existing sets. This would also open up the possibility to share models, so we can build stronger models together.
Does these suggestions make sense? Anyone with time and skills? I know Davis can code this drunk and blindfolded, but time is an obvious issue. I would be more than happy to contribute with more details, if someone would like to assist in improving this tool.
Thanks again for all work put into Dlib and for making it available!
Thanks for posting this, these are all good ideas. I'm not going to have time to do them any time soon though, so anyone who wants to submit a PR is very welcome to do so :)