画像内のオブジェクト検出のための ML データを探索および視覚化する方法

画像内のオブジェクト検出のための ML データを探索および視覚化する方法

近年、機械学習データ(MLデータ)を深く理解する必要性に対する認識が高まっています。しかし、大規模なデータセットの検出には多くの人的資源と物的資源が必要になることが多いため、コンピュータービジョンの分野での広範な応用にはさらなる開発が必要です。

通常、オブジェクト検出 (コンピューター ビジョンのサブセット) では、境界ボックスを定義することによって画像内のオブジェクトが特定されます。境界ボックスは、オブジェクトを識別するだけでなく、そのコンテキスト、サイズ、シーン内の他の要素との関係も理解します。同時に、クラスの分布、オブジェクト サイズの多様性、クラスが出現する一般的な環境を包括的に理解することで、評価およびデバッグ中にトレーニング モデルのエラー パターンを発見し、より的を絞った方法で追加のトレーニング データを選択できるようになります。

実際には、私は次のようなアプローチを取ることが多いです。

  • 事前トレーニング済みモデルまたは基本モデルの拡張機能を活用して、データに構造を追加します。たとえば、さまざまな画像埋め込みを作成し、t-SNE や UMAP などの次元削減技術を適用します。これらはすべて類似性マップを生成できるため、データの参照が容易になります。さらに、検出に事前トレーニング済みのモデルを使用すると、コンテキストの抽出も容易になります。
  • このような構造を統計と統合し、生データの確認機能を備えた視覚化ツールを使用します。

以下では、 Renumics Spotlight を使用してインタラクティブなオブジェクト検出の視覚化を作成する方法について説明します。例として、次のことを試してみます:

  • 画像内の人物検出器の視覚化を構築します。
  • 視覚化には、データの探索を容易にするための類似性マップ、フィルター、統計が含まれます。
  • Ground Truth と Ultralytics YOLOv8 検出による各画像の詳細な確認。

Renumics Spotlight でのターゲットの視覚化。出典: 著者作成

COCOデータセットの人間の画像をダウンロードする

まず、次のコマンドを使用して必要なパッケージをインストールします。

 !pip install fiftyone ultralytics renumics-spotlight

FiftyOne の再開可能なダウンロード機能を使用すると、COCO データセットからさまざまな画像をダウンロードできます。簡単なパラメータ設定で、1 人以上の人物が写っている画像 1,000 枚をダウンロードできます。具体的なコードは次のとおりです。

 importpandasaspd importnumpyasnp importfiftyone.zooasfoz # 从COCO 数据集中下载1000 张带人的图像dataset = foz.load_zoo_dataset( "coco-2017"、 split="validation"、 label_types=[ "detections"、 ], classes=["person"]、 max_samples=1000、 dataset_name="coco-2017-person-1k-validations"、 )

次に、次のコードを使用できます。

 def xywh_too_xyxyn(bbox): "" convert from xywh to xyxyn format """ return[bbox[0], bbox[1], bbox[0] + bbox[2], bbox[1] + bbox[3]].行= [] fori, samplein enumerate(dataset): labels = [detection.labelfordetectioninsample.ground_truth.detections] bboxs = [... bboxs = [ xywh_too_xyxyn(detection.bounding_box) fordetectioninsample.ground_truth.detections ] bboxs_persons = [bboxforbbox, labelin zip(bboxs, labels)iflabel =="person"] 行。 row.append([sample.filepath, labels, bboxs, bboxs_persons]) df = pd.DataFrame(row, columns=["filepath","categories", "bboxs", "bboxs_persons"]) df["major_category"] = df["categories"].apply( lambdax:max(set(x) -set(["person"]), key=x.count) if len(set(x)) >1 else "only person"。 )

画像内の人物のコンテキストを指定するために、ファイル パス、境界ボックス カテゴリ、境界ボックス、境界ボックスに含まれる人物、メイン カテゴリ (人物は存在しますが) などの列を含む Pandas DataFrame としてデータを準備します。

これを Spotlight で視覚化できます。

 From renumics import spotlight spotlight.show(df)

インスペクター ビューの [ビューの追加] ボタンを使用し、境界ビューで bboxs_persons とファイルパスを選択すると、画像に対応する境界ボックスが表示されます。

豊富なデータを埋め込む

データを構造化するには、さまざまな基本モデルの画像埋め込み(つまり、高密度ベクトル表現)を使用できます。これを行うには、画像の 2D 類似性マップを提供する UMAP や t-SNE などの次元削減技術を使用して、画像全体の Vision Transformer (ViT) 埋め込みをデータセットの構造に適用します。さらに、事前トレーニング済みのオブジェクト検出器の出力を使用してデータを構造化し、含まれるオブジェクトのサイズや数でデータを分類することもできます。 COCO データセットはすでにこの情報を提供しているので、直接使用できます。

Spotlight にはgoogle/vit-base-patch16-224-in21k (ViT) モデルと UMAP のサポートが統合されているため、ファイル パスを使用してさまざまな埋め込みを作成すると、自動的に適用されます。

 spotlight.show(df, embed=["filepath"])

上記のコードを使用すると、Spotlight はさまざまな埋め込みを計算し、UMAP を適用して結果を類似度マップに表示します。その中で、異なる色は主要なカテゴリを表します。これに基づいて、類似性マップを使用してデータを探索できます。

YOLOv8の事前トレーニングの結果

オブジェクトを素早く識別できるUltralytics YOLOv8 は、高度なオブジェクト検出モデルです。高速画像処理用に設計されており、特に大量のデータに適用すると、ユーザーが長時間待機する必要がなくなり、さまざまなリアルタイム検出タスクに適しています。

これを行うには、まず事前トレーニング済みのモデルを読み込みます。

 From ultralytics import YOLO detection_model = YOLO("yolov8n.pt")

さまざまなテストを実行します。

 detections = [] forfilepathindf["filepath"].tolist(): detection = detection_model(filepath)[0] detections.append( { "yolo_bboxs":[np.array(box.xyxyn.tolist())[0]forboxindetection.boxes]、 "yolo_conf_persons": np.mean([ np.array(box.conf.tolist())[0]. forboxindetection.boxes ifdetection.names[int(box.cls)] =="person"]), np.mean( ]), "yolo_bboxs_persons":[ np.array(box.xyxyn.tolist())[0] forboxindetection.boxes ifdetection.names[int(box.cls)] =="person ], "yolo_categories": np.array( [np.array(detection.names[int(box.cls)])forboxindetection.boxes], "yolo_categories": np.array( ), } ) df_yolo = pd.DataFrame(detections)

12GB の GeForce RTX 4070 Ti では、上記のプロセスは 20 秒以内に完了します。その後、結果を DataFrame にラップし、Spotlight を使用して視覚化できます。次のコードを参照してください。

 df_merged = pd.concat([df, df_yolo], axis=1) spotlight.show(df_merged, embed=["filepath"])

次に、Spotlight はさまざまな埋め込みを再度計算し、類似度グラフに UMAP を適用して結果を表示します。ただし今回は、検出されたオブジェクトに対するモデルの信頼レベルを選択し、類似度グラフを使用して信頼度の低いクラスター間での検索をナビゲートできます。結局のところ、これらの画像のモデルは不明であるため、通常は多少類似しています。

もちろん、上記の簡単な分析は、このようなモデルが以下のシナリオで体系的な問題に遭遇することも示しています。

  • 列車が巨大なため、車両の外に立っている人は非常に小さく見える。
  • バスなどの大型車両では、乗員はほとんど見えません
  • 誰かが飛行機の外に立っている
  • 人間の手や指で撮影した食べ物のクローズアップ画像

これらの問題が実際に人物検出の目標に影響を与えるかどうかを判断できます。影響を与える場合は、データセットに追加のトレーニング データを追加して、これらの特定のシナリオでモデルのパフォーマンスを最適化することを検討する必要があります。

まとめ

要約すると、Spotlight などの事前トレーニング済みモデルとツールを使用すると、オブジェクト検出の視覚化プロセスが容易になり、データ サイエンスのワークフローが強化されます。独自のデータを使用して上記のコードを試して実験することができます。

翻訳者紹介

51CTO コミュニティの編集者である Julian Chen 氏は、IT プロジェクトの実装で 10 年以上の経験があります。社内外のリソースとリスクの管理に長けており、ネットワークと情報セキュリティの知識と経験の普及に重点を置いています。

原題: 画像内の物体検出のための ML データの探索と視覚化の方法、著者: Markus Stoll

リンク: https://itnext.io/how-to-explore-and-visualize-ml-data-for-object-detection-in-images-88e074f46361.

<<: 

>>:  LLaVA オープンソース モデルに基づくビデオチャット アシスタントの構築

ブログ    

推薦する

アプリケーション開発コンサルティングは、企業が人工知能を最大限に活用できるよう支援します

適切なコンサルタント チームが、優れたアプリケーションを選択して AI のメリットを発見できるようお...

スーパー暗号解読:自動運転はこうして実現される

多くの新製品と同様に、自動運転に対する人々の態度は、過度の信頼から過少な信頼まで二極化しています。自...

2021 年を迎えるにあたり、人気の GNN はどのアプリケーション分野で存在感を発揮するのでしょうか?

近年、グラフ構造の強力な表現力により、機械学習の手法を用いたグラフ解析の研究が注目を集めています。グ...

ジェネレーティブAIは伝統的な医師と患者の関係を破壊している

「医者はいつも正しい」という考えが何十年も続いた後、伝統的な医師と患者の関係は重大な岐路に立たされて...

...

注目の話題レビュー:自動運転タクシーは商用化まであと一歩

自動運転については長い間議論されてきましたが、それが本当に人々の生活に不可欠なものになるのはいつでし...

Gemini vs ChatGPT: Google の最新 AI と ChatGPT のどちらが優れているのでしょうか?

Google は、最新かつ最も強力な AI モデルである Gemini 1.0 を発表し、AI の...

...

...

...

速報です!ヒントンがロボットスタートアップに参入、同社は9000万ドルの新規投資を受ける

チューリング賞受賞者であり、ディープラーニングの父であるジェフリー・ヒントンの次の旅が決まりました。...

人工知能はディープラーニングへと移行しており、強力なコンピューティングパワーの構築は重要な指標となっている

報告によると、人工知能の最大の課題の 1 つは、認識率と精度が低いことです。精度を向上させるには、モ...

自動車の未来:スマート製造の採用

インテリジェント製造技術の出現は自動車製造業界に大きな影響を与えました。まず、スマート製造では、自動...

テクスチャコントラスト検出を使用してAI生成画像を検出する

この記事では、AI によって生成された画像を検出するためのディープラーニング モデルを開発する方法に...

...