HumanSignal / labelImg

LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
https://youtu.be/p0nR2YsCY_U
MIT License
22.51k stars 6.27k forks source link

how to create and save rotation bounding box? #20

Open taopanpan opened 7 years ago

taopanpan commented 7 years ago

I want to create and save the rotation bounding box by record the rotation angle,

tzutalin commented 7 years ago

@taopanpan , Have you tried to implement it?

taopanpan commented 7 years ago

@tzutalin I tried,but failed. can you help me?

tzutalin commented 7 years ago

@taopanpan , How can I help you?

arasharchor commented 7 years ago

@taopanpan @tzutalin I think we can work on it together to add this very valuable extension. Let us continue here:

https://github.com/tzutalin/ImageNet_Utils/issues/7

I have prepared a segmentation tool which is very good and efficient. Then we can integrate that into this tool to make it a multi-function tool.

Then let us make the whole tool webbased which annotators do not need to install anything except a web browser :)

tzutalin commented 7 years ago

@smajida , Cool. Web based tool is nice for most of the people.

ujsyehao commented 7 years ago

@taopanpan Hi, you want to detect rotation bounding box? I am working on it, can we work together?

ms10058 commented 7 years ago

@ujsyehao , If you can add this feature, it will be helpful to others._

wangzhe0623 commented 7 years ago

I am trying to implement this function, But I am new in PyQt. It's so hard for me````````````

fastlater commented 6 years ago

@tzutalin @smajida Are rotated bounding boxes valid to use for training the tensorflow object detection api?

danzigjabalpur commented 6 years ago

This guy has implemented a rotated Bbox function but it does not offer a YOLO format output. https://github.com/cgvict/roLabelImg

Similar to @fastlater , I would also like to know if rotated bounding box would affect training for YOLO?Since YOLO only requires center coordinates, width and height of the Bbox, I assume it wouldn't affect the training right?

juliusHuelsmann commented 5 years ago

Hey!

I implemented that feature (#20, #347) when I was considering to work with the labelImg tool. I did however decide against using it and thus did not entirely finish a minor part of the implementation (that can most likely be omitted). The version shipped in the referenced pull request is completely functional (should however be tested).

Two minor things I did not take care of:

  1. I did not finish the implementation of a rectangle angle check mechanism, that checks if the rectangle angle that is to be applied leads to a valid outcome having all edges in range of the image. The mechanism I implemented does not detect some cases where the rectangle is out of range and therefore I removed it via flag.
  2. The rectangle coordinates are floating point now, I am not sure if that can be used for the rest of the pipelines / if that works in accordance with the output formats. In case it does not, simple conversion to int on export is required.

Tested only via python3. My fork with open pull requests be found at https://github.com/juliusHuelsmann/labelImg

Quick demo

asdf

MarStarck commented 5 years ago

@juliusHuelsmann wonderful job. Could you share your windows binaries?

juliusHuelsmann commented 5 years ago

@MarStarck I am sorry, I do not use Windows as my operating system on any of my computers and did not manage to setup a cross-compile workflow with wine (because the python3 installer always crashes).

If you are able to compile the project on windows however, making the exe file should work straight out of the box:

If you can build the project (the link includes the patch I submitted), it suffices to (in case you have installed pip) execute the following two commands in the labelImg directory:

> pip install pyinstaller
> pyinstaller --onefile labelimg.py

after you have build the project once (with either qt5 or qt5) as described in the readme:

> pyrcc5 -o resources.py resources.qrc
> python labelImg.py

Edit:

Please be aware that it is very likely that the export function has to be adapted (I 'store' the coordinates as floating point numbers along with the rotation angle in memory, and depending on the future workflow the export output (which I did not touch at all) has to be changed), so do not start to label a lot of data before checking that everything really works out. I did not use the patch myself because when I finished implementing it, it turned out that I did not need a labeling tool for my work anymore.

zexihan commented 4 years ago

Hey! I completed the work done by @juliusHuelsmann and added an additional output format for the rotated bounding box (type center_x center_y width height rotation). Specifically, the work is based on the latest version of labelImg and adds a 'KITTI BEV' format writer and reader. Please check it out: labelImg-kitti 😁

xqtbox commented 4 years ago

@taopanpan @tzutalin I think we can work on it together to add this very valuable extension. Let us continue here:

tzutalin/ImageNet_Utils#7

I have prepared a segmentation tool which is very good and efficient. Then we can integrate that into this tool to make it a multi-function tool.

Then let us make the whole tool webbased which annotators do not need to install anything except a web browser :)

@arasharchor
Hello, is the “webbased” completed?

engahmed1190 commented 1 year ago

Hi @zexihan . I have checked the tool but some images appeared to be rotated while the source image is not.

Do you mind to pull the latest changes at the master branch from the original repository and merged.