Meet YOLO26: next-gen vision AI.

Link to this sectionアノテーション済みコンピュータビジョンデータのためのデータ前処理技術#

Link to this sectionはじめに#

コンピュータビジョンのプロジェクト目標を定義し、データの収集とアノテーションが完了したら、次のステップはアノテーション済みデータを前処理し、モデル学習に向けて準備することです。クリーンで一貫性のあるデータは、優れたパフォーマンスを発揮するモデルを作成するために不可欠です。



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

前処理はコンピュータビジョンプロジェクトのワークフローにおけるステップの一つであり、画像のサイズ変更、画素値の正規化、データセットの拡張、そしてデータを学習用、検証用、テスト用に分割する工程が含まれます。データをクリーンにするための重要な技術とベストプラクティスを探っていきましょう!

Link to this sectionデータ前処理の重要性#

私たちは既に、多くの考慮事項を念頭に置いて注意深くデータを収集し、アノテーションを行っています。では、なぜデータ前処理がコンピュータビジョンプロジェクトにおいてこれほど重要なのでしょうか。データ前処理とは、計算負荷を軽減し、モデルのパフォーマンスを向上させるために、データを学習に適した形式に整える作業のことです。前処理によって対処できる、生のデータにおける一般的な問題は以下の通りです。

  • ノイズ: データに含まれる無関係な変化やランダムな変動。
  • 不整合: 画像サイズ、フォーマット、品質のばらつき。
  • 不均衡: データセット内のクラスやカテゴリの不平等な分布。

Link to this sectionデータ前処理技術#

データ前処理における最初で最も重要なステップの一つがサイズ変更です。一部のモデルは可変の入力サイズを処理するように設計されていますが、多くのモデルは一貫した入力サイズを必要とします。画像のサイズを変更することでそれらを均一化し、計算の複雑さを軽減できます。

Link to this section画像のサイズ変更#

画像は以下の手法でサイズ変更できます。

  • バイリニア補間: 最も近い4つの画素値の加重平均を取ることで画素値を滑らかにします。
  • ニアレストネイバー: 平均化を行わずに最も近い画素値を割り当てます。計算は高速になりますが、画像がブロック状に見えることがあります。

サイズ変更を簡素化するために、以下のツールを使用できます。

  • OpenCV: 画像処理のための広範な関数を備えた、一般的なコンピュータビジョンライブラリ。
  • PIL (Pillow): 画像ファイルの読み込み、加工、保存を行うためのPythonイメージングライブラリ。

YOLO26に関しては、モデル学習時の「imgsz」パラメータにより、柔軟な入力サイズが可能です。640などの特定のサイズに設定すると、モデルは入力画像のアスペクト比を維持しつつ、最大の辺が640ピクセルになるように画像をリサイズします。

モデルとデータセットの具体的なニーズを評価することで、サイズ変更が必要な前処理ステップであるか、あるいはモデルが異なるサイズの画像を効率的に処理できるかを判断できます。

Link to this section画素値の正規化#

もう一つの前処理技術は正規化です。正規化は画素値を標準的な範囲にスケーリングし、学習中の収束を早め、モデルのパフォーマンスを向上させるのに役立ちます。一般的な正規化技術は以下の通りです。

  • ミニマックス・スケーリング: 画素値を0から1の範囲にスケーリングします。
  • Zスコア正規化: 平均と標準偏差に基づいて画素値をスケーリングします。

YOLO26に関しては、モデル学習中の前処理パイプラインの一部として、正規化がシームレスに処理されます。YOLO26は自動的に、RGBへの変換、画素値の[0, 1]範囲へのスケーリング、そして定義済みの平均と標準偏差値を用いた正規化など、複数の前処理ステップを実行します。

Link to this sectionデータセットの分割#

データをクリーンにしたら、データセットを分割する準備が整います。学習用、検証用、テスト用データセットへの分割は、モデルが未知のデータで評価され、その汎化性能が評価されることを保証するために行われます。一般的な分割比率は、学習用70%、検証用20%、テスト用10%です。データを分割するために、scikit-learnTensorFlowのような様々なツールやライブラリを利用できます。

データセットを分割する際は以下を考慮してください。

  • データ分布の維持: 学習、検証、テストの各セット全体でクラスのデータ分布が維持されるようにしてください。
  • データリークの回避: 通常、データ拡張はデータセットの分割後に行われます。データリークを防ぐため、データ拡張やその他の前処理は学習用セットにのみ適用すべきであり、検証用やテスト用のセットの情報がモデル学習に影響を与えないようにします。
  • クラスのバランス調整: 不均衡なデータセットの場合、学習セット内でのマイノリティクラスのオーバーサンプリングや、マジョリティクラスのアンダーサンプリングなどの技術を検討してください。

Link to this sectionデータ拡張とは何か?#

最も一般的に議論されるデータ前処理ステップはデータ拡張です。データ拡張は、画像の変更バージョンを作成することで、データセットのサイズを人工的に増やします。データを拡張することで、過学習を抑え、モデルの汎化性能を向上させることができます。

データ拡張には他にも以下のようなメリットがあります。

  • より堅牢なデータセットの作成: データ拡張により、入力データの変化や歪みに対して、より堅牢なモデルを作成できます。これには照明、向き、スケールの変化が含まれます。
  • 費用対効果: データ拡張は、新しいデータを収集・ラベリングすることなく学習データの量を増やすための費用対効果の高い方法です。
  • データの有効活用: 新しいバリエーションを作成することで、利用可能なすべてのデータポイントを最大限に活用できます。

Link to this sectionデータ拡張手法#

一般的な拡張技術には、反転、回転、スケーリング、色調整などがあります。Albumentations、Imgaug、TensorFlowのImageDataGeneratorといったいくつかのライブラリがこれらの拡張を生成できます。

Overview of Data Augmentations

YOLO26に関しては、データセット設定ファイル(.yamlファイル)を修正することで、カスタムデータセットを拡張できます。このファイル内で、データをどのように拡張したいかを指定するパラメータを持つ拡張セクションを追加できます。

Ultralytics YOLO26リポジトリは幅広いデータ拡張をサポートしています。以下のような様々な変換を適用できます。

  • ランダムクロップ
  • 反転: 画像を水平または垂直に反転できます。
  • 回転: 画像を特定の角度で回転できます。
  • 歪み

また、これらの拡張技術の強度を特定のパラメータで調整し、より多様なデータを生成することも可能です。

Link to this section前処理の事例研究#

YOLO26を使用して、交通画像内の様々な種類の車両を検出・分類するモデルの開発プロジェクトを考えます。交通画像を収集し、バウンディングボックスとラベルでアノテーションを行いました。

このプロジェクトにおける前処理の各ステップは以下のようになります。

  • 画像のサイズ変更: YOLO26は柔軟な入力サイズを扱い、自動的にサイズ変更を行うため、手動のサイズ変更は不要です。モデルは学習中の指定された「imgsz」パラメータに従って画像サイズを調整します。
  • 画素値の正規化: YOLO26は前処理中に自動的に画素値を0から1の範囲に正規化するため、この作業は不要です。
  • データセットの分割: scikit-learnなどのツールを使用して、データセットを学習用(70%)、検証用(20%)、テスト用(10%)に分割します。
  • データ拡張: データセット設定ファイル(.yaml)を修正し、ランダムクロップ、水平反転、明るさ調整などのデータ拡張技術を含めます。

これらのステップにより、データセットは潜在的な問題を抱えることなく準備され、探索的データ分析(EDA)に利用できる状態になります。

Link to this section探索的データ分析技術#

データセットの前処理と拡張が完了したら、次のステップは探索的データ分析(EDA)を通じて洞察を得ることです。EDAでは統計的手法と可視化ツールを使用して、データ内のパターンや分布を理解します。クラスの不均衡や外れ値などの問題を特定し、さらなるデータ前処理やモデル学習の調整について情報に基づいた意思決定を行うことができます。

Link to this section統計的EDA技術#

統計的手法は多くの場合、平均、中央値、標準偏差、範囲などの基本的な指標の計算から始まります。これらの指標は、画素強度の分布など、画像データセットのプロパティの概要をすばやく把握するのに役立ちます。これらの基本統計を理解することは、データの全体的な品質と特性を把握するのに役立ち、異常を早期に発見することを可能にします。

Link to this section視覚的EDA技術#

可視化は画像データセットのEDAにおいて重要です。例えば、クラス不均衡分析もEDAの不可欠な側面です。これは、特定のクラスがデータセット内で過小評価されていないかを判断するのに役立ちます。棒グラフを使用して様々な画像クラスやカテゴリの分布を可視化することで、不均衡をすばやく特定できます。同様に、画素強度や特徴分布の異常を強調する箱ひげ図のような可視化ツールを使用して、外れ値を特定できます。外れ値の検出は、異常なデータポイントが結果を歪めるのを防ぎます。

可視化のための一般的なツールには以下があります。

  • ヒストグラムと箱ひげ図: 画素値の分布を理解し、外れ値を特定するのに役立ちます。
  • 散布図: 画像の特徴やアノテーション間の関係を探るのに役立ちます。
  • ヒートマップ: 画素強度の分布や、画像内のアノテーション済み特徴の空間的な分布を可視化するのに効果的です。

Link to this sectionUltralytics PlatformのEDA利用#

For a no-code approach to EDA, upload your dataset to Ultralytics Platform. The dataset's Charts tab automatically generates the visualizations described above: split distribution, top class counts, image width/height histograms, and 2D heatmaps of annotation positions and image dimensions. The Images tab lets you browse your data in grid, compact, or table views with annotation overlays, making it easy to spot mislabeled examples or unbalanced classes without writing a single line of code.

Link to this sectionコミュニティとのつながり#

プロジェクトについて他のコンピュータビジョン愛好家と議論することで、異なる視点から新しいアイデアを得ることができます。学ぶ、トラブルシューティングを行う、そしてネットワークを広げるための素晴らしい方法は以下の通りです。

Link to this sectionコミュニティとつながるためのチャネル#

  • GitHub Issues: YOLO26 GitHubリポジトリにアクセスし、Issuesタブを使用して質問をしたり、バグを報告したり、機能を提案したりしてください。コミュニティやメンテナが、直面しているあらゆる問題のサポートを行います。
  • Ultralytics Discordサーバー: Ultralytics Discordサーバーに参加して、他のユーザーや開発者と交流し、サポートを受け、知識を共有し、アイデアを出し合いましょう。

Link to this section公式ドキュメント#

  • Ultralytics YOLO26ドキュメント: 数多くのコンピュータビジョンタスクやプロジェクトに関する詳細なガイドや貴重な洞察については、公式YOLO26ドキュメントを参照してください。

Link to this sectionデータセットの準備は完了です!#

適切にリサイズ、正規化、拡張されたデータは、ノイズを減らし汎化性能を高めることでモデルのパフォーマンスを向上させます。このガイドで概説された前処理技術とベストプラクティスに従うことで、強固なデータセットを作成できます。前処理されたデータセットが準備できれば、自信を持ってプロジェクトの次のステップに進むことができます。

Link to this sectionよくある質問 (FAQ)#

Link to this sectionコンピュータビジョンプロジェクトにおいてデータ前処理が重要なのはなぜですか?#

データ前処理は、データがクリーンで一貫性があり、モデル学習に最適な形式であることを保証するため、コンピュータビジョンプロジェクトにおいて不可欠です。ノイズ、不整合、不均衡といった生のデータにおける問題に対処することで、リサイズ、正規化、拡張、データセット分割などの前処理ステップは、計算負荷を軽減し、モデルのパフォーマンスを向上させるのに役立ちます。詳細については、コンピュータビジョンプロジェクトのステップをご覧ください。

Link to this sectionデータ拡張のためにUltralytics YOLOをどのように使用できますか?#

Ultralytics YOLO26でのデータ拡張には、データセット設定ファイル(.yaml)の修正が必要です。このファイル内で、ランダムクロップ、水平反転、明るさ調整といった様々な拡張技術を指定できます。これはここで説明されている学習設定を使用して効率的に実行できます。データ拡張は、より堅牢なデータセットの作成、過学習の抑制、モデルの汎化性能の向上に役立ちます。

Link to this sectionコンピュータビジョンデータに最適なデータ正規化技術は何ですか?#

正規化は、学習中のより速い収束とパフォーマンス向上のために、画素値を標準的な範囲にスケーリングします。一般的な技術には以下が含まれます。

  • ミニマックス・スケーリング: 画素値を0から1の範囲にスケーリングします。
  • Zスコア正規化: 平均と標準偏差に基づいて画素値をスケーリングします。

YOLO26の場合、正規化はRGBへの変換や画素値のスケーリングを含め、自動的に処理されます。詳細についてはモデル学習セクションをご覧ください。

Link to this section学習のためにアノテーション済みデータセットをどのように分割すべきですか?#

データセットを分割するには、学習用70%、検証用20%、テスト用10%に分割するのが一般的です。これらの分割全体でクラスのデータ分布を維持し、学習セットにのみ拡張を適用することでデータリークを避けることが重要です。効率的なデータセット分割には、scikit-learnやTensorFlowなどのツールを使用してください。データセットの準備に関する詳細ガイドもご覧ください。

Link to this sectionYOLO26で手動のリサイズなしに様々な画像サイズを処理できますか?#

はい、Ultralytics YOLO26は、モデル学習中の「imgsz」パラメータを通じて様々な画像サイズを処理できます。このパラメータにより、アスペクト比を維持しながら、最大の辺が指定されたサイズ(例:640ピクセル)になるように画像がリサイズされます。より柔軟な入力処理と自動調整については、モデル学習セクションをご確認ください。

コントリビューター

コメント