画像内のオブジェクト検出のための 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 オープンソース モデルに基づくビデオチャット アシスタントの構築

ブログ    
ブログ    

推薦する

C言語の非数値計算でよく使われる5つの古典的なソートアルゴリズム

概要: ソートとは、一連の「順序付けられていない」レコードシーケンスを「順序付けられた」レコードシー...

優れたビジネス機械学習のユースケース 5 つ

ビッグデータと機械学習を組み合わせることで、ビジネスの競争優位性を獲得するために必要な、すでに保有し...

自動運転分野における機械学習アルゴリズムの応用に関する包括的なレビュー

機械学習は、車内外のセンサーからのデータを融合して、運転者の状態を評価し、運転シナリオを分類するため...

AIの負担を軽減する時が来た。Python AIライブラリ5選のおすすめ

機械学習は興味深いものですが、作業範囲が広く複雑で困難です。開発者として学ぶべきツールはたくさんあり...

機械学習における特徴選択の3つの代替手法

ソレダッド・ガリ翻訳者:趙青棠企画丨孫淑娇、梁策インターネットで「特徴選択」を検索してみると、特徴選...

Facebookは視覚障害者向けに写真の説明を改善するためにAIを活用

[[377490]]海外メディアの報道によると、フェイスブックは1月21日、視覚障害のあるユーザー向...

スタートアップがAIを活用している3つの分野

[[311593]] [51CTO.com クイック翻訳] 人工知能は最新の開発トレンドであり、その...

機械学習アルゴリズムは簡単に詐欺を検出できるので、詐欺を恐れる必要はありません。

実のところ、誰もが詐欺防止を必要としているわけではありません。金融機関が最新の犯罪手法に追いつこうと...

現在世界で最も重要な古典的アルゴリズムトップ10

今日の世界では、数え切れないほどの古典的なアルゴリズムが発見または作成されてきました。最も価値あるア...

ペンシルバニア大学の最新研究:AI はアイデア生成において人間よりも 7 倍効率的であり、GPT の創造力は人間の 99% を上回ります。

囲碁からゲームのプレイ、さまざまな反復作業の完了まで、AI の能力は多くの面で人間をはるかに上回って...

...

...

[NCTSサミットレビュー] アリババの潘家騰:アリママのオフラインテストドメインのインテリジェント構築

2019年10月26日、Testinが主催する第2回NCTS中国クラウドテスト業界サミットが北京で開...

...

...