タイヤを識別するAIの開発に挑戦 ③
はじめに
こんにちは、タイヤマンです。
社内では日々の刷り込みが功を奏し、「アイアンマンといえば、大坂。大坂といえば、アイアンマン」とまで言われるようになりました。
僕のトニーがスタークする日も近いです。
今回のテーマ
前回までに、ほぼ100%の精度でメーカーを判別するAIを開発しました。
前回までの記事はこちらをご覧ください。
タイヤを識別するAIの開発に挑戦 ①
タイヤを識別するAIの開発に挑戦 ②
今回は”領域抽出のプログラム”を作成していきましょう。
おや?「そもそも領域抽出ってなんやねん工藤」という服部が聞こえてきますね。
もちろんお答えしますとも。
領域抽出とは
今開発しているこのアプリケーション「タイヤマン(仮称)」は、”撮影されたタイヤの写真からAIが様々な情報を読み取る”ことを目的としています。
タイヤマンAIは情報を正確に読み取れるようにたくさん学習して日々成長しています。
しかし、”撮影された写真”の中には”ノイズ”、要するに余計な情報(背景に写っているものや、タイヤ表面の傷/模様)が含まれていてAIは「どこを読み取ればええんや和葉」と混乱するわけです。
”領域抽出”というのは、「撮影された写真の、どの部分が読み取ってほしい場所か」を、AIに渡す前に事前に切り抜いて明示してあげる処理です。これを自動化する仕組みをざっくり”領域抽出”と呼んでいます。
今回試した3つの手法
「せやかて工藤、オレは領域抽出なんて知らんで。 どないせえっちゅーねん」 落ち着け服部。 パッと3つくらい思いついたので、チャッと試してみました。
① 灰色部分追従法
- •”タイヤ”は彩度が低く黒い、という特性を持っている。
- •画像の中から”その特性”を持った部分をマッピングして囲う方法
- •メリット:高速で単純
- •デメリット:画像内に同じ色のようなものが入ったらそれも認識
② 前景領域抽出法
- •被写体(タイヤ)は前景に来るはず、という前提に基づく。
- •画像の中から”その前提”を基に背景部分を除去し、除去した部分を消してズームアップする方法。
- •メリット:領域を取りやすい
- •デメリット:時間がかかる。タイヤ部分より前景らしさのある写真に対応できない
③ 円弧部分検出法
- •写真の中の”輪郭”を捉えた際に、タイヤの円弧は比較的連続的な”点の連続”として検出できる。
- •その連続している部分(ほとんど線)の抽出によりタイヤの検出を行う手法
- •メリット:確実にタイヤ部分の認識が可能
- •デメリット:線が途切れた際の考慮
④ 邪王炎殺黒龍波
- •自らの妖気を餌に魔界の黒龍を召喚できる。
- •それを放つことで相手(主に仙水)を倒す方法。。
- •メリット:すごく強い
- •デメリット:すごく疲れる(6時間寝る必要がある)
ひとまず
一通り社内で試してみて、手ごたえがあった「前景領域抽出法」で実装することにしました。今回の領域抽出プログラムの作成に利用するのはpythonと、トニーの明晰な頭脳のみ。シュシュっとコーディングで自動化です。
改良を重ねた結果、かなりの精度で”欲しい領域”の抽出に成功するプログラムを開発することができました。
これで服部が迷うこともなくなり、推理に集中できるはずです!
このように、AIのアプリでは単純に画像や文章を読み込ませるだけでは正しい推測が行われにくい、という課題があります。特に”写真”には情報が多すぎて、AIが混乱してしまうんですね。
そのため、取り込んだデータを加工して渡してあげる一工夫が必要なんです。
この技術自体に別のAIを実装することもありますが、今回の抽出プログラムには適用していません。
ただ、生成したAIを利用する「U-Net」と呼ばれる解析構築でこの領域抽出を解決できるらしい、というのを最近知ったので、さらに精度を高めるために次の課題で領域を抽出する際は、それに移行することを視野に入れています。
ついに
次回からいよいよ文字認識に入っていきますよ!本題ですね。
最後に、前回に引き続き今回の開発に利用している技術紹介を行っていこうと思います。
今回は、AI生成に利用したフレームワーク、TensorflowとKerasについてです。
“Tensorflow”と”Keras”(と”open source”)
今日は“Tensorflow(テンソルフロー)”と“Keras(ケラス)”を紹介したいと思います。
Tensorflowとは
Googleが提供する機械学習やディープラーニング向けのフレームワークです。
「フレームワーク」というのは、あるテーマに沿って開発された機能を使いやすくまとめたセットみたいなものです。
GoogleのMachine Intelligence研究所が機械学習やディープラーニングの研究を行う目的で開発しました。
今ではその成果が、オープンソースライセンス の下で、学生、研究者、エンジニア、開発者等に向けて広く公開されています。
「オープンソース」というのは、かなり大雑把な表現ですが簡単に言うと”開発したものを設計図から公開してしまう”ようなものです。利用も無料だし、改造もしやすい。
ゆえに、利用企業はプログラムを一から記述しなくても機械学習やディープラーニングを用いたシステムの開発が可能になります。
有志によってTensorflowは日々進化しています。層の数が多い複雑なニューラルネットワークモデルでも、高速な学習と推論を簡単に実装するためのツールも、数多く作られて公開されています。
今後、ソフトウェアとしての実績が蓄積すると、LSI化して高速化しようとする動きが出てくるそうです。TensorFlowはニューラルネットワークソフトウェアとしても定評がありますが、GoogleはTPU(TensorFlow Processing Unit)としてハードウェア化も図るとか。
オープンソース化しているため、世界中から様々な知見が日々集まり、進化を続けるソフトウェアなんですね。
kerasとは
Kerasは、もともとTensorflowとは別物でしたが”Tensorflowの一部”となったライブラリです。
感覚的にニューラルネットワークの構築をすることが可能で、初心者でも機械学習を扱うことが可能になります。
最後に
今回までで、メーカー判別の一連の流れは完成しました。
ただ、領域抽出はより高い精度が実現できそうなので見直したいです。
え?記事の後半が雑?完全に気のせいですよ!!
次回は、“記号解析”に取り組みます!!