12.5K Views
April 27, 24
スライド概要
インスタンスセグメンテーションAIの「YOLACT」を自分で用意した画像でファインチューニングして使いたい方向けの資料です。
Part2ではYOLACT向けのアノテーションファイルの成形と、ディープラーニングの開始方法を紹介します。
オリジナルデータで YOLACTを作って動かそう! Part.2 ディープラーニングでYOLACTを学習 作成者:スプレッドナレッジ
【Part.2 の内容】 0. 前回のおさらい 1. YOLACTのAIを作成する手順 2. アノテーションデータの形式変換 3. YOLACTのconfigファイルの設定 4. ディープラーニングの開始
0. 前回のおさらい
0-1 前回のおさらい 引用:https://github.com/wkentaro/labelme
0-2 今回解説するパート
0-3 Ubuntuに追加でダウンロードするファイル (1)Ubuntuを起動&端末を開いて「Labelme」の ソースコードをダウンロードする(1度だけ行えばよい) →「2. アノテーションデータの形式変換」の際に必要 【Ubuntuの端末へ入力するダウンロードコマンド】 ① cd ~ ② git clone https://github.com/wkentaro/labelme.git
0-3 Ubuntuに追加でダウンロードするファイル (1)続き
0-3 Ubuntuに追加でダウンロードするファイル (2)以下のサイトからYOLACTのベースネットワークを ダウンロードする →ディープラーニングの際に必要(詳しくは第5章へ) https://github.com/dbolya/yolact
0-3 Ubuntuに追加でダウンロードするファイル (2)続き:ページ内の「Training」にあるhereをクリックする
0-3 Ubuntuに追加でダウンロードするファイル (2)続き:ダウンロードした3つのファイルを yolactディレクトリ内のweightsディレクトリへコピー
0-3 Ubuntuに追加でダウンロードするファイル (3)Visual Studio Codeをインストールする →大容量のテキスト形式のデータを開くのに最適なため Ubuntu Softwareを開いて “Visual Studio Code” を検索してダウンロード
1. YOLACTのAIを 作成する手順
1-1 YOLACTの開発手順 要件定義&データ収取&アノテーション アノテーションデータを独自形式へ変換 YOLACTのconfigファイルの設定 ディープラーニングの実行
1-2 アノテーションが終わったら ・アノテーションが終わると画像データが保存されている フォルダにアノテーションデータ(.json)がしっかり 保存されているか確認
1-2 アノテーションが終わったら 画像データ(.jpg) & アノテーションデータ(.json) 画像データ(.jpg) & アノテーションデータ(.json) 画像データ(.jpg) & アノテーションデータ(.json) practice 1つのフォルダーへ まとめましょう!
・データを移動する前に:trainとvalidationに分ける practice train 用 practice_train 推奨比率 train : valid validation 用 practice_validation = 8 : 2
準備ができたらデータ移動
2. アノテーションデータの 形式変換
2-0 この章で解説するパート アノテーションデータを独自形式へ変換
COCO形式へ変更とは? ・YOLACT作成時にLabelmeで作成したアノテーションデータ(.json)を そのまま利用できない →labelmeのPythonプログラムで独自形式へ変更する必要がある
2-1 学習データをUbuntu/labelmeへ移動 home labelme examples instance_ segmentation train用とvalidation用の ディレクトリを分けてから instance_segmentationディレクトリへ コピーする practice_ train practice_ validation
2-2 labels.txtの内容を一部変更 ・labels.txt:YOLACTに分類させる項目名を記載するtxtファイル
① 3行目以降を 削除 ② 3行目以降に 分類項目名を 順に記述する ③ 最後に保存 して閉じる
2-3 変換プログラムの実行 ①「yolact」の仮想環境を起動 ② cdコマンドでinstance_segmentationディレクトリへ移動 ③ Pythonプログラムを使って最初にtrain用のデータを変換していく ④ Pythonプログラムを使って次にvalidation用のデータを変換していく 【端末に打ち込む実行コマンド】 ① conda activate yolact ② cd ~/labelme/examples/instance_segmentation
【端末に打ち込む実行コマンド】 ③ python labelme2coco.py {train用データのディレクトリ名} {train用の変換データの出力先ディレクトリ名} --labels labels.txt
【端末に打ち込む実行コマンド】 ④ python labelme2coco.py {validation用データのディレクトリ名} {validation用の変換データの出力先ディレクトリ名} --labels labels.txt
2-4 変換した学習データの内容 ・2-3の③と④で指定した変換データの出力先ディレクトリが instance_segmentationディレクトリに出力されている
3. YOLACTのconfigファイル の設定
3-0 この章で解説するパート YOLACTのconfigファイルの設定
3-1 configファイルとは ・ディープラーニングに必要な設定を記載するファイル →ディープラーニングをどう進めるか &どのように学習を進めていくか書いてある ・データセット名の定義 ・学習データ(画像&アノテーションデータ) ・YOLACT++のネットワーク構成 ・入力データのサイズ ・学習率の変更タイミング ・ディープラーニングの総回数 …etc
3-2 学習データの移動と一部内容変更 ① 2-3で作成したデータのファイル名を以下のように変更する ※名前は何でも良い ですが今回はこの 名前で進めます train_images train.json validation_images validation.json
② train.jsonとvalidation.jsonの内容を一部変更 →ファイル内の「JPEGImages/」の文字列を全て削除
③ yolactディレクトリ内に学習データを保存しておく 新しいディレクトリを新規作成 &そこへ①の4つのファイルをコピーする home labelme examples instance_ segmentation practice_train_ output practice_validation_ output コピー yolact train_data practice
3-3 configファイルの変更 ① dataディレクトリ内にあるconfig.pyを開く home yolact data 今回は Resnet101という CNNをバックボーンにした YOLACT++を作成します
②「--DATASETS--」の欄の最後の辺りにデータセット名や 各種学習データの保存場所・ファイル名・ディレクトリ名、 分類項目名と数を記述する データセット名 trainとvalidation の学習用画像の 保存場所と ディレクトリ名 trainとvalidation のアノテーション データの 保存場所と ファイル名 分類項目名と数 自分の条件に合わせて修正する部分
③「--YOLACT++ CONFIGS--」の欄の最後の辺りに 作成するYOLACT++の定義を記述していく 1) 「yolact_plus_bas e_config」の部分 を丸々コピーする
③続き 2) 1)でコピーした部分を 「--YOLACT ++ CONFIGS--」の欄の 最後部へ貼り付ける 独自の定義文を どこに記述したか 分かりやすいように このような文章を 加えておくと良い
③続き 3) 「yolact_plus_base_config」と 「”name”」の部分を 独自の名前に変更する 今回は学習データに 合わせて 「practice」と 変更する
③続き 3-3の②で記述した 「データセット名」を指定 4) 「”name”」の下に5つの項目を追加する &必要に応じて赤点線部を変更する 分類項目の数を 関数を使って指定 学習率を指定 学習率の 変更タイミングを指定 ディープラーニングの 回数を指定 自分の条件に合わせて 修正する部分
③続き 5) 「保存(S)」をクリックして configファイルを閉じる
4. ディープラーニングの 開始
4-0 この章で解説するパート ディープラーニングの実行
4-1 転移学習でAI作成
4-2 ディープラーニング開始! ・以下の3つのコマンドを実行するとディープラーニングが始まる ① conda activate yolact ② cd ~/yolact ③ python train.py –config {3-3の③で定義したconfig名} --batch_size {batchサイズ} → 今回の 場合
pytorchや GPUの割り当て、 データの読み込み が始まっていく うまくいくと このように ディープラーニングが 開始される 2回学習が進むと validationのデータ で検証を行う 繰り返し…
4-3 CUDA out of memoryの対処 GPUのメモリ使用量 の調整 ①ディープラーニングのコマンドのbatchサイズを減らす (= 1回の学習に使用するデータ数を減らす) ②configの’max_size’を32の倍数で小さくする (= YOLACTのモデルサイズを小さくする)