画像ベースの AI プロジェクト用のデータセットを準備する 7 つのステップ

画像ベースの AI プロジェクト用のデータセットを準備する 7 つのステップ

翻訳者 |陳俊

レビュー | Chonglou

ご存知のとおり、データセットはおそらく機械学習プロジェクトで最も見落とされがちな部分です。ほとんどの人にとって、データセットとは、ダウンロードした、急いでまとめた画像やあらかじめ作成された画像のコレクションにすぎません。実際、データセットはあらゆる画像ベースの人工知能 (AI) プロジェクトの基礎となります。バランスが取れた、適切に構造化されたデータセットを作成して管理することは、高い精度の達成を目指すあらゆる機械学習プロジェクトにとって重要です。

ただし、データセットの作成は、数百枚の画像を収集するほど簡単ではありません。 AI プロジェクトを開始しようとすると、さまざまな隠れた危険に遭遇する可能性があります。以下では、データセットのサイズの重要性、データの欠落の可能性、データセットをデータベースに変換するなどの要因についてより深く理解できるように、独自のデータセットを作成するために実行できる 7 つの一般的な手順について説明します。

注: これらの手順は、画像データセットを含むオブジェクトの検出と分類を対象とするプロジェクトに主に適用されます。 NLPやグラフィック プロジェクトなどの他のプロジェクト タイプでは、異なるアプローチが必要です。

ステップ1 : 画像サイズ

通常、ニューラル ネットワークは特定の画像サイズのみを処理でき、しきい値を超える画像は強制的に縮小されます。つまり、データセットを使用する前に、適切なニューラル ネットワークを選択し、それに応じて画像サイズを調整する必要があります。

ご存知のように、画像サイズを縮小すると精度が大幅に低下し、画像内の小さなオブジェクトが消えてしまうため、認識プロセス全体に悪影響が及ぶ可能性があります。下の図のように、監視カメラで撮影した画像から車のナンバープレートの番号を検出する必要があります。ナンバープレートは画像全体のごく一部を占めるだけです。その後、ニューラル ネットワークが画像を縮小すると、ナンバー プレートの番号が小さすぎて認識できなくなる可能性があります。

下の図に示すように、ネットワークが使用できる画像サイズを知っておくと、データセットに適切な画像を切り抜くのに役立ちます。

ほとんどのニューラル ネットワークは小さい画像サイズで動作しますが、 Yolo v5x6などの最新のニューラル ネットワークは、より大きな解像度の画像を処理できます。たとえば、 Yolo v5x s 6 は最大1280ピクセル幅の画像を処理できます

ステップ2 環境理解する

ニューラル ネットワークが操作中に認識する必要がある実際の画像をデータセットに反映させるには、データセットを収集するときに次の要素に注意する必要があります。

  1. カメラの種類(スマートフォンのカメラか防犯カメラか)
  2. 画像サイズ
  3. カメラの設置場所(屋内か屋外か)
  4. 日光、雨、霧、雪などの気象条件。

ニューラル ネットワークが処理する現実世界の画像を明確に理解することで、関心のあるオブジェクトとそれらが配置されている環境を正確に反映したデータセットを作成できます。

直感的には、Google から通常の画像を収集するのが、大規模なデータセットを組み立てる最も簡単で迅速な方法であると思われるかもしれません。しかし、結果として得られるシステムでは、実際には高い精度要件を達成することが困難です。下の図に示すように、Google や写真データベース内の画像は、実際のカメラで撮影された画像に比べて「美化」されているのが普通です。

データセットが「美しすぎる」と、テストの精度が高くなる可能性があります。つまり、ニューラル ネットワークはテスト データ (データセットから精製された画像のコレクション) に対してのみ適切に機能しますが、実際の状況では適切に機能せず、精度が低くなります。

ステップ3 :書式設定と注釈

注意する必要があるもう一つの重要な側面は、画像の形式です。プロジェクトを開始する前に、選択したフレームワークがサポートする形式と、画像がそれらの要件に適合しているかどうかを確認してください。現在のフレームワークは複数の画像形式をサポートできますが、 .jfifなどの形式では依然として問題が残っています

注釈データを使用すると、境界ボックス、ファイル名、および使用できるさまざまな構造の詳細を指定できます。通常、ニューラル ネットワークやフレームワークが異なれば、必要な注釈付け方法も異なります。境界ボックスの位置の絶対座標を必要とするものもあれば、相対座標を必要とするものもあります。また、画像ごとに注釈を含む個別の.txtファイルを必要とするものもあれば、すべての注釈を含む単一のファイルのみを必要とするものもあります。ご覧のとおり、データセットに適切な画像が含まれていても、フレームワークが注釈を処理できない場合は役に立ちません。

ステップ4 : トレーニングと検証のサブセット

トレーニングの目的で、データセットは通常 2 つのサブセットに分割されます。

  1. トレーニング サブセット-画像のセットです。ニューラル ネットワークはこの画像セットでトレーニングされます。画像総数の70% 80 %を占めます
  2. 検証サブセット-トレーニング中にニューラル ネットワークがどの程度学習したかを確認するために使用される画像の小さなセットです。これらは画像総数の20%から30%を占めます

通常、ニューラル ネットワークは、トレーニング サブセットから抽出されたオブジェクトの特徴を使用して、オブジェクトの外観を「学習」します。つまり、トレーニングサイクル(エポック)の後、ニューラルネットワークは検証サブセットのデータを見て、それが "見て 「それらのオブジェクトに対して。正しい推測であろうと間違った推測であろうと、その構造によりニューラル ネットワークはさらに学習することができます。

このアプローチは広く使用されており、良好な結果が得られることがわかっていますが、私たちは別のアプローチを好み、データセットを次のようにサブセットに分割します。

  1. トレーニングサブセット-全画像の70 %
  2. 検証サブセット-全画像の20 %
  3. テストデータセット-全画像の10 %

テスト サブセットには、ニューラル ネットワークがこれまで見たことのないデータセットの画像が含まれているため、開発者はこのサブセットでモデルをテストして、手動でモデルがどの程度適切に機能するか、どの画像で問題が発生するかを確認できます。言い換えれば、このサブセットは、プロジェクトの開始前にニューラル ネットワークがどこで間違いを犯す可能性があるかを特定し、プロジェクト開始後の過度な再トレーニングを回避するのに役立ちます。

ステップ5 : データの省略

機械学習アルゴリズムのトレーニングに使用するデータに、予測しようとしている情報が含まれている場合、データ漏洩が発生する可能性があります。下の図に示すように、画像認識の観点から見ると、トレーニング サブセットと検証サブセット内の同じオブジェクトの写真が非常に類似している場合にデータ漏洩が発生します。明らかに、データの省略はニューラル ネットワークの品質に極めて悪影響を及ぼします。

基本的に、モデルはトレーニング データセット内の画像を見て、その特徴を抽出し、検証データセットに移動して、見たものとまったく同じ (または非常に類似した) 画像を見つけます。そのため、実際にモデルが学習しているというよりは、さまざまな情報を記憶しているような状態になります。これにより、検証データセットでは驚くほど高い精度(たとえば、最大98% )が得られるものの、本番環境では精度が非常に低くなることがあります。

現在、データ セットのセグメンテーションに最も一般的に使用されている方法は、データをランダムにシャッフルし、画像の最初の70% をトレーニング サブセットに選択し、残りの30% を検証サブセットに選択することです。この方法ではデータが欠落する可能性があります。下の図に示すように、最初の優先事項は、データセットからすべての「重複」写真を削除し、2 つのサブセットに類似の写真があるかどうかを確認することです。

このため、簡単なスクリプトを使用して重複排除を自動化できます。もちろん、重複しきい値を調整することもできます。たとえば、完全に重複した画像のみを削除したり、類似度が90%の画像のみを削除したりすることができます。一般的に、重複コンテンツが削除されるほど、ニューラル ネットワークの生成精度が高くなります。

ステップ6 : 大規模データセットデータベース

データセットが非常に大きい場合、例えば100,000超える場合 画像、および数十のオブジェクト クラスとサブクラスがある場合は、データセット情報を格納するためのシンプルなデータベースを作成することをお勧めします。その理由は実は非常に単純です。大規模なデータセットの場合、すべてのデータを追跡することが困難だからです。したがって、何らかの形でデータを構造化しないと、正確に分析することはできません。

データベースを使用すると、データセットをすばやく診断して、特定のカテゴリの画像が少なすぎるためにニューラル ネットワークがオブジェクトを認識するのが困難になっている、カテゴリ間での画像の分布が均一ではない、特定のカテゴリの Google 画像が多すぎるためにそのカテゴリの精度スコアが低い、などのことを発見できます。

シンプルなデータベースでは、次のような情報を含めることができます。

  1. ファイル名
  2. ファイルパス
  3. 注釈データ
  4. クラスデータ
  5. データ ソース (本番環境、Google など)
  6. オブジェクトの種類、名前、その他のオブジェクト関連情報

データベースは統計データセットを収集するために欠かせないツールであると言えます。これにより、データセットのバランスがどの程度か、各クラスに高品質(ニューラル ネットワークの観点から)の画像がいくつあるかをすばやく簡単に確認できます。以下のようにデータが直感的に提示されるため、データをより速く分析し、特定された結果と比較して、精度が低い原因を見つけることができます。

精度が低い理由の 1 つは、画像の数が少ないことや、特定のカテゴリの Google フォトの割合が高いことによる可能性があることに留意してください。このようなデータベースを作成することで、生産、テスト、モデルの再トレーニングにかかる​​時間を大幅に短縮できます。

ステップ7 : データセットの強化

データ拡張は、画像の数を増やすために使用される技術です。これは、データの有効性を向上させるために、反転やスタイル転送などの単純または複雑な変換をデータに適用するプロセスです。このようにして得られた有効なデータセットには、過度なトレーニングは必要ありません。下の図に示すように、このようなデータ変換は、画像を90度回転させるだけの単純なものから、逆光の写真やレンズフレアをシミュレートするために画像に太陽フレアを追加するような複雑なものまであります。

通常、これらの拡張変換は自動的に実行されます。たとえば、データ拡張専用のPythonライブラリを準備することができます。現在、データ拡張には 2 つの種類があります。

  1. トレーニング前の拡張-トレーニング プロセスが開始される前に、データが拡張され、トレーニング サブセットに追加されます。もちろん、このような追加は、前述のデータの欠落を避けるために、データセットがトレーニング サブセットと検証サブセットに分割された後にのみ行うことができます。
  2. トレーニング中の拡張- PyTorchなどのフレームワークの組み込み画像変換技術を使用します

データセットのサイズを 10 倍に増やしても、ニューラル ネットワークの効率が 10 倍になるわけではないことに注意してください。実際、ネットワークのパフォーマンスが以前よりも低下する可能性があります。したがって、実稼働環境に関連する拡張機能のみを使用する必要があります。例えば、建物内に設置されたカメラの場合、通常の動作中に雨にさらされることはありません。したがって、画像に「雨のシーン」の強調を加える必要はまったくありません。

まとめ

しかし、ビジネスに AI を適用しようとしている人にとって、データセットは最も興味のない部分です。しかし、データセットがあらゆる画像認識プロジェクトの重要な部分であることは否定できません。さらに、ほとんどの画像認識プロジェクトでは、データセットの管理と整理にチームの多くの時間が費やされることがよくあります。最後に、AI プロジェクトから最良の結果を得るためにデータセットを適切に処理する方法をまとめます。

  1. ニューラルネットワークの要件に合わせて画像を切り取ったりサイズを変更したりします
  2. 天候や照明条件に基づいて現実世界の画像を撮影する
  3. ニューラルネットワークの要件に従って注釈を構築する
  4. ネットワークをトレーニングするためにすべての画像を使用することは避けてください。一部はテスト用に確保しておく必要がある
  5. データの欠落を避けるために検証データセット内の重複画像を削除します
  6. データセットを迅速に診断するためのデータベースを作成する
  7. 画像数を増やすためにデータ拡張をできるだけ使用しない

翻訳者紹介

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

原題:画像ベースの AI プロジェクト用のデータセットを準備するための 7 つのステップ、著者: Oleg Kokorin

<<:  ChatGPTが話せるようになりました! Siriなどのスマートアシスタントへの直接的な脅威

>>:  Open Interpreterは、大規模な言語モデルのコードをローカルで実行できるようにするオープンソースツールです。

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

ビジネスプロセス管理を使用してマイクロサービス、人、ロボットを調整する方法

DevOps チームがプロセスの自動化を計画している場合は、ビジネス プロセス管理 (BPM) エン...

インドは天気予報の精度を向上させ、異常気象に対処するためにAIをテストしている

ロイター通信は現地時間12月24日、インドが天気予報の精度向上のため、気候モデルの構築にAIの使用を...

一般的なスマートカーの7つの技術についてお話ししましょう

ハイテク業界は常に進化しており、毎週新たな革命的な変化が起こっています。当然のことながら、関連するニ...

テンセントクラウドがAIペイント製品をリリース、25以上の生成スタイルをサポート

9月10日、テンセントクラウドは9月7日に開催された2023テンセントグローバルデジタルエコシステム...

中国の新世代人工知能の新たなハイライトは何ですか?

[[255971]] 「インターネット+」から「AI+」まで、人工知能技術は経済と社会の発展に大き...

砂漠植林ロボットとフィットネス洗濯機:00年代以降の「あの同級生」が心を開いた

少し前、ビリビリのトップUP司会者「こんにちは先生、私の名前は何童雪です」が「Airdesk」を開発...

エッジAIとクラウドAIのバランスを見つける

エッジ AI により、ローカライズされた処理を通じてリアルタイムの機械学習が可能になり、即時のデータ...

...

...

第2回解析アルゴリズムコンテストが開始され、技術専門家があなたの参加を待っています

データスキルについてまだ不安がありますか?アルゴリズムの革新を適用できる場所はありませんか?こんなに...

...

人工知能産業は急速に発展しており、その規模は2020年には1600億ドルを超えるだろう

22日、「2018年中国IT市場年次大会」で、中国の中核人工知能産業の規模が2017年に700億元を...

商用 AI をマスターする: RAG と CRAG を使用したエンタープライズ レベルの AI プラットフォームの構築

当社のガイドで、ビジネスに AI の力を活用する方法を学びましょう。 RAG と CRAG の統合、...

...