AI居眠り判定1フェーズ目完了

 

今日、最近取り組んでいたAI居眠り判定ツールを第一フェーズ目まですすめた。

 

第一フェーズは「とりあえず検知して画像保存&アラートが鳴る」こと。

第二フェーズはトライアル実装して調整&再学習。

第3フェーズで調整完了させて本実装となる。

 

実際のところ、この第一フェーズまでに壁があり、後のフェーズはほぼ調整ゲームとなってくるので、本丸は既にクリアしたと言って良いと思う。

 

今回はAIを駆使して、VSCodeでPythonコードを書き、顔の検知は最終的にinsight faceを使用し、毎秒判定を行う形にした。

 

尊敬する社員さんからの依頼であり、かつ重要なプロジェクトだったので気合が入っていた。

しかし、我が部署でこんな機械学習ツールを作ったことがある人がいる筈もなく、社員さんと俺との未知の挑戦だった。

他の社員さんも半信半疑なご様子だった。そりゃそう。

 

しかし、俺は出来ると思っていた。なぜなら、全然違う内容ではあるけど、YouTubeで機械学習系の動画を結構見ていたし、そりゃ色々頑張らなきゃいけないけど「技術的には誰でも可能」であることを知っていた。

 

いざやってみると、中々に壁が多い。画像を10万枚用意しろとか、個別の顔をどう抽出するかとか、アラートタイミングとかとか、もう何かと分からないことがあり、それら全てが壁だった。

まずはそれらの壁を下げ、ひっくいハードルにして、ひっくいハードルならクリア出来たって状態を目指すことにした。

 

画像はメンバーに撮影協力してもらって500枚だけ用意した。使えない画像を除くと400枚になった。

今回の判定は3クラスしか必要ないので、1クラスに130枚くらいの状態になった。この20%はテスト用に割り振られることを思うと、学習に使うのは100枚くらいだろうか。

 

実はこの枚数でも結構判定できることを、YouTube動画を見て知っていた。もちろん1クラス1万枚とかあれば精度はドカンと上がるけれど、とはいえ1クラス1000枚でも良いよねってされていて、手始めに100枚ってのはスタートの選択肢としておかしくないはずだ。

 

その100枚を1回だけ学習させる訳じゃない。エポック数、これは周回数なのだけど、今回は50エポック、つまり50周使ったのだ。

さらに、データ拡張という手法によって100枚の画像をあの手この手で別画像のように使い回し、なんとか沢山学習させた。

結果、ある程度の判定を行える学習モデルを作ることができた。

 

あとは作った学習モデルをコードに組み込んでツール化させるだけだった。ぺちぺちとやって完成だ。画像からinsightfaceで顔を抜き出し、学習モデルがその画像を判定し、アラートを出す。さらに、良くない状態だった場合はその画像を保存する、というものにした。

 

今日それを社員さんに伝えたら、とても喜んで評価してくれた。

しかしまだ足りない要素があること、追加の学習が必要であることを伝え、早速明日から再学習素材を集めるためのトライアルモードに入っていくことになった。

 

ウチのチームには超ベテランJavaScriptマンがいる。しかし、Pythonマンはいない。

新たな場所を作ることに成功したのだ。これは大きかった。かなりの挑戦だったが、ファーストペンギンになれたのだ。

 

今回のプロジェクトが終わったら、次は現ツールの強化版作りが始まる。

そして情報サイトのリプレイス。

そして、新人教育に使うゲームチックな練習ツール。

開発班は常に何かしらを追いかけている(*ˊᵕˋ*)笑

 

この道を行けばきっと良いことがある。そうとしか思えない気持ちになった日だった。