Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.)
- Host: GitHub
- URL: https://github.com/kazuhito00/grabcut-annotation-tool
- Owner: Kazuhito00
- License: apache-2.0
- Created: 2021-09-01T13:21:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-12-13T13:13:10.000Z (about 3 years ago)
- Last Synced: 2023-03-04T13:14:45.556Z (almost 2 years ago)
- Topics: grabcut, opencv, pillow, pysimplegui, semantic-segmentation
- Language: Python
- Homepage:
- Size: 553 KB
- Stars: 32
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.mp4OpenCVの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)様の写真を利用しています。