12
$\begingroup$

Can anyone recommend a tool to quickly label several hundred images as an input for classification? I have ~500 microscopy images of cells. I want to assign categories such as 'healthy', 'dead', 'sick' manually for a training set and save those to a csv file.

basically the same as described in this question, except I don't have proprietary images, so maybe that opens up additional possibilities?

$\endgroup$
  • $\begingroup$ Is this something that you will have to do several times? If so, it might be worth building a tool. See this: datascience.stackexchange.com/questions/13335/… $\endgroup$ – Hobbes Sep 16 '16 at 14:10
  • $\begingroup$ Might go that route if necessary but it seemed like something many people might use and for which a solution already exists? $\endgroup$ – jlarsch Sep 16 '16 at 14:13
  • $\begingroup$ It sounds like pilab-annotator or pylabelme are usefull, they might be overkill though. stackoverflow.com/questions/10609455/… $\endgroup$ – Hobbes Sep 16 '16 at 14:18
  • $\begingroup$ those seem geared towards annotating features within images. Maybe I could use them in the most basic way to just assign one label to the entire image $\endgroup$ – jlarsch Sep 16 '16 at 14:24
  • 1
    $\begingroup$ There a few tools out there for image annotation, the most popular and easy to use one is: github.com/tzutalin/labelImg $\endgroup$ – olive_tree Aug 4 '17 at 17:31
5
$\begingroup$

I just hacked together a very basic helper in python it requires that all images are stored in a pyton list allImages.

import matplotlib.pyplot as plt
category=[]
plt.ion()

for i,image in enumerate(allImages):
    plt.imshow(image)
    plt.pause(0.05)
    category.append(raw_input('category: '))
| improve this answer | |
$\endgroup$
  • $\begingroup$ If this solved your issue, you should accept your own answer so it doesn't appear as an "unanswered question" on this website :) $\endgroup$ – Eskapp Dec 15 '16 at 20:37
2
$\begingroup$

pidgey - widget for jupyter notebook with active learning

I have just found this open-source tool, and it looks amazing: enter image description here

It's an interactive widget for Jupyter Notebook and the best thing about it - according to this commit you can add your own sklearn-like classifier and use it for predicting classes as you annotate! The classifier keeps learning as you proceed with labeling.


tkteach - Super Fast Image Categorization Python Tool

Also, there is a tool called tkteach and it's great because you can annotate images really fast using only your keyboard. I have improved the original version a little bit. The fork is here: https://github.com/Serhiy-Shekhovtsov/tkteach

enter image description here

| improve this answer | |
$\endgroup$
1
$\begingroup$

Try Supervisely.

For your task you could create classes: 'healthy', 'dead', 'sick' and associate them with Rectangle tool. Then you just put a box around each cell with corresponding class. Below is an example:

  1. Definitions of classes enter image description here
  2. Labeling enter image description here

If your categories are not mutually exclusive, you may create “cell” class (and associate it with rectangle) and then create several tags - one for each of your categories. Below is an example:

  1. Definitions of classes and tags enter image description here
  2. Labeling enter image description here
| improve this answer | |
$\endgroup$
1
$\begingroup$

I have created a code doing what you need, it is available on GitHub as image-sorter2. Instead of "labelling" images, it puts the images into a new folder, but creating the csv you are talking about is a straight forward extension. Compared to the other suggested scripts here image-sorter2 is 100% free of charges and you don't need to spend time on drawing bounding boxes - the script simply opens a GUI for you, you click on one of multiple buttons and correspondingly each image is sorted into the desired class-folder, e.g. "cats", "dogs", "trucks" a.s.o.

enter image description here

| improve this answer | |
$\endgroup$
1
$\begingroup$

Try this tool. It is very simple and does exactly what you want → assign label(s) to images in a given folder.

https://github.com/robertbrada/PyQt-image-annotation-tool

enter image description here

| improve this answer | |
$\endgroup$
  • $\begingroup$ You have built a great tool. Thank You. $\endgroup$ – Mark Mar 5 at 15:22
0
$\begingroup$

Try using EVA annotation tool. Ericsson/eva ,this has an excellent tracking function. you mark the object in only 1 frame and rest/many of the frames are automatically annotated. This also has lock unlock feature to help annotate faster and more number of objects in each frame. This supports video upload or image data sets.

Best thing, completely Free/open source ! enter image description here

| improve this answer | |
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.