Git Product home page Git Product logo

yolo_label's Introduction

YOLO-Label

Sponsors

WHAT IS THIS?!

Reinventing The Wheel?!!!!

1_hfyjxxcfingbcyzcgksaiq

In the world, there are many good image-labeling tools for object detection. -e.g. , (Yolo_mark, BBox-Label-Tool, labelImg).

But... I've reinvented one...

WHY DID YOU REINVENT THE WHEEL? ARE YOU STUPID?

When I used the pre-existing programs to annotate a training set for YOLO V3, I was sooooooooooo bored...

So I thought why it is so boring??

And I found an answer.

The answer is that pre-existing programs are not sensitive.

So I decided to make a sensitive image-labeling tool for object detection.

SHOW ME YOUR SENSITIVE IMAGE-LABELING TOOL!!

It's the SENSITIVE image-labeling tool for object detection!

image

YoloLabel.2023-01-10.22-06-06.mp4

cut (2)

HMM... I SAW THIS DESIGN SOMEWHERE

I refer to the website of Joseph Redmon who invented the YOLO.

redmon2

TUTORIAL / USAGE

Install and Run

  1. Download this project

For Windows

  1. Download YOLOLabel_v1.2.1.zip

  2. Unzip

  3. Run YoloLabel.exe

image

For Ubuntu 22.04

  1. Download YOLOLabel_v1.2.1.tar

  2. Unzip and download libraries

tar -xvf YoloLabel_v1.2.1.tar
sudo apt update
sudo apt-get install -y libgl1-mesa-dev
sudo apt-get install libxcb-*
sudo apt-get install libxkb*
  1. Run YoloLabel.sh
./YoloLabel.sh

image

For macOS

  1. Clone or download the source code of this repository

  2. Open terminal and type command in the downloaded directory.

yourMacOS:Yolo_Label you$ qmake
yourMacOS:Yolo_Label you$ make
  1. Run YoloLabel.app/Contents/MacOS/YoloLabel in terminal or double click YoloLabel.app to run
yourMacOS:Yolo_Label you$ ./YoloLabel.app/MacOS/YoloLabel

Prepare Custom Dataset and Load

  1. Put your .jpg, .png -images into a directory (In this tutorial I will use the Kangarooo and the Raccoon Images. These images are in the 'Samples' folder.)

dataset

  1. Put the names of the objects, each name on a separate line and save the file( .txt, .names).

objnames

  1. Run Yolo Label!

image

  1. Click the button 'Open Files' and open the folder with the images and the file(''.names or ''.txt) with the names of the objects.

image

  1. And... Label!... Welcome to Hell... I really hate this work in the world.

This program has adopted a different labeling method from other programs that adopt "drag and drop" method.

To minimize wrist strain when labeling, I adopted the method "twice left button click" method more convenient than

"drag and drop" method.

drag and drop

draganddrop

twice left button click

twiceleftbuttonclickmethod

ezgif-5-805073516651

  1. End

endimage

SHORTCUTS

Key Action
A Save and Prev Image
D, Space Save and Next Image
S Next Label
ezgif-5-f7ee77cd24c3
W Prev Label
ezgif-5-ee915c66dad8
O Open Files
V Visualize Calss Name
Ctrl + S Save
Ctrl + C Delete all existing bounding boxes in the image
Ctrl + D Delete current image
Mouse Action
Right Click Delete Focused Bounding Box in the image
ezgif-5-8d0fb51bec75
Wheel Down Save and Next Image
Wheel Up Save and Prev Image

Button Events

Remove

It was replaced by the shortcut Ctrl + D.

ezgif-2-90fb8205437e

ETC

You can access all image by moving horizontal slider bar. But when you control horizontal slider bar, the last processed image will not be saved automatically. So if you want not to lose your work, you should save before moving the horizontal slider bar.

ezgif-5-53abf38b3387

CONCLUSIONS

I've reinvented the wheel.

dont-reinvent-the-wheel

TO DO LISTS

Upload binary file for easy usage for windows and ubuntu

deployment for ubuntu

Image zoom

yolo_label's People

Contributors

blatoy avatar developer0hye avatar e8035669 avatar marrabld avatar norwegianrockcat avatar rabdulatipoff avatar wooseokyourself 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

yolo_label's Issues

Program does not work

Doing everything according to guide. However, the program does not work properly.
I add image directory, then file with class names. Then names do not appear in the programm and I cannot draw bounding boxes.

Shift the annotation

Hello,
Thank you for this great tool !
Is it possible to shift or resize an existing annotation without removing it ?
Thank you

Some Images get rotated on the software

Some of the images I loaded are rotated when displaying (maybe due to their size or anything else) which causes positions of boxing boxes to be shifted.

(Cannot send images because of privacy terms)

img number issue

Hello, thanks for making a cool annotation tool.
We are trying it out but facing an issue with the numbering. when we switch from img#109 to 110 it instead goes to 1001. i cant find the relevant code in source, but would love any pointers or a fix. im on win so compiling is abit iffy aswell.

Command Line Functions

Is there potential to add functionality to set the image directory and object text file from the command line?

How to convert coordinates from decimals?

Hi!

First off many thanks for the amazing tool. Very handy and simple to use.

I feel a bit stupid, but I'm not sure how to convert the decimal coordinates produced by the program into pixel coordinates.

All of the coordinate values in my label .txt files are decimals between 0 and 1, as shown below.

class center_x center_y width height
0 0.499443 0.744048 0.996656 0.500000
1 0.500557 0.254960 0.994426 0.498016

I saw in issue #40 that that user tried to convert the decimals with an int() call... however for me this converts all values to 0.

What am I missing here?

Thanks in advance!

Remove restriction on size of bounding box

@developer0hye the Tool is awesome, almost perfect but it would be great if there was no restriction on what size you can mark a bounding box.

It doesn't allow small enough objects when tagging small things on a frame from a 4k video :). I have really small objects!

Thanks!

How to use resulting .txt?

Hi , a little documentation on the result file would be appreciable.

PS: the software is incredibly simple and powerful πŸ‘

:( However about HCI, some improvements could be:

  • "remove" button should not be aside "save" button (deleted some of my samples stupidly and cannot retrieve them, a validation box can be appreciable)
  • tips about where " remove" button sends your beloved samples (tooltips on each button can be appreciable)
  • " change directory " and " open files " buttons : I don't know the difference and they are too close from "save" button although they are not used so often also clicking on them is not cancelable

saving box coords are wrong

saving coords with this code

_> double midX = objBox.box.x() + objBox.box.width() / 2.;

        double midY     = objBox.box.y() + objBox.box.height() / 2.;
        double width    = objBox.box.width();
        double height   = objBox.box.height();_

but in Yolo


Where x, y, width, and height are relative to the image's width and height.

not from mid

Installing Error in Veture 13.2.1

while trying to run make command in MacOs Venture 13.2.1 I got the error

Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -O2 -std=gnu++1z  -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk -mmacosx-version-min=10.10 -Wall -W -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I../../opt/anaconda3/include/qt -I../../opt/anaconda3/include/qt/QtWidgets -I../../opt/anaconda3/include/qt/QtGui -I../../opt/anaconda3/include/qt/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I../../opt/anaconda3/mkspecs/macx-clang -o label_img.o label_img.cpp
In file included from label_img.cpp:1:
In file included from ./label_img.h:7:
In file included from ../../opt/anaconda3/include/qt/QtGui/QMouseEvent:1:
In file included from ../../opt/anaconda3/include/qt/QtGui/qevent.h:50:
../../opt/anaconda3/include/qt/QtCore/qvariant.h:380:16: warning: definition of implicit copy assignment operator for 'Private' is deprecated because it has a user-provided copy constructor [-Wdeprecated-copy-with-user-provided-copy]
        inline Private(const Private &other) Q_DECL_NOTHROW
               ^
../../opt/anaconda3/include/qt/QtCore/qvariant.h:265:15: note: in implicit copy assignment operator for 'QVariant::Private' first required here
    { other.d = Private(); }
              ^
label_img.cpp:74:48: warning: unused parameter 'ev' [-Wunused-parameter]
void label_img::mouseReleaseEvent(QMouseEvent *ev)
                                               ^
label_img.cpp:312:31: error: use of undeclared identifier 'QColorConstants'
            blackPen.setColor(QColorConstants::Black);
                              ^
label_img.cpp:314:31: error: use of undeclared identifier 'QColorConstants'
            blackPen.setColor(QColorConstants::White);
                              ^
2 warnings and 2 errors generated.
make: *** [label_img.o] Error 1

Do you have any recommendation to solve it

Option to resize bounding box

Hi,
First of all: great tool, you reinvented the wheel but made it super simple and intuitive.
I am thinking about using Yolo_Label to correct annotations automatically generated by my yolo model. The idea is to have a an automated pre-annotation, then I just need to resize the bounding boxes for perfect annotations. However, this requires a resizing mode, otherwise I will need to delete the "ok" annotation in order to make a perfect one.
Are you planning on developing such an option/mode?

Also, an image zoom would be a great addition to the projet in my opinion.
Thank you for you answer

Frozen image, not changing while moving slide bar or clicking next

Hi!

First, thank you @developer0hye for this repo, this sounds like a really handy alternative of the famous Yolo annotation tools.

I'm trying to use Yolo-Label With some random images and the whole interface seems to freeze with my images.

I have no problem with the same images on Yolo-Mark.

All files are .jpg but some are .jfif rename to .jpg, could this be the pb?

In the zip file below is two images on which the pb occurs.

Is there a quick fix I can set up?

By the way, is there a method to create the "train.txt" file with all the images' names (one per line)?

img2.zip

rotating

tool randomly rotates images

look how picture looks like in labeling tool
Capture

and in my folder

cqcds

some (jpg)images are not displayed

sometimes .jpg (not .png or .jpeg) images are not displayed on the UI, if there are a lot of images, neither using the slider or the prev next buttons will display the image, the path will be updated tho.

I tried isolating the image what was not being shown, but it doesn't work either:
yoloissue

I am working with relatively small sets (less than 100 images per labeling session) so I don't know if this becomes more often with larger amounts.

although it's kind of random, is there a way to fix this?

thank you.

The dll I use to run the existing .exe and the dll in the .exe built by qt are different and I get a lot of disconnections when moving the mouse. Can you see why?

  1. When I run it in debug mode, the dll looks different. Like Qt5cored.dll, d is added. Does this issue affect mouse hangup?

  2. Mouse crosses are very slow to follow. And it got worse when the window was maximized.
    The readme's window and the current window look different and updated, but where is the object name and color part cut off the color part? In other words, is it because the slider bar that pushes it to the side is below it?
    (ν•œκ΅­μΈμ΄μ‹œλ©΄ ν•œκ΅­μ–΄λ‘œ ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.)

some image coords are not being saved

I have hundreds of images correctly being saved but there's these 2 jpg images where no matter how I save, the coords are not being added to the txt file:
error1
error2

for some reason, only the, percentages? are being saved. These two images are the only ones where this is happening. I tried with another 600 images(jpg and png) and both fields are being saved. What could it be?

Thank you

Please update zoom in/out function.

This is a great labeling tool with a great UI.

But I can't zoon in/out.

It's so uncomfortable in a picture with a lot of small objects. Could you please add the zoon in/out function?

Second click doesn't work when mouse is out of the image boundary

When the mouse is out of the image boundary , the second click doesn't work, I have to move the mouse back and forth to see the "+" mark and click to complete the label.
Maybe I'm asking too much. But getting the mouse right at the edge is really annoying. The purpose of this tool is to save some time, right?
I could just drag the mouse out of the image while using labelImg.

The bounding box values are wrong

Hi,
I completed my annotation and had a look at the .txt files. All the values of my bounding boxes start with 0.

For eg :
0 0.485048 0.334155 0.253589 0.059186
1 0.449761 0.529593 0.180622 0.060419
2 0.437799 0.739211 0.153110 0.053021
3 0.550239 0.215783 0.250000 0.054254
This is for a single image with 4 classes.

I used PIL and OpenCV to crop my image using these values considering they are [xmin ymin xmax ymax] and I got the results wrong. When I reopen Yolo_Label, the boxes are perfectly there. Is there anything I need to do? any solution?

The code I used to crop the boxes :

from PIL import Image
import matplotlib.pyplot as plt
bbox=(int(0.485048), int(0.334155), int(0.253589), int(0.059186)) #for one bounding box of an image
im=Image.open('sample.jpg')
im=im.crop(bbox)
plt.subplot(3,3,i+1)
plt.axis("off")
plt.imshow(im)

License

Hi @developer0hye,
Thank you for this nice and simple labeling tool
Can you add a license to your Yolo_Label project (preferably an open license)?
Thank you.

Filter out already marked images

Thanks for the great tool.
It might be convenient to have an option to filter out an image that has at least one label.
In many cases I am adding new images and don't want to skip the ones that are already marked.
It is especially convenient when there is a big amount of images.

no CSV export

TrainYourOwnYOLO requires CSV file as data. Is there any way we can do that with Yolo_Label?

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.