【学習記録8】AIによる「物体検出」を学ぼう!
Udemyの「AIによる「物体検出」を学ぼう!」の8日目です。
今日も「セクション2」の続きからで、実装の2日目となります。
13. Faster R-CNNの実装 Part2
モデルの構築
Faster R-CNNは、ResNet-50-FPNをバックボーンに持つ。
ファインチューニング。訓練済みのモデルに対して追加で訓練を行う。
https://pytorch.org/vision/stable/models.html#torchvision.models.detection.fasterrcnn_resnet50_fpn
に書かれていることは、pretrained=Trueとするとクラス数をデフォルトの91から変更できないとのこと。
そのため、インスタンスを生成後にFastRCNNPredictorクラスで21を指定してやる必要がある。
実行結果を見てみる。いろいろと羅列されているのだが、、意味がよく分からないぞ。
RegionProposalNetworkという、領域内に何がどのくらいの確度で存在するという情報を提案するネットワークがモデルに含まれているとのこと。
FastRCNNPredictorでは、指定したとおりに「cls_score」のout_features=21となっている。また、「bbox_pred」はout_features=84となっており、これはバウンディングボックスの四隅の座標のため4倍とのこと(4つ分必要)。
訓練
誤差には、「classification loss」と「regression loss」がある。これらを足し合わせたものが全体の誤差となる。
最適化アルゴリズムはSGDを使用するとのこと。
モデルを訓練モードにすることで、モデルに画像とラベルを渡すことができる。
epochs=1だったが、実行に23分ほどかかった。
なかなかかかるね。こういうものですかね。
訓練したモデルの使用
評価モードにすると、ターゲットを渡さなくてもよくなる。
スコアによる選別
スコアが0.5を超えるもののみに絞り込んでいる。この「0.5」は検出する物体により異なる。自分の場合は、バウンディングボックスが表示されなかった。
そこで調整して、0.4で1つ、0.3で2つのバウンディングボックスが表示された。
選別の意図というか、基準が物体によって違ってくるのは、この物体検出の使い方によっては難しいことですね。
今回は、ここまで。
次回はセクション3に入って、さらに高度な手法になるとのこと。
この記事が気に入ったらサポートをしてみませんか?