🍏

農業の選別機や収穫ロボットの「目」に基盤モデルを応用したらどうなる?

2022/12/21に公開

はじめに

こんにちは、この記事は基盤モデル×RoboticsのAdventCalendarの21日目です!
基盤モデルについては初心者ですが、何やらすごいAIが登場したぞ!ということで自分なりに調べて今回記事を書かせていただきました(間違っている部分もあると思いますので、その場合はコメント等でご指摘ください)。

https://qiita.com/advent-calendar/2022/robot-ai

私は普段、農業の外観選別機や生育観察、収穫ロボットなどへ画像系のAIを応用する研究をしています。
そして研究柄、いろんな生産者の方や現場へ出向いてデータ収集&ディープラーニングでYOLOなどの物体検出AIを自作しています。

今回は、こうしたロボットや農業機械に搭載されている「目」、つまり画像系AIの現状の課題と基盤モデルへの期待についてお話します。
農業での応用事例にフォーカスしていますが、それ以外の分野にも当てはまることだと思いますので是非最後までご覧ください!

基盤モデルとは

基盤モデルとは、文章や音声、画像など様々なタイプのデータを大量に使用して学習した大規模モデルです。
これまでのAIは特定のデータで学習して限定的な用途に対応していましたが、基盤モデルはそのまま推論させたり追加データでファインチューニングすれば様々なタスクに汎用的に活用できるようです。
詳しくは@MeRTさんが記事にまとめられているため、是非ご参照ください。
https://trail.t.u-tokyo.ac.jp/ja/blog/22-12-01-foundation-model/

AI開発がディープラーニングで簡単になった

2010年代半ばから、ディープラーニングやビックデータなどの登場で第3次AIブームが起きました。
このAIブームの注目点は、プログラムやアルゴリズムに詳しくなくても簡単にAIを開発できるようになったことです。
AIに判別させたい対象物が写っているデータを用意してラベル付けして、PytorchやTensorflowなどのフレームワークを活用すれば、ディープラーニングで簡単にAIを作れるようになりました。

物体検出AIの基本的な作成フロー

私がAIを農業へ応用する研究を始められたのも、こうしたAI作成の容易化のおかげです。
さて、簡単にAIを作れるようになったのは良いものの、ディープラーニングはディープラーニングで色々課題があります。

これまでのディープラーニングの課題

農作物の選別機や収穫ロボットには、カメラで撮影した映像から農作物を検出するタスクがあります。
単に農作物を見つけるだけでなく、良品や不良品へ複数のクラス分類をする場合もあります。
このように「見つける&分類する」AIを物体検出AIといい、最近ではYOLOv7[1]などYOLO系がメジャーです。
選別用の物体検出AIを作るなら、対象の農作物のデータを集め、分類カテゴリーを決めてラベル付けします。
そして、そのデータでディープラーニングをすれば、選別用の物体検出AIの出来上がりです。
あとは、分類ラベルや座標の内容によってエジェクタやエンドエフェクタへ信号を送ればタスク完了となります。

枝豆を選別する物体検出AIの例

ここからは、私が選別用や収穫ロボットの物体検出AIを開発して分かってきた課題を、枝豆を中心にいくつかあげていきます。

  1. 農作物ごとにデータ収集とAI作成をしないと精度が低下する
  2. 品種が変わると精度が変化する
  3. 後から分類項目を変更しにくい

1について、枝豆の選別用物体検出AIを例にあげます。
枝豆のデータだけで学習した物体検出AIは、基本的に枝豆の選別にしか応用できません。
他の農作物へ転用した場合、誤分類が多発します。
次の図は、枝豆のデータで学習したYOLOv7に、良品の栗とブルーベリーを選別させた例です。
AIは正しく栗とブルーベリーを検出できましたが、「good(良品)」ではなく「bad_color(変色)」や「bad_shape(形状不良)」のカテゴリーへ誤分類してしまいました。

枝豆で学習したAIに良品の栗とブルーベリーを選別させた例

この結果は、学習データに栗やブルーべリーを含んでいなかったので当たり前といえば当たり前ですね。
この問題点は、対象の農作物のデータをすべて集めないといけないことです。
YOLOなどの物体検出AIは、「形状不良」や「変色」、「割れ」といった概念を学習しているわけでなく、あくまで学習データの画素情報から検出・分類に必要な特徴量を抽出できるように学習しているにすぎないのです。
トマトやリンゴなどメジャーな農作物はデータが集まりやすいですが、メジャーではない農作物の場合、開発コストや時間がかかることが懸念されます。

2について、AIは学習データに含まれていない品種の選別をさせると精度が低下します[2]
同系統でほぼ外観が一致している品種でも、精度低下が起きます。
1で書いたように、YOLOなどはディープラーニングで画素情報から分類に必要な特徴量を抽出できれば良いので、選別に関係ない品種固有の外観情報も分類に必要な特徴量にしてしまいかねません。
こうしたことから、単に学習データを大量に集めればよいという問題ではなく、品種など外観に関するバイアスを考慮した学習データ収集が求められます。

3について、物体検出AIを作成するには、通常学習データにラベル付け(正解情報の付与)をします。
枝豆の選別用AIなら、VoTTなどのアノテーションソフトで画像や動画に写っている枝豆を囲ってどの品質かラベルを付けします。
問題点は、後から分類項目の変更が難しいことです。
例えば「変色」と「虫食い」という分類項目があったとして、それらを「変色」へ統合したい場合や、「変色」をさらに「病気」と「枯れ」へ細分化したいとします。
すると、アノテーションの分類ラベルもそれに合わせて変えなければならないので、アノテーションをやり直すかアノテーションデータを修正します。

分類項目の変更例

分類項目を変更すると、データセットが大規模化した場合に修正がより大変になること、そして修正していないそれまでの学習データを二次利用できなくなるデメリットがあります。
ディープラーニングで作成するAIは学習データが増えれば精度が向上するスケールメリットがあるので、これは大問題です。
最初から分類項目を厳密に決めておけばよいのですが、AIの運用中に変更の要望が出ることや、地域の出荷規格の違いで変更せざるを得ない可能性があります。
また、農作物ごとに選別項目や基準が異なるので、仮に1の問題が解決できても、分類項目が違えば農作物ごとにAIを作らなければならないことには変わりありません。

以上が、ディープラーニングで作成したこれまでの物体検出AIの主な課題でした。
AIが農業分野で応用されにくいorスケールしにくい背景に、これらの問題点が大きく関わっていると考えます。
農業分野はAI人材が少ない一方で、応用する農作物は山のようにあります。
そんな中で、私は基盤モデルがこれらの問題のブレイクスルーになると予想しています。

基盤モデルを応用したらどうなるか

これまでの物体検出AIの問題点は、先述したように、「形状不良」や「変色」、「割れ」といった概念を学習・理解しているとはいえないことです。
もしAIが良品・不良品の分類に必要なこれらの概念を理解しており、さらに各農作物がどういうものか理解していれば、様々な農作物の選別や収穫へ応用可能な汎用的なAIを作れるはずです。

ここで、基盤モデルに話を戻します。
基盤モデルは、多様な大規模データセットで学習しているため、「形状不良」や「変色」、「割れ」などの概念を表現できるはずです。
そこへ、各農作物の基本的な形状をファインチューニングすれば、1つのAIで「枝豆の変色」や「栗の割れ」といった表現ができるようになり、汎用的に農作物の良品・不良品を判別できるAIが出来上がる可能性があります。
図で表すと次のようになります。

基盤モデルを応用した選別用AIのファインチューニング&推論のさせ方

この方法だと、品種の問題や分類ラベルの問題も解決できるのではないでしょうか。

折角なので、今回はStableDiffusion[3]を基盤モデルに見立てて、野菜と果物の良品・不良品の画像を4パターン生成してみました。
StableDiffusionは文章から画像を生成するAIで、大規模データセットで学習されているため様々な表現が可能となっています。
StableDiffusionが「〇〇の形状不良」といった表現をできるなら、あとは先ほどの仮説のとおり、各農作物の名前と画像を対応させてファインチューニングすれば基盤モデルベースの汎用AIを作れそうです。
StableDiffusionの実装は、こちらの記事を参考にしました。
こちらのサイトからでも簡単に試せますので、興味がある方はぜひお試しください。

StableDiffusionへの入力内容は次の通りです。

  • good appearance vegetable or fruit, not defective
  • defective shape appearance vegetable or fruit, not good product, distorted in shape
  • defective crack appearance vegetable or fruit, not good product, crack, broken piece
  • defective color appearance vegetable or fruit, not good product, disease, insect infestation, withered

良品、形状不良、割れ、変色の野菜や果実を文章で表現して、StableDiffusionへ入力しました。
そして、生成した画像がこちらです。

StableDiffusion2.0で生成した良品・不良品の野菜や果物の一例

出力された画像について、それぞれに簡単に解説します。

  • 良品:傷などがなくツヤっとした野菜や果物を表現できている
  • 形状不良:湾曲や凸凹、しわを表現できている
  • 割れ:割れて中身が見えている状態や亀裂、皮が破れている状態を表現できている
  • 変色:黒い斑点や赤黒い変色、黒ずんだ状態を表現できている

…と、文章から画像へ良品・不良品の特徴を描写できていますね!
今まで多種多様な用品や不良品のデータをたくさん集めていましたが、今後基盤モデルを容易に使用できるようになれば大幅にデータ収集が楽になり、汎用性の高いAIモデルを開発して選別機や収穫ロボットに搭載できるようになるかもしれません。
そして、これまで収穫や選別の自動化が進んでいなかった作業の省力化や収穫・選別データの二次利用などが本格的に行われるようになるかもしれません。

終わりに

ディープラーニングやYOLOなどの物体検出AIの登場で、農業だけでなく様々な分野でAIの利活用が盛んに研究されるようになりました。
しかし、人手で大量のデータを集めることや、AIの対象が限定的であったりと、まだまだボトルネックはたくさんあります。
基盤モデルは、そうした現在の物体検出AIのボトルネックを解消できるかもしれません。
基盤モデルはまだ一部の企業や研究機関でのみ開発・試用されていますが、そのうちGoogleColabやGitHubなどを通じてだれもが簡単に利用できるようになるはずです。
これから基盤モデルがどう発展していくか楽しみです!

脚注
  1. https://arxiv.org/abs/2207.02696 ↩︎

  2. https://cir.nii.ac.jp/crid/1520853834894657024 ↩︎

  3. https://huggingface.co/blog/stable_diffusion ↩︎

Discussion