オリジナルデータでYOLACTを作って動かそう! Part.2 ディープラーニングでYOLACTを学習

2.7K Views

April 27, 24

スライド概要

インスタンスセグメンテーションAIの「YOLACT」を自分で用意した画像でファインチューニングして使いたい方向けの資料です。
Part2ではYOLACT向けのアノテーションファイルの成形と、ディープラーニングの開始方法を紹介します。

profile-image

主にオープンソースを利用して、ディープラーニングやArduPilotの自律走行ロボットを開発しています。 バリバリ農学部出身ですが、異分野にも挑戦中。 これまで作った資料を順次公開しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

オリジナルデータで YOLACTを作って動かそう! Part.2 ディープラーニングでYOLACTを学習 作成者:スプレッドナレッジ

2.

【Part.2 の内容】 0. 前回のおさらい 1. YOLACTのAIを作成する手順 2. アノテーションデータの形式変換 3. YOLACTのconfigファイルの設定 4. ディープラーニングの開始

3.

0. 前回のおさらい

4.

0-1 前回のおさらい 引用:https://github.com/wkentaro/labelme

5.

0-2 今回解説するパート

6.

0-3 Ubuntuに追加でダウンロードするファイル (1)Ubuntuを起動&端末を開いて「Labelme」の ソースコードをダウンロードする(1度だけ行えばよい) →「2. アノテーションデータの形式変換」の際に必要 【Ubuntuの端末へ入力するダウンロードコマンド】 ① cd ~ ② git clone https://github.com/wkentaro/labelme.git

7.

0-3 Ubuntuに追加でダウンロードするファイル (1)続き

8.

0-3 Ubuntuに追加でダウンロードするファイル (2)以下のサイトからYOLACTのベースネットワークを ダウンロードする →ディープラーニングの際に必要(詳しくは第5章へ) https://github.com/dbolya/yolact

9.

0-3 Ubuntuに追加でダウンロードするファイル (2)続き:ページ内の「Training」にあるhereをクリックする

10.

0-3 Ubuntuに追加でダウンロードするファイル (2)続き:ダウンロードした3つのファイルを yolactディレクトリ内のweightsディレクトリへコピー

11.

0-3 Ubuntuに追加でダウンロードするファイル (3)Visual Studio Codeをインストールする →大容量のテキスト形式のデータを開くのに最適なため Ubuntu Softwareを開いて “Visual Studio Code” を検索してダウンロード

12.

1. YOLACTのAIを 作成する手順

13.

1-1 YOLACTの開発手順 要件定義&データ収取&アノテーション アノテーションデータを独自形式へ変換 YOLACTのconfigファイルの設定 ディープラーニングの実行

14.

1-2 アノテーションが終わったら ・アノテーションが終わると画像データが保存されている フォルダにアノテーションデータ(.json)がしっかり 保存されているか確認

15.

1-2 アノテーションが終わったら 画像データ(.jpg) & アノテーションデータ(.json) 画像データ(.jpg) & アノテーションデータ(.json) 画像データ(.jpg) & アノテーションデータ(.json) practice 1つのフォルダーへ まとめましょう!

16.

・データを移動する前に:trainとvalidationに分ける practice train 用 practice_train 推奨比率 train : valid validation 用 practice_validation = 8 : 2

18.

準備ができたらデータ移動

19.

2. アノテーションデータの 形式変換

20.

2-0 この章で解説するパート アノテーションデータを独自形式へ変換

21.

COCO形式へ変更とは? ・YOLACT作成時にLabelmeで作成したアノテーションデータ(.json)を そのまま利用できない →labelmeのPythonプログラムで独自形式へ変更する必要がある

22.

2-1 学習データをUbuntu/labelmeへ移動 home labelme examples instance_ segmentation train用とvalidation用の ディレクトリを分けてから instance_segmentationディレクトリへ コピーする practice_ train practice_ validation

23.

2-2 labels.txtの内容を一部変更 ・labels.txt:YOLACTに分類させる項目名を記載するtxtファイル

24.

① 3行目以降を 削除 ② 3行目以降に 分類項目名を 順に記述する ③ 最後に保存 して閉じる

25.

2-3 変換プログラムの実行 ①「yolact」の仮想環境を起動 ② cdコマンドでinstance_segmentationディレクトリへ移動 ③ Pythonプログラムを使って最初にtrain用のデータを変換していく ④ Pythonプログラムを使って次にvalidation用のデータを変換していく 【端末に打ち込む実行コマンド】 ① conda activate yolact ② cd ~/labelme/examples/instance_segmentation

26.

【端末に打ち込む実行コマンド】 ③ python labelme2coco.py {train用データのディレクトリ名} {train用の変換データの出力先ディレクトリ名} --labels labels.txt

27.

【端末に打ち込む実行コマンド】 ④ python labelme2coco.py {validation用データのディレクトリ名} {validation用の変換データの出力先ディレクトリ名} --labels labels.txt

28.

2-4 変換した学習データの内容 ・2-3の③と④で指定した変換データの出力先ディレクトリが instance_segmentationディレクトリに出力されている

29.

3. YOLACTのconfigファイル の設定

30.

3-0 この章で解説するパート YOLACTのconfigファイルの設定

31.

3-1 configファイルとは ・ディープラーニングに必要な設定を記載するファイル →ディープラーニングをどう進めるか &どのように学習を進めていくか書いてある ・データセット名の定義 ・学習データ(画像&アノテーションデータ) ・YOLACT++のネットワーク構成 ・入力データのサイズ ・学習率の変更タイミング ・ディープラーニングの総回数 …etc

32.

3-2 学習データの移動と一部内容変更 ① 2-3で作成したデータのファイル名を以下のように変更する ※名前は何でも良い ですが今回はこの 名前で進めます train_images train.json validation_images validation.json

33.

② train.jsonとvalidation.jsonの内容を一部変更 →ファイル内の「JPEGImages/」の文字列を全て削除

34.

③ yolactディレクトリ内に学習データを保存しておく 新しいディレクトリを新規作成 &そこへ①の4つのファイルをコピーする home labelme examples instance_ segmentation practice_train_ output practice_validation_ output コピー yolact train_data practice

35.

3-3 configファイルの変更 ① dataディレクトリ内にあるconfig.pyを開く home yolact data 今回は Resnet101という CNNをバックボーンにした YOLACT++を作成します

36.

②「--DATASETS--」の欄の最後の辺りにデータセット名や 各種学習データの保存場所・ファイル名・ディレクトリ名、 分類項目名と数を記述する データセット名 trainとvalidation の学習用画像の 保存場所と ディレクトリ名 trainとvalidation のアノテーション データの 保存場所と ファイル名 分類項目名と数 自分の条件に合わせて修正する部分

37.

③「--YOLACT++ CONFIGS--」の欄の最後の辺りに 作成するYOLACT++の定義を記述していく 1) 「yolact_plus_bas e_config」の部分 を丸々コピーする

38.

③続き 2) 1)でコピーした部分を 「--YOLACT ++ CONFIGS--」の欄の 最後部へ貼り付ける 独自の定義文を どこに記述したか 分かりやすいように このような文章を 加えておくと良い

39.

③続き 3) 「yolact_plus_base_config」と 「”name”」の部分を 独自の名前に変更する 今回は学習データに 合わせて 「practice」と 変更する

40.

③続き 3-3の②で記述した 「データセット名」を指定 4) 「”name”」の下に5つの項目を追加する &必要に応じて赤点線部を変更する 分類項目の数を 関数を使って指定 学習率を指定 学習率の 変更タイミングを指定 ディープラーニングの 回数を指定 自分の条件に合わせて 修正する部分

41.

③続き 5) 「保存(S)」をクリックして configファイルを閉じる

42.

4. ディープラーニングの 開始

43.

4-0 この章で解説するパート ディープラーニングの実行

44.

4-1 転移学習でAI作成

45.

4-2 ディープラーニング開始! ・以下の3つのコマンドを実行するとディープラーニングが始まる ① conda activate yolact ② cd ~/yolact ③ python train.py –config {3-3の③で定義したconfig名} --batch_size {batchサイズ} → 今回の 場合

46.

pytorchや GPUの割り当て、 データの読み込み が始まっていく うまくいくと このように ディープラーニングが 開始される 2回学習が進むと validationのデータ で検証を行う 繰り返し…

47.

4-3 CUDA out of memoryの対処 GPUのメモリ使用量 の調整 ①ディープラーニングのコマンドのbatchサイズを減らす (= 1回の学習に使用するデータ数を減らす) ②configの’max_size’を32の倍数で小さくする (= YOLACTのモデルサイズを小さくする)