目次
AI を用いて観賞魚の品種識別のまとめ
-
AI はもはや普通の人間を超える性能を発揮している
-
深層学習系の手法がメジャー
-
デバイスは2 万円〜から利用が可能
前振り
仕事がらAIについて調べております。調べると言ってもプレスリリースを漁るといったものではなく、主に公開されている論文やソースコードを読みこなして自力でAIを構築できるように取り組んでいます。
そんなわけで機械学習や深層学習については一通りの知識を仕入れまして、研究室時代の友人からの相談にアドバイスなどしておりました。
魚の品種識別ってできるんか?
その相談の内容というのが観賞用の魚の品種をAIでなんとかしたい!というものでした。
はじめはふんふん、ときいて、あれしたらいい、これしたらいいと言っていたのですが、彼もそういったやり取りに疲れたのでしょうね。もう、お前が直接やってくれや!という話になりました。
そこで友人からクライアントを紹介されました。
そのクライアントというのは観賞用の魚専門の販売店を作りたいという方でした。
さて、事業計画は練った。
融資も通った。
仕入れ先も当てがある。
ところが商品の目利きをするのが大変だ、となって困っていたわけです。
当面は玄人のおじいさん達が目利きをしてくれるとしても、この人達の後継者をどうするか?という問題もあります。
つまり魚の目利きは将来的には絶対に避けられない問題なのです。
そこでAIで一つ、どうにかならんか?とお鉢が回ってきたのです。
コツコツと勉強してきた知識を実際に困っている人の問題解決のために使う。
エンジニア冥利に尽きます。
そうして魚の品種を自動で識別するプロジェクトがスタートしました。
ホンマにできるんかいな?
さて、正直に申し上げますと、私、魚の品種識別など経験がありません。
ですから、まず調べました。今まで勉強してきたAIは魚も対応しているのか?と。
顔認識はiPhoneで標準採用されましたし、空港の税関などでも利用されています。
ですから、まあ人間には適用出来るんだろうな、という見通しは立っていました。ところが魚!魚ですよ?皆さん魚の区別がつきますか?私はほとんどつきません。
というのも私の実家では魚料理がほとんど出てこなかったということもあり、そもそも馴染みが薄いものなんですよね。
ですから、私という人間は魚の目利きなど全くできません。
ここで私自身の魚に対する目利きや知識が必要になるのであれば、今回のプロジェクトは頓挫していたはずです。
ところが!今回の主役は!AI!計算機とそこで扱われるモデルです!ということで魚に詳しい画像識別モデルについて調べてみました。
https://www.wantedly.com/companies/uuuo/post_articles/177281?auto_login_flag=true#_=_
先行事例がありました。
ということは、実現可能なことが分かりました。
次はモデルの選定です。
安い早い上手い
さて、深層学習系の画像認識モデルはすでに学習済みのものが公開されていることが多いです。
学習に使われる画像データセットとしてはImageNetが使われることが多いです。
そのデータセットを使ってモデルに画像識別を学習させるわけです。
このデータセットには魚も含まれており、利用するにあたっての安心材料になりました。
肝心の精度は2015年時点で人間の誤り率3〜4%を下回りました。
つまり、下手に人間に任せるよりも上手くやってくれるということですね。
https://xtech.nikkei.com/atcl/learning/lecture/19/00065/00002/
学習済みのモデルは公開されていることが多く、それはメジャーなライブラリであるKerasやpytorchであればなおさらのこと。
そして学習済みのモデルをチューニングして固有事例に適応させ、精度の向上が見られることは多くの論文が示唆しています。
つまり、あとはいい感じにモデルサイズが小さくて、計算コストが低く、精度の高い、そんなモデルを見つければよいのです。
となればエッジデバイス向けに開発されたモデルを選べば間違いない。
今回はXceptionを採用しました。
いざ学習
学習にはGPUが必要となるため、Google Colaboratoryを利用しました。
Kerasの環境も整っているので、教師データのインポート作業を行うだけで学習を始めることが出来ました。簡単。
結果の傾向としては
-
教師となる画像の枚数が少ないものに対しては精度が低い
-
外見が酷似した品種間では予測に迷うことがある
といったことが分かりました。
予測精度については教師データの枚数を増やすことで実際に改善が見られました。
なので目標水準を達成するために必要なのは教師データの拡充であることが確かめられました。
祭りの終わり
プロジェクト自体はスケジュール的な都合もあり、すべての目標値を達成するまでには至りませんでした。
しかし、今後も魚の品種識別の自動化に取り組んでいく上でのたたき台としては十分以上のものが出来たと思います。
さいごに
深層学習を使った魚の画像識別に取り組みました。
GPUは必須です。
学習自体はGoogle Colaboratory を利用すれば無料で出来ます。
実際の予測にGPUマシンを利用するかどうかの判断はUXをどこまで優先するかによるでしよう。