片目を閉じていても検出する
別の人物が写っていても夏色まつりだけを検出する
夏色まつりを検出するAIをSSD300(Single Shot Multibox Detector)で実装した.
訓練画像の収集とラベル付け #
YouTubeのサムネイル画像を学習に用いた.訓練画像は70枚程度. ラベル付けのためにアプリをelectronで自作した.2日くらいかけて最低限の機能を備えたものを作れた. (物体検出のためのラベル付けをするアプリは調べれば既成の物がある)
DataLoaderの実装 #
以降の実装は 「つくりながら学ぶ!PyTorchによる発展ディープラーニング」小川雄太郎著から引用した.
入力画像を300px×300pxにリサイズする前処理クラスを実装した.データオーギュメンテーションを後から実装するつもりでいたが,特にしなくてもうまく学習できた.
class Transform():
def __init__(self):
self.transform = Compose([
Resize(300), # 300x300にリサイズ
ToTensor(),
])
def __call__(self, image):
return self.transform(image)
SSDの実装 #
2.8章にPyTorch >= 1.5では動かないコードがあったが, ここを見て解決した.
学習 #
学習済みモデルを用いずに,「Heの初期値」で初期化した状態から学習した.150epoch程度回した.最後の30epochの学習曲線(loss)を図に示す.青線がtrain,黄線がeval.Google Colabで10分程度要した.
推論 #
最初の画像のような推論結果を得られた.十分うまく出来ていると思う.