インターンシップ(raspberry pi における画像解析)

raspberry piによるOpenCV, Keras-yoloを用いた画像解析

東京都立産業技術高等専門学校 ものづくり工学科 電子電気コース
実習先 Shannon Lab株式会社

1.はじめに

 shannonlabは東京都中野区に本社を構えるベンチャー企業である。社名は情報理論の父と言われる数学・論理学者のクロード・シャノンからつけられたものである。
事業内容としては主にSNS上の文章の感情解析音声認識技術などを手がけており、インターン生も積極的に募集している。
今回の実習期間は20日間で、その2週間前からpythonの環境構築や使い方を学んだため、合計で約1ヶ月間実習を行った。
実習のテーマはOpenCV, Kerasyoloを用いた画像解析である。今回はubuntuないだけでなく、raspberry piとpicameraを用いての画像解析も行った。
特にraspberry piとyoloの組み合わせは今後の技術の発展によりさらなる進歩が期待できる分野である。

2.実習内容

2-1 OpenCV

 OpenCVとは画像処理、機械学習を得意とするライブラリである。
今回はOpenCVを小型コンピュータであるraspberrypi導入し、純正のカメラのpicameraと組み合わせて
人の顔と目を認識するプログラムと人の顔を認識してシャッターを切るプログラムの2つを作成した。
このプログラムの作成には主に学習元のデータを読み込むOpenCVのcv.CascadeClassifierコマンド、
データを元に検出を行うdetectMultiScaleコマンド、枠線を描画するcv.rectangleコマンドの3つを用いた。

2-2 yolo

 yoloとは「you only look ones」の略で人間レベルの精度を持つ、ライブラリである。
yoloはdeep newral network技術によって検出と識別を同時に行っており、画像処理の分野では最先端レベルの処理性能を誇っている。
今回は並列処理が得意なGPUを搭載していないパソコンでも可動するKeras-yoloをpicameraのついたraspberry piに導入して画像解析を行った。
行ったのはKeras-yoloを撮影した画像を取り込んで解析を行うプログラムとリアルタイムでカメラからの映像を取り込んで解析するプログラムの2つである。

2-3yoloの学習

 Keras-yoloはフォルダ内のtrain.pyによって自分の認識させたい物体を学習させることもできる。
学習には500枚以上の画像データ(※これより少なくてもいいが、精度は落ちる)と画像内の物体に印を付けるアノテーションソフトが必要である。
今回はVoTTと呼ばれるアノテーションソフトを使い、自分と田中さんの画像、合計900枚にラベル付けを行った。
なお、自分の学習させたい物体と同時にもともとyoloの純正モデルで認識できる「人間」のモデルをロードしようと試みたが、達成することはできなかった。

3.結果と考察

3-1 OpenCV

作成したプログラムを用いて自分の顔を撮影した。画像は恥ずかしいので掲載しないが、顔と目を認識するプログラムではしっかり顔と両目の2つが認識されていた。OpenCVの認識精度はそこまでよくないので、換気扇などの目に見えそうなものにもマスク付けを行ってしまうことがあった。人の顔を認識してシャッターを切るプログラムでは最初にカメラを手で隠し、手をどかして自分を認識すると写真を撮影した。

3-2 yolo

Keras-yoloで解析を行う前の画像を画像1、行った結果を画像2に示す。上記の画像を見て分かるとおり、車と人間と自転車にそれぞれラベルがつけられており、左上に適合率が書かれている。なお、モデルには80種類の物体の画像にラベル付けがなされた「COCOデータセット」を用いて作成されたyolo.weightを使用した。

画像1

画像2

3-3 yoloの学習

VoTTから作成したオリジナルのweightデータを使って田中さんと自分の写った画像の解析を行った。結果は田中さんのみラベル付けが行われ、自分の顔にはラベル付けが行われなかった。また、自分のみの写った画像を解析した際には自分にしっかりとラベルがつけられた。これは学習元のデータに自分と田中さんの2人で写った画像を100枚程度しか学習させず、自分の画像データは別日に自宅で撮影したためだと考えられる。

4.まとめ

 私は新型コロナウイルスの影響で状況夏休みが短い中、このインターンシップのおかげでその夏休みを目一杯使って濃密な夏休みを過ごすことができた。Shannon Labのインターンシップは従来の企業とは違い、自分で目標を決めるところからスタートする。そして、その目標に向けて自ら調査をし、詰まったところは社長に聞かず、自分で質問サイトを用いて質問も行う。この経験で私は自分で問題を解決する力を養えたと思う。