Data Labeling
機械学習におけるデータラベリングの基礎を学びます。物体検出などの主要な種類を理解し、Ultralytics YOLO26を使用してワークフローを高速化する方法を解説します。
データラベリングは、画像、動画フレーム、テキスト、音声などの生データを識別し、コンテキストを提供するための有益なタグやメタデータを追加する基本的なプロセスです。機械学習 (ML)の領域では、アルゴリズムは物理世界を本質的に理解できないため、導くための「教師」が必要です。この指導は、教師あり学習で使用されるラベル付きデータセットによって実現されます。ラベルは正解データとして機能し、モデルが予測を目指す正しい答えを表します。単純な分類器をトレーニングする場合でも、Ultralytics YOLO26のような複雑なアーキテクチャをトレーニングする場合でも、これらのラベルの正確性、一貫性、品質が、モデルの成功を左右する主な要因です。
データラベリングとデータアノテーション#
これらの用語は、日常会話では同じ意味で使われることが多いものの、注目すべき微妙な違いがあります。「データラベリング」は通常、データにカテゴリーやタグを割り当てる幅広い行為を指します(例:メールに「スパム」というタグを付けること)。一方、データアノテーションは、多くの場合、コンピュータビジョン (CV)により特化したもので、バウンディングボックス、ポリゴン、キーポイントを使用してオブジェクトを正確に区切ります。ただし、ほとんどのMLオペレーション (MLOps)ワークフローでは、どちらの用語も高品質なトレーニングデータの作成を指します。
コンピュータビジョンにおける主な種類#
ラベリングの方法は、モデルが実行するタスクに応じて変わります。一般的な種類は次のとおりです。
- 画像分類: 画像全体に単一のラベルを割り当てます。たとえば、天候を「曇り」または「晴れ」と識別します。
- 物体検出: 個々のオブジェクトの周囲に2D バウンディングボックスを描画し、オブジェクトの種類と位置をモデルに学習させます。
- インスタンスセグメンテーション: オブジェクトの周囲にピクセル単位で正確なマスクまたはポリゴンを作成します。これは、正確な形状と境界を判定するために不可欠です。
- 姿勢推定: 骨格の関節など、対象上の特定のキーポイントにマークを付け、動きや姿勢を分析します。
実世界での利用例#
データラベリングは、AIを活用するほぼすべての業界で役立ちます。
-
自動運転車: 自動運転車は、すべての車両、歩行者、交通標識、車線マーカーに入念なラベルが付けられた大規模なデータセットに依存しています。このラベル付きデータにより、認識システムは複雑な環境を安全に走行できます。自動運転車の企業は、安全性要件への準拠を確保するため、ピクセルレベルのラベリングに多額の投資を行っています。
-
精密農業: 現代の農業では、農業におけるAIを使用して、作物の病気を検出したり、生育段階を監視したりします。農家は、「健全」な葉と「病気」の葉のラベル付き画像でトレーニングしたモデルを使用して処置を自動化し、化学薬品の使用量を削減するとともに収穫量を増やしています。
ラベリングのワークフロー#
ラベル付きデータセットの作成は、AIプロジェクトで最も時間のかかる作業となることがよくあります。このプロセスでは通常、精度を高めるために人間のアノテーターがラベルを検証する「Human-in-the-Loop」(HITL)アプローチを採用します。最新のワークフローでは、Ultralytics Platformなどのツールを活用してデータセット管理を簡素化し、チームがアノテーションで共同作業できるようにしています。アクティブラーニングなどの高度な手法も利用できます。この手法では、モデルがデータに事前ラベルを付け、人間は信頼度の低い予測のみを修正するため、プロセスを大幅に高速化できます。
次の例では、事前トレーニング済みのUltralytics YOLO26モデルを使用して、新しい画像のラベル(オートラベリング)を自動生成し、その後、人間が修正する方法を示します。
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Run inference on an image to detect objects
results = model("https://ultralytics.com/images/bus.jpg")
# Save the detection results to a text file in standard YOLO format
# This file can now be used as a starting point for data labeling
results[0].save_txt("bus_labels.txt")








