Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kazuhito00/grabcut-annotation-tool

OpenCVのGrabCut()を利用したセマンティックセグメンテーション向けアノテーションツール(Annotation tool using GrabCut() of OpenCV. It can be used to create datasets for semantic segmentation.)
https://github.com/kazuhito00/grabcut-annotation-tool

grabcut opencv pillow pysimplegui semantic-segmentation

Last synced: 2 months ago
JSON representation

OpenCVのGrabCut()を利用したセマンティックセグメンテーション向けアノテーションツール(Annotation tool using GrabCut() of OpenCV. It can be used to create datasets for semantic segmentation.)

Awesome Lists containing this project

README

        

[Japanese/[English](https://github.com/Kazuhito00/GrabCut-Annotation-Tool/blob/main/README_EN.md)]

# GrabCut-Annotation-Tool
https://user-images.githubusercontent.com/37477845/131681382-020df52c-dbc7-4750-80d1-42ff141ba829.mp4

OpenCVのGrabCut()を利用したアノテーションツールです。

セマンティックセグメンテーション向けのデータセット作成にご使用いただけます。

※GrabCutのアルゴリズムの都合上、境界がはっきりしているデータのアノテーションに向いています。

# Requirement
* opencv-python 4.5.2.54 or later
* Pillow 7.2.0 or later
* PySimpleGUI 4.32.1 or later

# Directory


│ app.py
│ config.json

├─core
│ │ gui.py
│ └─util.py

├─input

└─output
├─image
└─annotation

#### app.py, core/gui.py, core/util.py
ソースコードです。

#### input
アノテーション対象の画像ファイルを格納するディレクトリです。

#### output
アノテーション結果を保存するディレクトリです。
* image:リサイズした画像が格納されます
* annotation:アノテーション結果が格納されます
※パレットモードのPNG形式で保存

# Usage
次のコマンドで起動してください。
```
python app.py
```
起動時には以下オプションが指定可能です。
* --input

入力画像格納パス

デフォルト:input
* --output_image

アノテーション結果(画像)の格納パス

デフォルト:output/image
* --output_annotation

アノテーション結果(セグメンテーション画像)の格納パス

デフォルト:output/annotation
* --config

ロードするコンフィグファイル

デフォルト:config.json

# Using GrabCut-Annotation-Tool
### ファイル選択
ファイル一覧をクリックすることでアノテーション対象を切り替えることが出来ます。

ショートカットキー ↑、p:上のファイルへ ↓、n:下のファイルへ

### 初期ROI指定
「Select ROI」と表示されている時にマウス右ドラッグで初期ROIを指定できます。



ドラッグ終了後、GrabCut処理が行われます。



領域が選択されます。



### 後景指定
マウス右ドラッグで後景の指定が出来ます。





### 前景指定
「Manually label background」のチェックを外すことで前景指定に切り替えることが出来ます

ショートカットキー Ctrl



マウス右ドラッグで前景の指定が出来ます。





### クラスID切り替え
Class IDのチェックボックスを押すことでクラスIDを切り替えることが出来ます。

一桁のIDはショートカットキーでの切り替えも可能です。

ショートカットキー 0-9



クラスID切り替え後はROI指定を行う必要があります。





### 自動保存
リサイズ画像とアノテーション画像はGrabCut処理毎に自動保存されます。



自動保存をしたくない場合は「Auto save」のチェックを外してください。

自動保存以外で保存したい場合は、キーボード「s」を押してください。



### その他設定


* Mask alpha:画像のマスク重畳表示の濃淡具合
* Iteration:GrabCutアルゴリズムのイテレーション回数
* Draw thickness:前景/後景指定時の線の太さ
* Output width:出力画像の横幅
* Output height:出力画像の縦幅

# ToDo
- [x] ~~メモリリーク対策~~
- [x] ~~ROI選択時に左上→右下ドラッグ以外も可能にする~~
- [x] ~~クラスIDをショートカットキーで選択した際にROI選択表示にする~~

# Author
高橋かずひと(https://twitter.com/KzhtTkhs)

# License
GrabCut-Annotation-Tool is under [Apache-2.0 License](LICENSE).

サンプル画像は[フリー素材ぱくたそ](https://www.pakutaso.com)様の写真を利用しています。