深層学習の真骨頂に近づいてきました。
本日のお題は「写真から横断歩道を検出する」です。横断歩道は白線と黒(背景)で規則的なパタンで形成されているマークなので、学習させれば自動的に検出することも可能です。カラーコントラストを強めて白黒を目立たせることでpytouchなどを使って学習させられるため、最近は学習機能を持たせた訓練環境の構築に時間を割いてきました。
ロジックとしては、pythonをベースにpyqtでフォルダダイアログを開き、横断歩道の写真が大量に入ったフォルダを指定します。次に学習済みモデル(新規ならカラのモデル)を指定し、学習を開始します。まず最初に学習モデルが赤色で横断歩道を囲む。次に人間が緑色で横断歩道を囲む。学習モデルはその誤差(で収まらないほど酷い出だしですが)の狂いを学習して、より人間の目に近い状態で横断歩道を検出しようとするというものです。
こんな感じ。なかなか赤色は適当な感じでマークしています。それに対して人間はなるべく忠実に横断歩道を囲います。
用意した横断歩道の数は約1000!素晴らしい数だと思いませんか?個人的趣味にしては大げさすぎるボリュームです。とにかく検証材料は多いに越したことはありませんので、大量の横断歩道についてpyouchと正誤回答を繰り返します。
まあ、まだまだパイロンに✕つけてみたりなど未学習甚だしいのですが、それでも単純な平行線を引くだけの装置ではなくなりました。
save_model
と load_model
関数を作成し、PyTorchのモデルの比重(state_dict
)を保存およびロードする。
QFileDialog
を使って、保存先とロード先のファイルパスをユーザーに選ばせる。
そんなところで常にPuytouchを鍛えてる→学習済みモデルとして保存させる の繰り返しでPytouchが頭が良くなっていくのを確認するのみです。