物体検出の実際の応用では、一般化された物体検出システムが必要になることがよくあります。たとえば、都市のセキュリティでは、より良いセキュリティ効果を達成するために、ターゲット検出システムは十分な種類のターゲットを検出できる必要があります。しかし、一般的に使用されるターゲット検出データセットに含まれるカテゴリの数は限られており、単一のデータセットでトレーニングされたターゲット検出モデルでは需要を満たすことができなくなり、複数のデータセットをどのように統合してトレーニングするかが研究の方向性として注目されています。
1. 複数のデータセットを統合する際の問題
トレーニングのために複数のデータセットを単につなぎ合わせただけでは、パフォーマンスは向上しないことがよくあります。主な理由は次のとおりです。
NO.1
各データセットのラベル空間は均一ではありません
各データセットは独自のラベル スペースを指定し、異なるラベル スペース間には重複があります。ただし、同じ名前のラベルでも、異なるデータセットでは異なるセマンティクスを持つ場合があります。COCOのマウスはネズミの略で、OpenImagesのマウスはマウスを表します。異なる名前のタグは、異なるデータ セットで同じセマンティクスを持つ場合があります。VOC中の飛行機とCOCOの飛行機は飛行機の略です。
ラベルの名前だけで位置を調整すると、ラベルのセマンティクスが曖昧になります。
NO.2
データセット間で一貫性のないラベル付け
各データセットのラベル空間は均一ではないため、各データセットの前景と背景の定義は異なります。図 1 に示すように、A データセットには人物と車のカテゴリが含まれていますが、顔のカテゴリは含まれていません。B データセットには人物と顔のカテゴリが含まれていますが、車のカテゴリは含まれていません。次に、それぞれの注釈で、A データ セットは車を前景としてマークしますが、顔を背景として無視します。B データ セットは顔を前景としてマークしますが、車を背景として無視します [2 ]。これにより、異なるデータセット間で前景と背景の定義が曖昧になります。
図 1 ラベルの不一致の問題
NO.3
データセット間のドメインの違い
各データセットのアプリケーションシナリオと画像取得方法の違いにより、データセット間にはドメインの大きな違いが存在する可能性があります。図 2 の左側は自動運転シーン、図 2 の右側は屋内シーンです。左右の画像のスタイルが異なることがはっきりとわかります。これにより、モデルによって抽出された特徴分布が異なります。 。
図2 ドメイン差異問題
2. SimpleMulti-dataset Detection 論文の解釈
スペースが限られているため、この記事では「統一ラベル空間の構築」によって複数のデータセットを統合してトレーニングする論文「Simple Multi-dataset Detection」[1] のみを紹介します。ここでは、読者が統合トレーニングをよりよく理解できるように、論文の手法の概要、実験結果の分析、およびコードの使用法について簡単に紹介します。
NO.1
方法
UT-Austin は、複数の大規模なデータセットに対する手法を提案しました (ココ、オブジェクト365 、OpenImagesなど) は、汎用のオブジェクト検出器をトレーニングするためのシンプルな手法であり、この手法に基づいて、ECCV2020 Robust Vision Challenge のオブジェクト検出とインスタンス セグメンテーションの 2 つのトラックで 1 位を獲得しました。
図 3 さまざまな種類のターゲット検出モデル
従来のターゲット検出モデルは図 3(a) に示されており、単一のデータセットが単一のモデルに対応するため、COCO データセットでトレーニングされたモデルは検出に使用できませんObjects365 データセットのターゲット。そこで、著者は図 3(b) に示す方法を使用してマルチヘッド (複数検出ヘッド) モデルをトレーニングし、モデルのバックボーンを共有し、異なるデータセットに対して異なる検出ヘッドを使用し、それぞれの損失を計算します。データは別途設定します。この方法でトレーニングされたモデルは、複数のデータセット内のターゲットを識別できますが、現在のモデルは、次のような統一されたラベル空間を実現していません。ココ、オブジェクト365 、OpenImages はCar カテゴリのオブジェクトを検出しますが、3 つの重複した検出ボックスを出力します。
しかし、このようにして、統一されたラベル空間の基礎を取得し、各データセットの検出ヘッドの検出結果を同じ入力画像上で取得できるため、異なるデータセットのラベルを比較することで位置合わせすることができます。検出結果。
著者は、統一されたラベル空間を学習するための新しいデータ分割方法を提案します。つまり、各データセットの検証セット上の異なる検出ヘッドの検出結果に従ってラベル空間を学習します。著者は、ラベル空間の融合を、 元の空間から 統一空間への 写像関係行列を学習することとみなしています。
具体的な最適化目標は次の式です。
上の式に現れる変数の意味は次のとおりです。
● : データセット k に対応するマッピング行列
● :統一ラベル空間における各予測ボックスのカテゴリ確率分布
● :データセット k のラベル空間における各予測ボックスのカテゴリ確率分布
● : 損失関数を最適化します。
その中で、マッピング行列は直接最適化できない(初期のマッピング関係が分からない)ため、著者はこの問題を、各データセット上の各カテゴリの可能なマッピング関係を網羅的に列挙して最適なマッピング行列を見つける方法に巧みに変換します。論文 [1] の導出を参照してください。
表 1 さまざまなサンプリング戦略の影響
表 1 に示すように、著者はさまざまなサンプリング戦略の効果を比較しました。このうち、均一データセット サンプリングとは、異なるデータセット間でサンプル数のバランスをとることを意味し、クラスアウェア サンプリングとは、データセット内のロングテール効果のバランスをとり、テール カテゴリがサンプリングされる確率を高めることを意味します。この結果から、均一なデータセット サンプリングとクラスを意識したサンプリングの両方が非常に重要であることがわかります。
NO.2
実験結果
筆者はResNet-50バックボーンのCascadeRCNNを実験に使用しました。まず、表 2 に示すように、著者が提案したマルチ検出ヘッド モデルは、ラベル空間を融合することなく、単一検出ヘッド モデル (8x スケジュール) とすでに比較でき、その後のラベル マッピングの学習に信頼できる検出結果を提供します。マトリックス。
表2 マルチ検出ヘッドモデルとシングル検出ヘッドモデルの効果比較
上記の方法で統合ラベル空間を学習した後、著者は、表 3 (2x スケジュール) で、モデルのパフォーマンスに対する統合ラベル空間のさまざまなバージョンの影響を比較します。
● GloVe 埋め込みとは、GloVe 単語ベクトルを使用して類似したラベルをマージすることを意味します。
● 学習済み歪みおよび学習済み AP は、論文で提案されている方法を使用して、さまざまな最適化損失関数を通じて学習された統合ラベル空間を表します。
● 専門家が手動で結合した統一ラベル空間を表します。
表 3 さまざまなバージョンのラベル スペースの効果の比較
表 4 に示すように、ラベル空間を統合した後のモデルは一般化して他のダウンストリーム データセットに適用でき、ほとんどのダウンストリーム データセットでより良い結果が得られます。
表 4 他のデータセットでの汎化パフォーマンス
最後に、バックボーンとして ResNeSt200 を使用し、8 回のトレーニング スケジュールを使用してモデルの規模を拡大すると、モデルの効果は一部の SOTA モデルに匹敵する可能性があります。
表5 モデルのスケール拡大
著者は、学習された統合ラベル空間を分析し、この方法が同じ名前で異なるセマンティクスを持つラベルをうまく分離し、異なる名前で同じセマンティクスを持つラベルを融合することに成功したことを発見しました。
3. 実際の動作
著者は論文のコードをオープンソース化しています。ダウンロードアドレス: https://github.com/xingyizhou/UniDet
この文書は detectron2 フレームワークに依存しているため、指示に従って detectron2 をインストールする必要があります。ドキュメント: https://detectron2.readthedocs.io/en/latest/tutorials/install.html
detectron2 をインストールした後、紙のコードをプロジェクト ディレクトリに置く必要があります。
cd /path/to/detectron2/projects
git clone https://github.com/xingyizhou/UniDet.git
推奨は必須になりますココ、オブジェクト365 、OpenImages (2019 チャレンジ バージョンを使用) データセットは、統合フォルダーにダウンロードされます。(ダウンロードアドレス: https://storage.googleapis.com/openimages/web/challenge2019.html )。ダウンロードされたココとObjects365 を直接使用することもできますが、OpenImages は変換を行う必要があります。
# 使用UniDet/tools/convert_datasets/convert_oid.py进行转换
python convert_oid.py --path /path/to/openimage --version challenge_2019 --subsets train
python convert_oid.py --path /path/to/openimage --version challenge_2019 --subsets val --expand_label
次のコマンドを使用して、DETECTRON2_DATASETS 変数がデータセットのダウンロード先フォルダーを指すようにし、detectron2 がデータセットを読み取れるようにします。
export DETECTRON2_DATASETS=/path/to/datasets
次に、Challenge-2019-label500-hierarchy.json ファイルをダウンロードする必要があります。(ダウンロード アドレス: https://storage.googleapis.com/openimages/challenge_2019/challenge-2019-label500-hierarchy.json )。そして、UniDet/unidet/evaluation/oideval.py ファイルの oid_hierarchy_path をファイルの実際のパスに変更します。
さらに、UniDet/configs/ には、コード ウェアハウスには提供されていない OpenImages データに関連する設定ファイルに openimages_challenge_2019_train_v2_cat_info.json ファイルがあることがわかります。
トレーニング コードを観察すると、 OpenImagesデータセットの各カテゴリの画像数の統計情報がファイルに保存されており、自分で計算できることがわかります。OpenImagesの各カテゴリのピクチャの数がカウントされて生成され、具体的な形式は次のとおりです。
[{"id": 419, "image_count": 45938}, {"id": 231, "image_count": 31351}, {"id": 71, "image_count": 130723}, {"id": 114, "image_count": 378077}, {"id": 117, "image_count": 3262}, {"id": 30, "image_count": 289999}, {"id": 11, "image_count": 58145}, {"id": 165, "image_count": 265635}, {"id": 345, "image_count": 29521}, ...]
この時点ですべての準備が完了し、トレーニングを開始できます。2x スケジュールでマルチ検出ヘッド モデルをトレーニングする場合は、次のコマンド ラインを使用して実現できます。
python UniDet/train_net.py --config-file UniDet/configs/Partitioned_COI_R50_2x.yaml
UniDet/datasets/label_spaces/ では、著者はさまざまな統一ラベル空間を提供していますが、論文で提案されている方法によって学習されたラベル空間は次のとおりです。
ラベル空間の学習手順を再現したい場合は、多くの検出ヘッド モデルをトレーニングした後、3 つのデータ セットの検証セットで推論結果を取得し、UniDet/tools/UniDet_learn_labelspace_mAP.ipynb の手順に従ってください。走る。
カスタム データセットを追加する場合は、UniDet/unidet/data/datasets/ にカスタム データセットを登録し、構成ファイルを変更できます。登録方法の詳細については、detectron2 のドキュメントを参照してください: https://detectron2.readthedocs.io/en/latest/tutorials/datasets.html
4. データセットのダウンロード
この記事で言及されている関連データ セットは、無料で高速に取得でき、ダウンロードできるアドレスです。
●COCO2014:https://opendatalab.org.cn/COCO_2014
●COCO2017:https://opendatalab.org.cn/COCO_2017
● Objects365:https://opendatalab.org.cn/Objects365
● OpenImages チャレンジ 2019:https://opendatalab.org.cn/Open_Images_Challenge_2019
● OpenImages V4:https://opendatalab.org.cn/Open_Images_V4
● OpenImages V6:https://opendatalab.org.cn/OpenImages-v6
他にどのようなデータセットについて知りたいですか? その他のリソースについては、OpenDataLab の公式 Web サイトにアクセスしてください。ニーズを満たす 3700 以上の大規模で安全かつ便利なデータ セット リソースがあります。体験とダウンロードへようこそ。(クリックすると原文が表示されます)
●OpenDataLab公式サイト:https://opendatalab.org.cn/
5. 追記
この記事では、トレーニング用に複数のデータセットを統合する際の問題と、トレーニング用に複数のデータセットを統合するための簡単な論文を紹介し、論文のコードと関連データセット リソースの使用方法を紹介します。フォローアップでは、更新を支援するための「いいね!」、「転送」、「共有」など、トレーニング用に複数のデータセットを統合する他の方法を引き続き導入していきます。
参考文献
[1] Zhou、Xingyi、Vladlen Koltun、Philipp Krähenbühl。「シンプルなマルチデータセット検出」コンピューター ビジョンとパターン認識に関する IEEE/CVF 会議の議事録。2022年。
[2] Zhao、Xianyun、他。「複数のデータセットからの統一ラベル空間による物体検出」コンピュータービジョンに関する欧州会議。スプリンガー、チャム、2020年。
著者丨ランジー
光の力を信じてください
- 終わり -
上記はこの共有です。大規模なデータセット リソースを入手するには、OpenDataLab 公式 Web サイトにアクセスしてください。さらにオープン ソース ツールやプロジェクトを入手するには、OpenDataLab Github スペースにアクセスしてください。また、他に見たいものがある場合は、小さな助手に言いに来てください。より多くのデータセットが棚に並び、より包括的なデータセット内容の解釈、最も強力なオンライン Q&A、最も活発な仲間のサークル...OpenDataLab 公式コミュニケーション グループに WeChat opendatalab_yunying を追加することを歓迎します。