AIの社会実装があたり前になりつつある今、便利で安全な生活に向けた取り組みが進んでいる。一方で、データをより高度に利活用していくためには、クラウド処理だけでなく、電力消費量や通信環境などの制限下でも安定的に稼働できるエッジAI技術のさらなる発展が不可欠だ。これに連動して、ソフトウェア開発だけでなく、LSI・FPGAをはじめとするハードウェア開発や、それらを担う人材の発掘・育成が急務となっている。 そうしたニーズに応えるべく開催されているのが「AIエッジコンテスト」だ。これまでの開催回数は計5回。数多くの応募が集まり、エッジAI技術を手がける人材を発掘するハブとなりつつある。 2021年10月18日~2022年2月15日に開催された第5回では、RISC-Vを搭載するプラットフォームへのAIアルゴリズムの実装をテーマに、処理速度・アイデアを競うコンテストが実施された。RISC-Vの使用が必須条件であるため、過去4回のコンテストと比較して難易度が高いコンテストとなっていた。 そんな本コンテストのアイデア賞に輝いたチームVertical_Beachのお2人に、本コンテストへの参加を決めた経緯や、取り組みにおける工夫点、今後の展望について率直に話を伺った。
▼動画はコチラ▼
大学時代から親交があった友人とともに、コンテスト参加を決意。
lp6mさん:本コンテストの第2回にも個人で参加していました。業務でハードウェアを扱うこともあるのですが、開発手法を最適化することが主な業務であるため、具体的な課題の解決方法を考える機会がほしいとずっと思っていたのです。しかし、結果は惨敗。時間が足りず、やりたかったことを十分にできないまま終わってしまいました。次はチームを組んで再挑戦しようと、学生時代からロボットの自動運転コンテストを通じて親交があったmedalotteさんに声をかけたんです。 medalotteさん:よく技術の共有をしていたlp6mさんに誘われて、これは面白そう!と参加を決めました。もし声をかけてもらっていなければ、コンテストに参加することはなかったかもしれません。 lp6mさん:参加を決めて課題の内容に目を通したところ、これはかなり腕が試されるぞと思いましたね。というのも、まず新たにトラッキングが課題に加わったことで前回より難易度が上がった上に、RISC-Vを実装する必要もある。それもただ実装すればいいのではなく、実装した上で命令拡張を行い、それに伴いコンパイラも作成しなくてはいけない。まずは提出を目指して頑張ろうと決めました。 medalotteさん:私も同じく、挑戦しがいがある課題だなと感じました。精度を出しつつ、処理速度も担保することを考えると、やるべきことは無限大にあるなと。ただ、時間は限られているため何をやるべきか慎重に選択する必要があり、特にRISC-Vをどう活用するかが鍵になるだろうと思いました。
得意分野を活かして、分担して作業を進めていくことができた。
lp6mさん:参加を決めてまず考えたのは、物体検出とトラッキングの進め方をどうするかということ。第3回のコンテストで1位を獲得された方が、物体検出とトラッキングを同時に行っていたのでそれを参考に並行して進めるか、DNNで物体検出を行った後、そのデータを元にしてトラッキングを行うか。どちらの開発方針にするか悩みました。相談した結果、相当時間に余裕がないとDNNのモデルを自作HW上にオフロードするのは難しいと判断し、後者で進めることに決めました。 medalotteさん:物体検出はlp6mさん、トラッキングは私が担当というように、分担して作業を進めることにしました。 lp6mさん:物体検出については、以前のコンテストでXilinx社のDPUを使った経験があり、また第2回のコンテスト入賞者の方がTiny YOLOv3 を使っていたので、Tiny YOLOv3より精度が高いTiny YOLOv4を使用することにしました。この部分については特に問題なくスムーズに進めることができました。 medalotteさん:その結果をもとに、私がトラッキング処理を担当しました。進めるにあたってまず、どんなトラッキングの手法が最適か調べることから始めました。学習が必要なアルゴリズムを採用するのか、オンライン処理とバッチ処理のどちらを採用するのかなど、判断すべきことは多岐にわたります。調べながら様々に手を動かし、RISC-Vのトラッキングにトライしました。最終的には、パラメータのサイズが大きくなってしまったため、アルゴリズムの計算量が小さいにも関わらず速度が出るByteTrackを採用することにしました。 lp6mさん:このByteTrackのアルゴリズムを改変したのは、私たちチームならではの工夫点だと思います。 medalotteさん:そうですね。ByteTrackのアルゴリズムは、前フレームでトラッキングしたものから予測を行うものですが、何度も試しているうちにその予測の精度がかなり低いことが分かったんです。そこで、LBP特徴量や色情報などの特徴を導入したり、IoU以外の距離指標を導入するなど、精度向上のための改変をいくつか行いました。
リファレンス実装を当てはめるだけでなく、自分たちならではの工夫を。
lp6mさん:物体検出とトラッキング自体は比較的スムーズに進んだのですが、今回の最大の山場であるRISC-Vの実装に時間を費やしました。参加者の多くの方がそうだと思いますが、私たちも触ったことがなかったのでまずは論文や書籍を読むことから始めました。そうしながら、リファレンス実装が公開されるのを待ち、公開されたと同時にすぐに実装しました。ただ、実装したのはいいものの、RISC-Vをどう活用するかが全く決まっていなかったため、トラッキングの中で何かオフロードできることはないかとmedalotteさんに相談しました。 medalotteさん:そこで何かできるか考えたのですが、トラッキングをする上で必須のfloat演算が実装にはなく、このままでは処理ができないことが分かったんです。そこでlp6mさんがFPUを追加してくれました。 lp6mさん:medalotteさんに「float演算できると嬉しいな」と言われ、FPU追加するぞと意気込んだものの、実はRISC-Vへプログラムをオフロードできるようになるまでに2カ月ほどかかりました。コアの生成自体はすぐにできたのですが、クロスコンパイル環境の構築や、ARM/RISC-V間のデータ転送手法の確立などで時間がかかってしまいました。論文や記事を調べ、手探りでなんとか進めることができました。 medalotteさん:提出期限まで1カ月を切った頃に、lp6mさんがFPUを無事追加してくれたので、そこからは私が精度向上に力を注ぎました。精度を上げていく上で工夫したのは、手元で評価できる環境を整備したこと。SIGNATEさんのサイトにデータをアップロードして精度を確認することもできるのですが、1チーム1日5回までに限られていたので、パラメータ設定のさまざまな組み合わせを試すために評価環境を整備しました。それによって、仮説と検証を何度も繰り返しながら精度を向上させることができました。
学習に膨大な時間を費やした分、自分の糧になるのがコンペティションの魅力。
medalotteさん:結果としてアイデア賞をいただくことができ、大きな達成感を感じました。ただ、やりきれなかった点もたくさんあります。私が担当した部分でいえば、トラッキングのアルゴリズムの選定が甘かったこと。提出期限ギリギリになってフレームレートが低いことが分かったのですが、もし画像の特徴量を元にトラッキングできるアルゴリズムを使っていれば、より高い精度を出すことができていたかもしれません。 lp6mさん:あとはやっぱり、RISC-Vを活用しきれなかったことが悔しいですね。RISC-VでDNNモデルを動かしてみたかったし、そのためのアクセラレーターも自分で作ってみたかったのですが、まだまだ時間が足りずできませんでした。もっとRISC-Vに関する知識を身につけて、ぜひ再挑戦したいと思っています。技術面以外では、知識のインプットに時間を費やしすぎてしまったことが心残りです。RISC-Vの実装方法を調べたりFPUの追加方法を調べたりなど、進める上でどうしても学習時間がかかってしまい、別のアルゴリズムを試すことに時間を割くことができなかったんです。 medalotteさん:どうしても不慣れな技術を扱おうとすると時間がかかってしまいますよね。 lp6mさん:ただ同時に、その学習は確実に自分の力になっているとも思います。以前に比べてFPGAの扱いに慣れてきましたし、専門外の知識も身についてきている。なので、学習せずとも取り組めるようなコンテストに参加しても、それはそれで面白みが減ってしまう気がします。自分で手を動かしながらトライアンドエラーを重ねて学ぶからこそ、活きた知識として身につけることができるのではないでしょうか。 medalotteさん:そうですね。今回はかなり試行錯誤を重ねましたが、この経験はきっと今後も自分たちの糧になるだろうと思います。今後も今回のような挑戦を重ね、ソフトウェア・ハードウェアに限定せずスキルを磨き続けることで、エッジコンピューティングの可能性を広げていきたいです。
コンペティション参加を検討している方へのメッセージ
lp6mさん:昔に比べてFPGAの敷居も下がってきていますし、情報にアクセスしやすくなっているので、ソフトウェアを専門にしている人でも、ハードウェアを学びやすく感じると思います。少しでもハードウェアに興味がある方は、今回のようなコンテストに挑戦してほしいです。きっとそこで得た知見が、ソフトウェアを使う上でも役立ってくれるはずです。 medalotteさん:何か実装したいものをエッジコンピュータ上で動かすために、どの処理をどう割り当てるのか考えるのはパズルを解くようでとてもワクワクします。またRISC-Vのようなソフトウェアプロセッサーは拡張性が高いため、自由度があって面白い。どちらも異なる面白さがあるので、こうしたコンペティションを活用してハードウェアとソフトウェアの両方を学ぶことで、それぞれの違いを楽しみながら開発スキルを身につけることができると思います。 <経済産業省・NEDO主催「RISC-Vを使用した自動車走行画像認識」の入賞者レポートはこちら>