AIの「眼」を持つロボットが、農業の新たな地平を開く

高齢化の進行による人手不足など、農業を取り巻く環境は厳しさを増している。こうした問題を解決する切り札として期待されているのがロボットだ。デンソーは、三重県の浅井農園と協力して、トマト収穫ロボット「FARO(ファーロ)」の研究を進めている。ロボットの「眼」となる画像認識技術は、どのように開発されているのだろうか。

長谷川 貴巨
生産技術部
2006年デンソー入社。大学時代の専攻は知能ロボット研究。
入社後は、ICT技術部でカーナビゲーションシステムの回路設計を担当。
2014年から社内公募でロボティクス開発室に異動し、農業用ロボットのソフトウェア・AI画像認識の開発に従事。現所属は、生産技術部。

すべては工場の空きスペースの実験室から始まった

長谷川さんは、元々カーナビのハードウェア開発を担当されていたとお聞きしました。カーナビから農業ロボットのソフトウェア開発とは、だいぶ異なる分野に転向されたのですね。どういったきっかけがあったのでしょうか?

長谷川:大学時代はロボットの知能について研究していたのですが、デンソーに入社してからはカーナビのCPU基板の回路設計を行うようになりました。カーナビの仕事にもやりがいはありましたが、作った製品とエンドユーザーとの間に距離があることが気になってきたんですね。製品が完成するころには、自分はもう別の製品開発に取りかかっていて、お客様から直接フィードバックをいただく機会もない。また、今後の製品ではハードウェア、ソフトウェアをそれぞれ開発するのではなく、両者が高度に融合していくことになるだろうと考えていました。
そんな時、「人の役に立つロボット」プロジェクトの社内公募があったのです。大学時代のバックグラウンドも活かせるだろうと、思い切って飛び込んでみました。

農業ロボットを開発するということは決まっていたのですか?

長谷川:大学との共同研究で、トマトの収穫を行うロボットを開発するということだけは決まっており、社内に上司はいたものの、ソフトウェア開発担当は私一人という状況でした。
そこでまずは、全国の農家の方にお話を聞かせていただき、農業体験をさせていただくところから始めました。実際に私たちメンバー自身が農業を理解し、収穫時に難しいポイントはどこかを考えるべきだろうと。
そして上司に頼んで、デンソー本社工場の空きスペースを実験室として使わせてもらいました。ダミーのミニトマトを手作りして実験室の中にぶら下げ、ロボットに収穫できるかどうか試しては、ソフトウェアを改良するということを繰り返しました。

工場の空きスペースを活用した実験室
工場の空きスペースを活用した実験室

「現地現物」、農園とタッグを組んでロボットを開発

ある程度めどが付いてきたところで、実際の農園でもテストを行ったのですか?

長谷川:はい。けれど、やはり実験室と現実の農園では、ギャップがすごく大きいんですね。そこで痛感したのは、農園にきちんとパートナーになっていただくことの重要性です。
掃除ロボットをお使いの方はお分かりでしょうが、部屋が片付いていないとロボットはうまく掃除してくれません。同じように、ロボットで農作物を収穫するためには、ロボットの性能を上げるだけでなく、ロボットが働きやすい環境になるように、農園側からロボットに寄り添ってもらうことが不可欠なのです。トマトの株を決められた高さに揃える、実の向きを揃える、そういった農業技術を持っている農園を見つける。そして、ロボットのために環境を整備する必要性を理解していただき、共同開発のパートナーとして参加いただく。
トマト自動収穫ロボット「FARO(ファーロ)」の開発では、三重県の浅井農園にご協力いただきました。デンソーと浅井農園は合弁会社のAgriD(アグリッド)を設立し、4ヘクタールの農業用ハウスでFAROの実験を行っています。

トマト自動収穫ロボット「FARO」
トマト自動収穫ロボット「FARO」

現実の課題を、農園と一緒に解決していったと。

長谷川:実際に現地に足を運び、しっかりと現状を把握して解を追求するという「現地現物」を大事にしながら、実験環境についても農園と一緒に作り上げていきました。農園側の管理はどこまでできるのか、ロボット側でどこまで実現できるのか。そのあたりをお互いに理解し合い、株の高さや実の向きなど、複数の重要な項目については定量化を行って合意するという活動を最初に行いました。
ロボットもプロトタイプ段階からデモを見ていただくようにしました。初期のものはレベルが低く、お見せするのは恥ずかしかったのですが、「ロボットはここまでしかできない」ということを理解していただくことが重要だと考えたからです。例えば、「裏側に成っている実はアームの構造上どうしても取れない」といったことを説明し、農園に協力をお願いしました。
ミニトマトの栽培では、ハウスの上部にワイヤーを張り、そこから誘引紐を垂らしてトマトの茎を直立させる「ハイワイヤー方式」が採られます。クリッパーという補正器具を使うことで、茎の向きを揃えることができるのですが、そうした新しい技術も農園に導入してもらいました。
早い段階でプロトタイプを作り、関係者のコンセンサスを作り上げていくことは非常に重要だと思います。

現場の試行錯誤で、使える画像認識をソフトで実現

ロボットの開発に使われているソフトウェアについて教えてください。

長谷川:FAROには、デンソーウェーブ製のロボットアーム(VS-060)と産業用PC (IoT Data Server)が搭載されています。IoT Data ServerのOSはLinux(Ubuntu)で、ROS(Robot Operating System)とよばれる、ロボットソフト開発で広く使われているミドルウェアを使用しています。
プログラミング言語は、C++、Pythonが中心で、AIに関してはフレームワークとしてTensorFlow、PyTorchといった複数のフレームワークを使用しています。

ロボットのソフト開発には、実機に加えて同じくデンソーウェーブ製のロボット統合開発環境(WINCAPS III)とエミュレータ(VRC)も活用しています。これらに農園で取得したデータを組み合わせることで、PC上に農園を再現したシミュレーション環境を構築しています。

農園を再現したPC上のシミュレーション環境
農園を再現したPC上のシミュレーション環境

ロボットの開発において、特に苦労されたのはどういったところでしょうか。

長谷川:画像認識の精度がなかなか上がっていかなかったことですね。ミニトマトの画像認識では、2つ大きな課題がありました。
1つは、不定形な対象物を正確に認識すること。工業製品だと、対象物の形状はあらかじめ決まっていますし、認識を行う条件も揃っています。ところが農園の場合、対象のミニトマトはみんな形状が違いますし、光などの条件もバラバラです。
もう1つは、「果柄(かへい)」の検出です。ミニトマトの房は細い果柄で茎からぶら下がっており、ロボットはこの果柄を切ってミニトマトの房を収穫します。果柄は太さが2、3ミリメートル程度しかないため、日光下では透けてしまって正しく検出できないという問題がありました。

どのように解決されたのでしょう?

長谷川:カギとなったのはやはりAI、ディープラーニングの技術です。FAROでは、障害物検出、房の検出、熟度判別、果柄検出という機能ごとに、異なる多数のAIモデルを用いて画像認識を行っています。論文を読み込み最先端のAIモデルも実装して、評価比較を行っています。

障害物と熟度の判別には、CNN(Convolutional Neural Network)ベースの画像判別AIモデル、房と実の位置検出には、物体検出のAIモデルを使っています。果柄検出は、ピクセル単位で正確な位置検出を行うためセマンティックセグメンテーションと呼ばれる画像認識技術を使用しています。特に、難易度の高い日光下の果柄検出は、デンソーの計測技術部と独自開発した補完アルゴリズムを組み合わせることで実現しています。

ただ、AIモデルを単純に適用しても、実際の農園ではなかなか精度が出ません。ディープラーニングのモデルの学習には、ハイパーパラメータというモデルの性能を大きく左右するパラメータがありますが、それらをどう調整するか試行錯誤しながら学んでいく必要がありました。

優れたAIモデルを見つけるために工夫されたことはありますか?

長谷川:私一人でAIモデルを開発するのは限界があり、プロジェクトメンバーの力を借りました。ディープラーニングなどの機械学習の分野では「Kaggle(カグル)」というコンペのプラットフォームが有名なのですが、これにならってチーム内コンペを開催することにしたのです。
今までディープラーニングについて学んだことがなかったチームメンバーに、基本的な知識を教育して競わせ、一番優れた精度のモデルをロボットに搭載することにしました。本家のKaggleでは賞金が出ることがあるのですが、残念ながら我々のチームでは、今のところ賞金はなしです。
チームの中では私が一番ディープラーニングに詳しかったので、自分がぶっちぎりで優勝するつもりだったのですが、第1回目のコンペで無様に敗北してしまいました。
教科書的なノウハウに従うならパラメータを大きくした方がうまく行くはずなのに、メンバーによっては勘を働かせて逆にパラメータを小さくすることで良い性能を出したりするのです。これは理屈に合わないと思いつつさまざまな論文に当たってみると、場合によってはそうした方が良い結果が出ることもあり得ると分かったりしました。定石となっているやり方が必ずしもよいとは限らず、農業ならではのチューニングが必要になってくるのは面白いところです。もしかするとAIモデル作りには知識量だけではなく、職人芸的な勘も必要なのかもしれませんね。

AIを用いてトマトの房検出・熟度判別を行っているところ。房が認識されているだけでなく、個々の実の熟度も表示されている。
AIを用いてトマトの房検出・熟度判別を行っているところ。房が認識されているだけでなく、個々の実の熟度も表示されている。
独自開発した補完アルゴリズムによって、細い果柄の検出も可能になった。
独自開発した補完アルゴリズムによって、細い果柄の検出も可能になった。

ディープラーニングでは、AIモデルの学習に使うデータに適切なラベル付けを行う「アノテーション」が重要だとお聞きしました。アノテーションに関して、何か工夫された点はありますか?

長谷川:毎日ロボットのテストを行ってデータを蓄積し、それらデータのアノテーションを行いつつ、AIモデルを改良してロボットに搭載してまたテストというサイクルを回しています。特に、果柄の検出に用いたセマンティックセグメンテーションはピクセル単位で物体の検出を行えるのですが、正確な検出を行うためにはアノテーションもピクセル単位で行わなければなりません。作業が膨大だったので、20名ほどのプロジェクトメンバー全員に毎日1人100枚のノルマを約一ヶ月お願いしました。
アノテーションの作業をアウトソースすることもよく行われていますが、意外にこの作業は難しいのです。果柄のラベル付けを行うにしても、どの部分をどこまで塗りつぶすのか人によって違っては困るので、明確な判断基準を決めないといけません。ある程度ルールを決めて作業を進めていても、途中で例外が出てきたりする。あまり大きくルールを変えると、後から全部やり直しになってしまいますから、この塩梅をどうするかは悩みました。それでも、精度向上のためにアノテーションをやり直さなければならないことが2回ほどありました。
アノテーションはAIモデルの認識精度に直結するため、いい加減なやり方をされるとまずい。そこでメンバーのモチベーションを上げるため、アノテーションの進捗状況と認識精度の情報を共有するようにしました。きちんとAIに教えることで、どんどんAIが賢くなっていく、その様子を可視化することで、AIを育成している気分になれるよう工夫しました。
AIがちゃんと育っていることに対して、感謝する気持ちを込めて1枚ずつアノテーションをするため、我々はこの作業を「感謝のアノテーション」と呼んでいます。

学習が始まったばかりの、あまりかしこくないAIの認識結果。果柄がうまく認識されていない(緑色に塗られた部分)。
学習が始まったばかりの、あまりかしこくないAIの認識結果。果柄がうまく認識されていない(緑色に塗られた部分)。
学習が進み、トマトを完全に理解したAIの認識結果。細い果柄が正確に認識されている。
学習が進み、トマトを完全に理解したAIの認識結果。細い果柄が正確に認識されている。

アノテーションしたデータ、およびAIに関するノウハウは、すべてクラウド上のConfluenceというWikiシステムに蓄積し、開発したソフトウェアは、Git(ソフトウェア開発でデファクトのバージョン管理システム)で管理しています。Gitのホスティングサービスとしては、GitHub Enterpriseを使用してソフトウェア開発をしています。GitHub上でPull Request(ソフトウェアのアップデートのリクエスト)をトリガーに、GitHub Actionsによる自動テスト(CI)が走り、ソフトウェアの問題点が自動的に抽出されます。開発したコードがすべてのテストを通って初めてソフトウェアのレビューを行うという開発プロセスになっています。
これらのソフトウェア開発に必要なインフラの構築は、以前在籍していたICT技術部でクラウドサービスの活用を推進していた同僚の藏本に全面的に協力してもらいました。これらのインフラは、ソフトウェア開発を効率化するためには、なくてはならない重要な存在です。

農業ロボットソフトウェア開発チームのGitHubリポジトリ。コードを更新すると自動的にテストが走るようにして、開発効率を高めている。
農業ロボットソフトウェア開発チームのGitHubリポジトリ。コードを更新すると自動的にテストが走るようにして、開発効率を高めている。

現在の収穫能力はどのあたりまで来ているのでしょうか?

長谷川:AIモデルの認識に関しては、障害物検出の精度が当初の65%から98%へ、房の検出速度が3秒から1秒へ、熟度判別の誤差が2クラスから1クラスへ、そして果柄検出精度が50%から92%へと大幅に向上しました。
これに伴い、収穫の成功率も向上しています。ミニトマトのハウスは1レーンが80メートルほどありますが、うまくいく時には90%を超える成功率となっています。ただ、畑の管理が想定外の場合には60%程度に下がってしまうときもあり、バラツキはあります。
収穫速度をどう定量化して表すのかは今まさに議論しているところですが、理想的な条件であれば1房20秒くらいで収穫できています。

トマトを収穫するFARO。AIモデルによって認識したトマトの位置情報をもとに、ロボットアームの軌道を生成、それに基づいてアームを動かし収穫を行う。トマトの茎などが障害物になるため、障害物を避ける軌道を生成している。
トマトを収穫するFARO。AIモデルによって認識したトマトの位置情報をもとに、ロボットアームの軌道を生成、それに基づいてアームを動かし収穫を行う。トマトの茎などが障害物になるため、障害物を避ける軌道を生成している。

ターゲットは、世界の農家

農業ロボットの今後の展開について、教えていただけますか?

長谷川:FAROの収穫成功率はだいぶ上がってきたので、これからは実用化に向けて使いやすさの向上も図ろうとしています。例えば、収穫速度を上げるために採りにくいトマトは早く見切りを付けるといったことですね。農家によるモニターテストも進めていただいています。
現在FAROが対象にしているのはミニトマトですが、大玉、中玉トマトを収穫したいというニーズは国内外で大きいですから、こちらにもチャレンジしていきたいと考えています。収穫以外にも、葉っぱを除去する「葉かき」など、ロボットに任せたい農作業はたくさんあります。

海外への展開も考えられているのでしょうか?

長谷川:海外からも収穫ロボットの引き合いは多いですね。オランダにはセルトンという施設園芸会社があり、2020年4月にデンソーはこの会社に出資をして協業していくことになりました。
COVID-19の影響で現地に行くことはできなかったのですが、日本からリモートログインし、現地の社員をサポートしてロボットのテストを行うという取り組みも始めています。

リモートログインしたオランダのFAROのカメラ画像
リモートログインしたオランダのFAROのカメラ画像
オランダ現地で働く、デンソーとセルトンの社員(写真左がデンソー伊藤 写真右奥がセルトンNick)。
オランダ現地で働く、デンソーとセルトンの社員(写真左がデンソー伊藤 写真右奥がセルトンNick)

ミニトマト以外の農作物を収穫する場合、AIモデルなども変える必要があるのでしょうか?

長谷川:中玉トマトに関しては、現在のAIモデルでもうまく認識できています。ただ、大きなトマトでは実を1つずつ採ることになるため、画像認識以外にもより高度なロボット制御を行わなければならず難易度は上がります。
ほかにもブドウやキャベツなどを収穫したいという要望があり、そうなるとまた違った学習の仕方が必要になってくるでしょう。ただ、キャベツの画像認識に関しては、ミニトマトで使っているAIモデルを、今まで培ったノウハウを使って学習し直すことで、短期間で高い性能を実現することができました。これは、AIの知識も経験もなかった去年の新入社員の石川が、約半年で実現してくれました。
画像認識だけをコンポーネントとして切り出し、ビジネスとして展開することもできるかもしれません。

AIによるキャベツ認識。画像認識技術に関しては、ミニトマトに使っているものを流用している。
AIによるキャベツ認識。画像認識技術に関しては、ミニトマトに使っているものを流用している。
キャベツ畑で自動収穫機に腰掛けてデバッグ中の石川。キャベツが写真のような生育状況にある時期、畑は極寒である。
キャベツ畑で自動収穫機に腰掛けてデバッグ中の石川。キャベツが写真のような生育状況にある時期、畑は極寒である。

ロボット開発の面白さはどういうところだと思いますか?

長谷川:ロボット開発は、最先端技術の総合格闘技だといわれることがあります。AIなどのソフトウェア面だけでなく、ハードウェアの制御も行う必要があるので、技術的な面白さがあり、エンジニアのスキルも伸びますね。
農業ロボットの開発では農園でのテストを繰り返すため、夏は暑いし、夜になったら寒かったりもします。環境は厳しいのですが、エンドユーザーとの距離が近いですから、やりがいがあります。そうそう、おいしい農作物を食べる機会が多いので、食べることが好きな人には向いている仕事だと思いますよ。

FAROによって初めて1レーンを自動収穫できたときのミニトマト。
FAROによって初めて1レーンを自動収穫できたときのミニトマト。

エンジニアには、幅広い知識が求められそうですね。

長谷川:ディープラーニングなどのソフトウェア技術はもちろん重要ですが、そうした技術もお客様に価値を届ける上での1つの要素に過ぎません。自分はソフトウェアエンジニアだから、ハードウェアエンジニアだからと壁を作るのではなく、自在に壁を飛び越えることがロボット開発では重要です。私自身、社内公募でロボット開発の部署に異動したとき、多大な苦労を覚悟の上で、ハードウェアエンジニアから、ソフトウェアエンジニアにキャリアチェンジしました。それでも最初は予想以上に苦労しましたが。
あとは、チャレンジする面白さでしょうか。あるメーカーは新しい掃除機を開発するために試作品を5000台作ったそうです。私もFAROの開発では100回くらい失敗しているのですが、まだあと4900回くらいは失敗しないといけませんね。

FAROの開発に携わり、多くの苦難を一緒に乗り越えてきた社内外のチーム。FAROの開発に携わり、多くの苦難を一緒に乗り越えてきた社内外のチーム。
FAROの開発に携わり、多くの苦難を一緒に乗り越えてきた社内外のチーム。