物体検出を用いてNARUTOの印(子~亥、壬、合掌)を検出するモデルとサンプルプログラムです。このリポジトリでは、YOLOXを使用しています(This is a model and sample program that detects NARUTO's hand sign using object detection. This repository use YOLOX.)
[Japanese/English]
物体検出を用いてNARUTOの印を検出するモデルとサンプルプログラムです。
右図:© NARUTO -ナルト- 9話『写輪眼のカカシ』岸本斉史作/集英社/studioぴえろ
※日本の著作権法 第二十条「同一性保持権」1における「改変」に相当する可能性があるため、
右図にはバウンディングボックスのオーバーレイ表示は行っておりません。
Deep写輪眼:オブジェクト検出 YOLOX を用いた NARUTO の印認識
このリポジトリは、NARUTO2 の印を認識するための訓練済みモデルとサンプルプログラムを公開しています。
忍術の発動は、一部の忍術をのぞき手で印を結ぶことが必要です。
また、性質変化は印に特徴が現れるため(火遁→寅の印、土遁→亥の印など)、
印を素早く認識することが出来れば、忍同士の戦闘においてアドバンテージを得ることが出来ます。
印の認識にはディープラーニングの物体検出モデルの一つYOLOX-Nanoを使用することで、
前回バージョンのDeep写輪眼(EfficientDet-D0利用)よりも推論速度を大幅にアップしました。
データセットは非公開です(訓練済みのモデルは公開します)
※日本の著作権法 第四十七条の七「複製権の制限により作成された複製物の譲渡」3に準拠
また、自分で撮影した画像、アニメ画像の他に、naruto-hand-sign-dataset4を利用しています。
データセットはネット上で収集した画像と、自前で撮影した画像で構成されているため、
背景色や服装によっては検出精度が落ちたり、誤検出する可能性があります。
Issueで誤検出した条件を教えていただると助かります。
可能であれば、誤検出する条件の画像(子~亥、壬、合掌)をいただけると大変助かります。
その際、いただいた画像は学習データセットに追加してモデルの再訓練に使用します。
14種類(子~亥、壬、合掌)の印に対応しています。
子(Ne/Rat) | 丑(Ushi/Ox) | 寅(Tora/Tiger) | 卯(U/Hare) |
辰(Tatsu/Dragon) | 巳(Mi/Snake) | 午(Uma/Horse) | 未(Hitsuji/Ram) |
申(Saru/Monkey) | 酉(Tori/Bird) | 戌(Inu/Dog) | 亥(I/Boar) |
壬(Mizunoe) | 合掌(Gassho/Hand Claps) | - | - |
総枚数:10026(内アニメ画像:2651枚)
タグ付き枚数:7098枚
タグ無し枚数:2928枚
アノテーションボックス数:8941個
訓練済みモデルをmodelディレクトリ配下で公開しています。 ※旧バージョンのモデルは「_legacy」ディレクトリに移動
│ simple_demo.py │ Ninjutsu_demo.py │ ├─model │ └─yolox │ │ yolox_nano.onnx │ └─yolox_onnx.py │ ├─post_process_gen_tools │ │ convert_script.sh │ │ make_box_gather_nd.py │ │ make_boxes_scores.py │ │ make_cxcywh_y1x1y2x2.py │ │ make_final_batch_nums_final_class_nums_final_box_nums.py │ │ make_grids.py │ │ make_input_output_shape_update.py │ │ make_nms_outputs_merge.py │ └─make_score_gather_nd.py │ ├─setting─┬─labels.csv │ └─jutsu.csv │ ├─utils │ └─_legacy
シンプルな検出デモです。
忍術判定のデモです。
印の履歴から術データ(jutsu.csv)にマッチする術名を表示します。
訓練済みモデルを格納しています。
ONNXにすべての後処理をマージするスクリプト群を格納しています。
ラベルデータ(labels.csv)と術名データ(jutsu.csv)を格納しています。
FPS計測用モジュール(cvfpscalc.py)と文字列描画用モジュール(cvdrawtext.py)を格納しています。
Ninjutsu_demo.pyのみで使用します。
デモの実行方法は以下です。
python simple_demo.py
python simple_demo_without_post.py
python Ninjutsu_demo.py
また、デモ実行時には、以下のオプションが指定可能です。
アプリケーションの応用事例を紹介します。
EfficientDetモデルトレーニング時は、からあげさんの説明記事5を参考にいたしました。
また、からあげさんのブログ6にて、Deep写輪眼をご紹介いただきました。
大変ありがとうございます。
YOLOXのトレーニングにはYOLOX-Colaboratory-Training-Sample7を使用しています。
高橋かずひと(https://twitter.com/KzhtTkhs)
NARUTO-HandSignDetection is under MIT license.