“殺人アリ"ことヒアリが日本に上陸したらしい。
Twitterではヒアリかどうかを判別してくれるヒアリ警察が人気だが、画像認識ではなく、中身は人間の専門家のようだ。ヒアリ警察さんも24時間365日稼働できないと思うので、Deep Learningで実装できないのか模索してみる。
先行事例
IBM Watsonはデフォルトでfire ant(ヒアリ)に対応。 dotnsf.blog.jp ただ、ヒアリ警察さんで紹介されている代表画像をかませてみたところ、全てのアリを識別できるわけではなかった。
アリのデータセットAntWebというのもあるらしい upura.hatenablog.com サイトのつくりが少し見辛い。 ざっとみた感じあくまで掲載論文のサーチが主眼のようなので、画像は少なめ。
IMAGENETにもfire antカテゴリあり Fire ant
こちらは画像が豊富にある他、クモ等、アリに見た目が近い生物の画像も集まるので、本格的なデータセット作成には最適か。
今回は訓練済みモデルでどこまでできるか確認してみる。
YOLO9000でヒアリ検出
YOLO9000は高速な物体検出が可能なYOLOを拡張したモデルで、IMAGENET内の9000カテゴリに属する物体が画像内に写っているかとその位置を同時に検出可能。GitHub上で実装も上がっている。
調べてみたところ、fire antも9000カテゴリの中に含まれるので今回はこれを使用する。 GitHub - philipperemy/yolo-9000: YOLO9000: Better, Faster, Stronger - Real-Time Object Detection. 9000 classes!
取説通りにコードと重みをダウンロード、コンパイル (Macだとmd5sumはなくmd5)
git clone --recursive git@github.com:philipperemy/yolo-9000.git cd yolo-9000 cat yolo9000-weights/x* > yolo9000-weights/yolo9000.weights # it was generated from split -b 95m yolo9000.weights md5 yolo9000-weights/yolo9000.weights # d74ee8d5909f3b7446e9b350b4dd0f44 yolo9000.weights cd darknet git reset --hard b61bcf544e8dbcbd2e978ca6a716fa96b37df767 make # Will run on CPU. For GPU support, scroll down!
dataディレクトリ内に適当なアリ画像を入れて実行する。 ただし、デフォルトの検出閾値は高すぎて、何も出力されない画像が多かったので、threshに0.05を入れている。
./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg ../yolo9000-weights/yolo9000.weights data/ant.jpg -thresh 0.05
結果
残念ながらYOLO9000だけではテスト画像を上手く認識できませんでした。
Imagenetの画像
fire ant: 29% fire ant: 5%
無事ヒアリとして認識された。
ヒアリ警察さん紹介の代表画像
whole: 6% arachnid: 16%
arachnid(クモ形類動物)として認識。
- シリアゲアリ(女王アリ)
insect: 8% hymenopterous insect: 15% living thing: 6%
hymenopterous insect(膜翅類の昆虫)として認識。 膜翅目にはアリやハチが含まれる。
- シリアゲアリ(ハタラキアリ)
arthropod: 12% food: 6%
arthropod(節足動物)として認識。
*ケアリ(女王アリ)
dipterous insect: 27%
dipterous insect(双翅目昆虫)として認識。
所感またはFuture Work
YOLO9000だけではヒアリの一発識別は辛かったものの、昆虫の位置検出としては優秀。 Imagenetに訓練画像はあるのでYOLO9000で大まかに位置を当ててから個別のアリ識別をすれば実現可能か。