AI技術が発展し、画像認識や自動運転などのAIの社会実装が急速に進む今、便利で安全な生活に向けた取り組みが進んでいる。今後データをさらに高度に利活用していくためには、クラウド処理だけでなく、リアルタイム性が高いエッジAI技術の発展が必要不可欠だ。そのためには、ソフトウェアを中心としたAI技術開発に加え、LSI・FPGAをはじめとするハードウェアの開発や、それらを担う人材の発掘・育成が急務となっている。 そうしたニーズに応えるべく開催されているのが経済産業省・NEDO主催の「AIエッジコンテスト」だ。これまでの開催回数は計6回。難度の高いコンテストながら、毎回専門人材から知見が寄せられ、エッジAI技術を手がける人材を発掘するハブとなりつつある。 2022年8月17日~2023年1月29日に開催された第6回では、RISC-Vを使用した自動車走行時の画像・点群データによる3D物体検出をテーマに、完成度・精度・動作速度の総合点を競うコンテストが実施された。第5回に引き続き、RISC-Vの使用が必須条件であるため、チャレンジングなコンテストとなっていた。 そんな本コンテストで、見事第1位に輝いたのが山下伸逸さんだ。第4回、5回ではアイデア賞を受賞してきた山下さんが、どのようにして1位を獲得するに至ったのか。取り組みにおける工夫点や今後の展望まで、率直に話を伺った。
これまでの知見や成果物を活かすと同時に、第5回の心残りも晴らすために参加。
このコンテストに最初に参加したのは第4回のときでした。元々ハードウェアエンジニアとしてFPGAを活用していたこともあり、FPGAのRTL設計の経験を活かせると思って応募したんです。参加したはいいものの、TensorFlow Liteのインターフェースに苦労するなど想像以上に大変でしたね。これは難易度が高いコンテストだということが骨身に染みて分かったのですが、第5回も迷わず参加しました。以前から関心があって趣味で触っていたRISC-Vがテーマだったため、最初の応用先としてピッタリだと思ったんです。また、テーマに継続性があるため、第4回で作成したCPUやアクセラレータの知見も活かせるだろうと考えました。 そして迎えた今回。第5回に引き続きRISC-Vがテーマだったため、これまでに培った知見や成果物がまた活かせそうだと考え参加しました。また、第5回ではネットワークの検出精度があまり高くなくて精度を上げきれなかったという心残りもあったため、それを晴らしたいという想いもありました。
データの扱い方が肝になる。そこでまずはデータの変換に時間と手間を費やした。
課題を読み込んでまず難しそうだと思ったのは、LiDARデータを扱う点。画像データの場合、自分の目で見て直感的にデータの特徴が理解できますが、LiDARデータの場合は単なるデータ列なので見ただけでは特徴が分かりません。正しい方法でデータを変換する必要があるけれど、どう変換するべきか。そのとき何を基準にするべきか。それらを一つひとつ模索する必要があるため、時間がかかることを覚悟しました。 いろいな手法を試した上でたどり着いたのは、LiDARデータからBEV画像という画像データに変換し、Pytorchを使ってヒートマップを作るというやり方。また、PytorchのネットワークをTensorFlow Liteに変換し、8bitで量子化してデータを抽出しました。言葉で言うと簡単なことのようですが、実はPytorchを触るのが初めてだったため、構造を理解するのにかなり苦労しました。Pytorchの中で何が起きているのかをきちんと自分の中に落とし込めるまで、Webに公開されている資料を読み込み、手を動かし続けました。またPytorch自体は理解できても、今度はTensorFlow Liteへの変換で壁にぶつかりました。PytorchとTensorFlow Liteの仕様が違うため、webで公開されている変換ツールをそのまま使うだけでは余計なPADが発生してしまったのです。そこでネットワークを自分の手で編集し、PADを外していきました。
過去の成果物に頼るだけでなく、それらを活かした上で挑戦する姿勢が結果に寄与した。
今回1位を受賞することができたのは、ハードウェアとソフトウェア両方の性能にこだわったのみならず、コンパイラを触ったり、細かな仕様まで一からカスタマイズできたことが関係していると思います。ソフトウェアとハードウェアどちらの知見も必要とされる難易度の高いコンテストなため、時間の都合上どうしてもカタチにするところまでしか手が回らなかった参加者の方も多いと思うのですが、私の場合は第4回、第5回と積み上げてきた資産がある。それらを存分に活かしながらも新しい試みに挑戦することができたのが、結果に寄与したのだと思います。これまで使ってきたTensorFlow Liteのフレームワークをそのまま活用してFPGAのアクセラレータを開発できたのもその一つ。推論のネットワークが多少変わっても、継続的に使えるハードウェアを第4回、第5回の時点で既に完成させていたことが役立ちました。今回は、これまで培ってきた知識と技術の結晶が結果になったと言えるかもしれません。 ただ、以前の資産を活かしたとはいえ、新しく手を加えたりチャレンジしたこともたくさんあります。先ほど話したPytorchもそうですし、FPGAのリソースをできる限り活用するために並列数を増やしたり、処理を高速化するためにFPUを新たに開発したりと、精度向上につながることはすべて試しました。資産に頼るのではなく、資産を活かして新たな挑戦をする。その姿勢が重要だったと思います。
力の限りを尽くすことができた。それでも現状に満足せず、挑戦し続ける。
今回は自分にできることすべてやり切ることができたため、心残りはありません。第5回で悔しさを感じた精度面も、データの変換方法にこだわったことで改善できましたし、ソフトウェアもハードウェアも気になるところはすべて手を加えることができた。結果ももちろん嬉しいですが、自分が今持っている力を尽くすことができたという意味でも、今回はこれまで以上に大きな達成感を感じています。 しかし、このモデルに満足しているかと言うと話は別。まだまだ改善の余地はたくさんあると思います。例えば、これまで長きにわたってこのハードウェアを使ってきたため、回路が複雑になり、FPGAのスピードが上がりきっていないのもその一つ。ただ、これを改善するには回路を一つひとつ見直して、どこが遅延に関係しているのか炙り出す作業が必要です。もしくは思い切ってハードウェアの構造を一から変えてみるか。どちらも気が遠くなるような地道な作業ですし、高度な技術も求められると思いますが、どの方法がベストか見極めた上で挑戦してみたいです。 このコンテストに参加するのはもう3回目になりますが、常に新たな発見があり、どんどん技術を身につけることができるのが魅力だと思います。それに、このコンテストで得たシステム全体を把握する能力は、エンジニアとしてきっといつか役に立つはずです。自分が手がけている領域がシステムのどの部分にあたり、システム全体にどう影響しているのか。それを意識しながら進めることができれば、エンジニアとして大きく成長できると思っています。
コンテスト参加を検討している方へのメッセージ
自分の専門領域を限定することなく、興味があることはどんどん試してみることが大切だと思います。その意味で、このコンテストはソフトウェアとハードウェアどちらにも触れることができるのでオススメです。経験してみることで、新たな発見や自分の得意分野に気づくこともあると思うので、ぜひ勇気を出して挑戦してみてください。 <第6回AIエッジコンテスト「RISC-Vを使用した自動車走行時の画像・点群データによる3D物体検出」コンペティションの入賞者レポートはこちら>