Coder Social home page Coder Social logo

bbox-label-tool's Introduction

BBox-Label-Tool

A simple tool for labeling object bounding boxes in images, implemented with Python Tkinter.

Updates:

  • 2017.5.21 Check out the multi-class branch for a multi-class version implemented by @jxgu1016

Screenshot: Label Tool

Data Organization

LabelTool
|
|--main.py # source code for the tool
|
|--Images/ # direcotry containing the images to be labeled
|
|--Labels/ # direcotry for the labeling results
|
|--Examples/ # direcotry for the example bboxes

Environment

  • python 2.7
  • python PIL (Pillow)

Run

$ python main.py

Usage

  1. The current tool requires that the images to be labeled reside in /Images/001, /Images/002, etc. You will need to modify the code if you want to label images elsewhere.
  2. Input a folder number (e.g, 1, 2, 5...), and click Load. The images in the folder, along with a few example results will be loaded.
  3. To create a new bounding box, left-click to select the first vertex. Moving the mouse to draw a rectangle, and left-click again to select the second vertex.
  • To cancel the bounding box while drawing, just press <Esc>.
  • To delete a existing bounding box, select it from the listbox, and click Delete.
  • To delete all existing bounding boxes in the image, simply click ClearAll.
  1. After finishing one image, click Next to advance. Likewise, click Prev to reverse. Or, input an image id and click Go to navigate to the speficied image.
  • Be sure to click Next after finishing a image, or the result won't be saved.

bbox-label-tool's People

Contributors

euler16 avatar puzzledqs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bbox-label-tool's Issues

How to label images without interesting objects ?

Is it possible to let some images unlabeled ? For example, if you have certain images where there is no object to label, is it possible to have the format :
1
0 0 0 0
I am not sure about how to write that being not familiar with "event". I'd like to have a default "(0 0) -> (0 0)" meaning in the text file (line 1 : 1 ; line 2 : 0 0 0 0), so that I can just click on "Next" and save the picture labeled like that because I have a lot of images without interesting objects. However, when there are objects, I'd like to cancel this "default" box, by just clicking somewhere in the picture and save the coordinates of the boxes in the text file.

Any leads on how to do that ?

Fail multi labeling

Hello,

Why I can't annotate more than 2 objects in one image?
The third box doesn't want to show herself and aren't reported in .txt file.

Train YOLO with the jxgu1016 fork

Hello,

I just used jxgu1016/BBox-Label-Tool-Multi-Class to classify multiple different chickens in each of 200 images. The images have up to 6 different chickens each. I would like to now use format.py to prepare the labels for a YOLO model. The problem is that format.py does not expect the label format that jxgu1016/BBox-Label-Tool-Multi-Class creates. How can I use this new multi-line label format to train a new YOLO object detection model? Thank you.

This is the format of the jxgu1016/BBox-Label-Tool-Multi-Class labels for a single image:

4
66 201 236 452 Kielyr
421 235 578 369 Vespyr
653 217 885 376 Bo
918 159 1156 617 Zaja

format.py is here: https://github.com/chuanenlin/autoturk/blob/master/format.py

I got this error when i clicked the load button

Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1540, in call
return self.func(*args)
File "main.py", line 126, in loadDir
self.category = int(s)
ValueError: invalid literal for int() with base 10: ''

BBox won't open in Windows 7

I've only ever used BBox before on Linux, and, now that I've tried to install it on a Windows OS, I've been experience a lot of difficulties in just opening the GUI. As soon as I input
open(exec("main.py").read())
into the Python IDLE, nothing happens. No error messages or anything. Keep in mind that I have changed the current working directory at this point. Is it possible that I don't have necessary libraries installed? Can the software adequately run on Windows?
Thanks for any help; I really appreciate it.

Fail to load images from dir

I'm trying to load images from a directory into the LabelTool, but everytime I try I get "No .jpeg images found in the specified dir!". Even running with the test images provided in the download does not work. The script seems to be looking in the right location:

screen shot 2018-06-26 at 16 28 31

Code modified to show above screenshot is at https://pastebin.com/Y1BFWww2

My 001 folder is as follows:

screen shot 2018-06-26 at 16 32 52

I am using a fork to work with high res images from @toobaimt found at #25

Any help would be appreciated.

When images are loaded, they are extremely blown up and cut off

I'm trying to load some images, and any time they load, they are extremely blown up and cut off. The images I'm trying to load are all 256x256 pixels. Here's an example of what it looks like in the app:

screen shot 2018-11-14 at 6 19 03 pm

The image I'm trying to work with is a full shot of a pill/prescription bottle, and it only shows one corner of the image, blown up. Any idea on how to fix this?

import updates for python 3.6

I had to edit main.py lines 10-11 to:

from tkinter import *
import tkinter.messagebox

to work with newer versions of Python.

problem with the loadDir

i can't load my picture
s = r'D:\workspace\python\labelGUI' <= is that image's path??
coz I use in anaconda and i wander know how to set the image's path.

It doesn't work on windows

When I run the code on windows, I encounter the following error
////////////////////////////////////////////////////////
runfile('E:/Projects/Tensorflow/BBox-Label-Tool/main.py', wdir='E:/Projects/Tensorflow/BBox-Label-Tool')
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\envs\tensorflow\lib\tkinter_init_.py", line 1559, in call
return self.func(*args)
File "E:/Projects/Tensorflow/BBox-Label-Tool/main.py", line 142, in loadDir
self.category = int(s)
ValueError: invalid literal for int() with base 10: ''
////////////////////////////////////////////////////
Doesn't it work on windows?
@puzzledqs ,Could you help me solve this?

Problem in LoadDir

when i try to press the load button, in command line shows error like this

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1541, in __call__
    return self.func(*args)
  File "main.py", line 126, in loadDir
    self.category = int(s)
ValueError: invalid literal for int() with base 10: ''

anyone can help me solve this problem ?

Failed to load images

As you can see below, I succeeded to label in imdir:001
1

But, when I loaded imdir:002, I couldn't bring jpg files into GUI program('main.py')
2

Also, I uploaded main.txt file. (I think that this file is same as main.py except "path"
main.txt

How to label skewed images?

I have an application of labeling number plates of bikes in which the images are skewed, but we are able to make only rectangular bounding boxes as is allowed to be taken by YOLO . So the area of interest also includes some unwanted regions. Any suggestions on handling such cases?
Examples of such cases are attached
morning_frames638
morning_frames911

Train YOLO with jxgu1016/BBox-Label-Tool-Multi-Class

Hello,

I just used jxgu1016/BBox-Label-Tool-Multi-Class to classify multiple different chickens in each of 200 images. The images have up to 6 different chickens each. I would like to now use format.py to prepare the labels for a YOLO model. The problem is that format.py does not expect the label format that jxgu1016/BBox-Label-Tool-Multi-Class creates. How can I use this new multi-line label format to train a new YOLO object detection model? Thank you.

This is the format of the jxgu1016/BBox-Label-Tool-Multi-Class labels for a single image:

4
66 201 236 452 Kielyr
421 235 578 369 Vespyr
653 217 885 376 Bo
918 159 1156 617 Zaja

format.py is here: https://github.com/chuanenlin/autoturk/blob/master/format.py

Error Loading images, what I am doing wrong ?

Hi I am trying to load images I followed instructions but I still can't load images, I am forwarding screenshot if someone can tell me what I am doing wrong, I would appreciate.

Thanks.

screenshoterror

ValueError: invalid literal for int() with base 10: ''

When I start the program and press load, python returns the following error

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\user\Anaconda3\envs\yolo_training\lib\lib-tk\Tkinter.py", line 1541, in call
return self.func(*args)
File "main.py", line 127, in loadDir
self.category = int(s)
ValueError: invalid literal for int() with base 10: ''

I am running the program on conda environment running on python2.7

Wrong Labelling

Hi, I tagged 910 photos with BBox Tool. When I checked the photos I've tagged, I've seen some photos changing the label location. I tagged car licence plates. I attached changed tagged photo for example. Where am I wrong? Thank you.
WhatsApp Image 2019-03-11 at 09 42 57 (2)
.

error while executing main.py file

test@virtualboxmachine:~/Downloads/BBox-Label-Tool-master$ python main.py
While executing this command, the following error occurred as follows:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1540, in call
return self.func(*args)
File "main.py", line 126, in loadDir
self.category = int(s)
ValueError: invalid literal for int() with base 10: ''

Kindly help me to resolve this issue.

Could I expand loaded image size?

When I draw a bounding box in main.py, the ROI the boudning box applied is a little small.
I just wanna increase the loaded image size for more accurate bounding box. is there a tool or method in main.py program? (or do I write some code for this?

Select and adjust bounding box using edges

Thank you for the amazing tool.

Is it possible to give markups on edges of the drawn bounding box and resize it after. I want to do this instead of removing and redrawing a new bounding box.

How to label an obstructed object to yield best results

Is it best to apply a bounding box to the largest, unobstructed view (which would be a similar approach to labeling objects at the edge of a picture where the complete object is not within the image) or is it best to apply a bounding box to the entire object (which could include some obstructions).

Cant load images !

Hello, I am trying to label my images but somehow I can not load images from a directory, even example images doesn't show up. Would you please help me ?
screenshot from 2017-05-26 11-53-51

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.