昨夜華為Labが新しい物体検出モデルを公開しました。
公開したばかりなので、まだ参考できる記事とかないですが、一応内容だけ共有したいと思います。
論文は非常に長いので、重要な部分だけをまとめて説明します。
①サマリー
物体検出のタスクに対して、精度自体はTransformer系が一番高いですが(VIT,SwinTなど)、処理スピードが遅いために、
one-stageのYolo系(Yolo8,YoloXとか)はより業務上で使われています。そこで、今回のGold-Yoloは、従来Yoloの一つ大きな弱みを改善できました。
下の精度グラフをみると、一番上の赤い線がGold-Yoloです。最新のYolov8よりは2.4%精度上がったと示しています。
②YOLOの弱み:
YOLOの構造(FPN)によって、multi-level間の特徴量取得は、一部の情報をなくすようになります。
下の例の画像見るとわかりますが、level1がlevel2のデータを利用したいときには、
そのままつながっていますので、問題なく必要な情報を取得し、あまり損失がなく統合できます。
ですが、level1がlevel3の情報を利用したいなら、直接繋がっていないために、まずlevel2からlevel3の情報を取得して、それで、level1がlevel2+level3の統合情報をもらうことで、間接にlevel3のデータを手に入れます。
このような伝統的な再帰方だと、一部のデータは必ず転送中でなくします。
なぜかというと、level2はleve3にもらう情報はすべてではなく、使われる情報だけ取りますので、使われてない部分はの残さず捨てられます。結局、多層間の情報転送はフルー転送できないです。
下の画像の通り、左上が層ごとの転送で情報がなくなりました。
③GOLD-YOLOの対策:
この弱みを解決するために、開発者がGather-and-Distribute(GD)と呼ばれるー「収集+配布」機能を追加しました。
GDは今までの再帰手法ではなく、まず統一なモジュールからすべての情報を集まって統合します。
そのあと、情報転送際に、必要な分だけモジュールがlevelに直接渡します。(Transformerっぽいですね)
GDはまたFAM,IFM,INjectという3つのモジュールで構成しています。
(これら三つに関する詳しい説明はかなり長くて難しいので、興味ある方は直接論文を読んでください。)
*YOLOとの比較
YOLOV8より2.6%,YOLOV6-3.0より2.4%,他のYOLOバージョンよりは大体3-5%高いです。
論文:https://arxiv.org/abs/2309.11331
github:https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO