これからさらにAIの社会実装を進めていくには電力消費量や通信環境などの制限下でも安定的に稼働できるエッジAI技術のさらなる発展が不可欠だ。 そんなエッジAIに関する新しいアイデアや人材を発掘するべく開催されたのが「AIエッジコンテスト」だ。これまでの開催回数は計4回にのぼり、延べ約2000人が参加、5000件近くの応募が集まり、まさにエッジAIの人材のハブとなりつつある。 2020年7月1日〜12月31日に開催された第4回では、FPGAを用いたAIハードウェア開発を行い、「ハードウェア・ソフトウェアを含めたエッジコンピューティングを意識したハードウェアシステム開発」が課題に設定された。 課題で挙げられたのはFPGAを使った自動車走行画像認識だ。車両前方カメラ画像から、ピクセルレベルで物体に対応する領域を分割するアルゴリズム(セマンティックセグメンテーション)を作成し、ハードウェアアクセラレータなどの設計を行い、ターゲットのFPGAボードへのアルゴリズム実装を行う。 今回は全6回のシリーズを通してAIエッジコンテストの受賞者のインタビューをお届けしていく。 本記事ではシリーズの第5回として、経済産業省・NEDO主催 第4回AIエッジコンテスト(実装コンテスト②)において経済産業省商務情報政策局長賞・エクストリームエッジ賞を獲得したcoffeecupさんのインタビューの様子をお届けし、コンペティションでの勝ち筋や工夫点を明らかにする。
▼動画はコチラ▼
Q.まずは、簡単に自己紹介をお願いいたします。
以前はFPGAの論理設計や回路設計を仕事にしていました。大学時代はコンピュータアーキテクチャの研究をしていました。
コンテスト参加への経緯
Q.AIエッジコンテストへの参加のきっかけを教えてください。
もともと、趣味でプログラミングコンテストや、組合せ最適化などをテーマとした「マラソンマッチ」と呼ばれる長期間のコンテストに出場していました。 マラソンマッチでは最適解を出すのが難しいような問題に対し「いかに速く正解にたどり着くか」が求められます。限られた期間でいかに良い解を出すかを重視して取り組んでいました。 今回のエッジAIコンテストは、面白いコンテストはないかとWebで探していたときに見つけました。コンテスト課題に似た業務をしていたこともあったので、興味を持ち参加を決めました。 他の似たテーマのコンテストにも興味があったのですが、参加したことはありませんでした。
コンテストの勝ち筋・工夫したポイント
Q.準備の段階で工夫したポイントを教えてください。
実は事前準備はほとんどしていません。コンテストを知ったのも2020年7月中旬でした。それからは毎日3〜4時間ほど準備をしていました。 今回の結果に繋がった要因は、DPU向けに効率よく実装できるネットワーク構築を意識し、測定しながら設計したことです。演算量が少なく、かつDPUで効率よく実行できるようなネットワークを見つけられたことが大きかったと思います。 ※DPU…Deeplearning Processing Unitの略。Xilinx社が提供しているディープラーニング用プロセッサエンジン
Q.前処理部分で工夫した点を教えてください。
前処理で工夫したのは画像サイズの選択です。 画像の上部を選択して、写っていそうなときだけ推論するようにしました。 特定のピクセルがあるときだけその画像を使い、その他の場合はクロップするようにしています。 どの物体がどこに写っているのかの確率マップを出しました。車は中央部分、道路は下部、信号は上部…といった形で分析したところ、画像上部にはほとんど物体がないことが分かり、上部を推論する演算量をカットして精度を落としたほうがmIoU=0.6を超える点では有利だと考えました。
上端領域を使用するかどうか判定した方法
Q.実装時の工夫を教えてください。
実装時にはCPU処理の部分を工夫しました。DPUの処理をなるべく効率よく続けることを重要視していました。CPUの処理はDPUより速くなければならず、DDRが1つしかないので、工夫を凝らしました。 ※DDR…FPGAボードに搭載されている外部DRAMメモリ
苦労したポイント
Q.学習時に苦労した点はありますか?
今回、学習自体が初めてで、環境を整えるのが大変でした。 また、最初はmIoU=0.6というボーダーを超えるのにも苦労しました。 細かいところではバリエーションセットをどうするかなどの調整が最後までうまくいかず、提出しながら確認することを繰り返していました。 投稿数は200を超えていると思います。 学習時には最初に大きめのサイズで学習し、そこから画像サイズを小さくしていく方法をとりました。最初から最終的なサイズで学習するとうまくいかなかったので、精度を保ちつつ小さくしていく工夫をしました。
Q.もっとこうしておけばよかったという反省点はありますか?
後半の約1ヶ月半の間は、ほとんど性能を向上させることができなかった点です。ネットワークの構造を変えるなどで、性能が上がらないか試したのですが、思うような結果は得られませんでした。 次回以降は学習方法をもっと考えて、組み合わせながらやるのもよいかと思っています。 また、他の方々が取り組んでいたような特別な前処理もしていないので、前処理を工夫すればDPUで実行するネットワークをもっと速くできたのかなと思っています。 次回は事前学習やその他の学習方法も試してみたいと思います。
今後の展望
Q.これから参加する人に向けてコメントをいただけますか?
機械学習系コンテストというと「環境がないと競えないのでは?」という印象を持っている人もいると思います。Google Colaboratoryなど、無料で使えるツールもたくさんありますし、気軽に参加できるものだということを知ってほしいです。 やってみると意外とできた、ということもあるかと思います。 ※Google Colaboratory…Google社が無償提供する機械学習の教育や研究用の開発環境 <第4回AIエッジコンテスト(実装コンテスト②)の入賞者レポートはこちら>