翻訳者| ##データセットが機械学習プロジェクトで最も見落とされている部分である可能性があることに気づいたでしょうか。ほとんどの人にとって、データセットは、すぐにまとめられるかダウンロードされる既製の画像のコレクションにすぎません。実際、データセットは画像ベースの人工知能 (AI) プロジェクトの基礎です。高精度の達成を目指す機械学習プロジェクトでは、バランスの取れた適切に構造化されたデータセットを作成および管理することが重要です。
# ただし、データセットの作成は、何百もの画像を収集するほど簡単ではありません。 AIプロジェクトを始めようとすると、さまざまな隠れた危険に遭遇する可能性があります。以下では、データセットのサイズ、データの欠落の可能性、データセットのデータベースへの変換の重要性について洞察を得るために、独自のデータセットを作成するために実行できる 7 つの一般的な手順について説明します。
#注: これらの手順は主に、画像データセットを含むオブジェクト検出および分類プロジェクトに適用されます。 NLP
やグラフィックス プロジェクトなど、他のプロジェクト タイプでは、別のアプローチが必要です。手順
1: 画像サイズ
通常、ニューラル ネットワークは特定のサイズの画像のみを処理でき、しきい値を超える画像は強制的に縮小されます。これは、データセットを使用する前に、適切なニューラル ネットワークを選択し、それに応じて画像のサイズを変更する必要があることを意味しますほとんどのニューラル ネットワークが処理できる画像サイズは、
Yolo のように比較的小さいですが、 v5x6などの最新のニューラル ネットワークは、より大きな解像度の画像を処理できます。たとえば、Yolo v5x
s6
は、最大 1280 ピクセルの画像を処理できます。ワイドなイメージ。
#ステップ 2:あなたの環境# #を理解する#ニューラル ネットワークが動作中に認識する必要がある実際の画像をデータ セットが正確に反映できるようにするには、次の点に注意する必要があります。データセットの収集: カメラの種類、スマートフォンカメラまたはセキュリティカメラ
気象条件 (光、雨、霧、雪など)
形式とコメント
注意する必要があるもう 1 つの重要な側面は、画像の形式です。プロジェクトを開始する前に、選択したフレームワークがサポートする形式と、画像がこれらの要件を満たせるかどうかを確認してください。現在のフレームワークは複数の画像形式をサポートできますが、
.jfifなどの形式には依然として問題があります。
注釈データを使用して、境界ボックス、ファイル名、および使用できるさまざまな構造を指定できます。一般に、ニューラル ネットワークとフレームワークが異なれば、必要なアノテーション方法も異なります。境界ボックスの位置を含む絶対座標を必要とするもの、相対座標を必要とするもの、各画像に注釈付きの個別の .txt ファイルを伴うもの、または 1 つのファイルのみを必要とするものもあります。すべてのコメントが含まれています。ご覧のとおり、データセットに優れた画像が含まれていても、フレームワークがアノテーションを処理できない場合は役に立ちません。
トレーニングの目的で、データセットは通常 2 つのサブセットに分割されます:
通常、ニューラル ネットワークは、トレーニング サブセットから抽出されたオブジェクトの特徴を使用して、外観を「学習」します。オブジェクトの。つまり、トレーニング期間 (エポック) の後、ニューラル ネットワークは検証サブセット データを調べ、何ができるかを推測しようとします。 "Look " をそれらのオブジェクトに送信します。推測が正しいか間違っているかにかかわらず、その構造により、ニューラル ネットワークはさらに学習することができます。
この方法は広く使用されており、良好な結果が得られることが証明されていますが、データを組み合わせる別のアプローチを採用することを好みます。セットは次のように分かれています。サブセット:
##このセットには、ニューラル ネットワークがこれまでに見たことのないデータセットの画像が含まれているため、開発者はこのサブセットでモデルをテストして、手動で実行した場合にどの程度うまく機能するか、どの画像で問題があるかを確認できます。言い換えれば、このサブセットは、プロジェクトの開始前にニューラル ネットワークが間違いを犯す可能性のある場所を特定するのに役立ち、それによってプロジェクト開始後の過剰な再トレーニングを回避できます。
Step
本質的に、モデルはトレーニング データ セット内の画像を認識した後、まずその特徴を抽出し、次にその特徴を抽出します。検証データセットを使用して、見たのとまったく同じ (またはよく似た) 画像を見つけます。したがって、モデルは実際に学習していると言うよりも、単にさまざまな情報を記憶していると言った方が適切です。場合によっては、検証データセットでは非常に高い精度 (例:
98%という高さ) が得られますが、運用環境では精度が非常に低くなります。 最も一般的に使用されるデータセットのセグメント化方法の 1 つは、データをランダムにシャッフルし、上位の
70%を選択することです。 画像はトレーニング サブセットに配置され、残りの 30% は検証サブセットに配置されます。この方法では、データの欠落が発生しやすいです。以下の図に示すように、当面の優先事項は、データセットからすべての「重複」写真を削除し、両方のサブセットに類似の写真が存在するかどうかを確認することです。
このために、簡単なスクリプトを使用して重複の削除を自動的に実行できます。もちろん、重複のしきい値を調整することもできます。たとえば、完全に重複した画像、または 90% 程度の類似性を持つ画像のみを削除するなどです。一般に、重複コンテンツがより多く削除されるほど、ニューラル ネットワークが生成する精度は高くなります。
##データセットが非常に大きい場合、たとえば、 10million 画像を超え、数十の Forオブジェクト クラスとサブクラスを使用する場合は、データ セット情報を保存するための単純なデータベースを作成することをお勧めします。この背後にある理由は実際には非常に単純です。大規模なデータ セットでは、すべてのデータを追跡するのが困難です。したがって、データを構造化して処理しなければ、データを正確に分析することはできません。
データベースを通じて、データ セットを迅速に診断し、次のことを確認できます。特定のカテゴリ内の画像が少なすぎると、ニューラル ネットワークによる処理が困難になります。オブジェクトを認識する; カテゴリ間の画像の分布が均等ではない; 特定のカテゴリに Google 画像が多すぎるため、そのカテゴリの精度スコアが低くなる、など。
#単純なデータベースを使用すると、次の情報を含めることができます:
書き直す必要があるのは次のとおりです: 注目に値する問題の 1 つは、精度が低い理由は、画像の数が少ないこと、または特定のカテゴリの Google フォトの割合が高いことが原因である可能性があることです。このようなデータベースを作成すると、実稼働、テスト、モデルの再トレーニングにかかる時間を大幅に短縮できます
#Step
90 度回転するだけの単純なものもあれば、逆光の写真をシミュレートするために画像に太陽フレアを追加するような複雑なものもあり得ます。またはレンズフレア。
通常、これらの拡張変換は自動化されます。たとえば、データ拡張専用の
Python ライブラリを準備できます。現在、データ拡張には次の 2 種類があります。
事前トレーニング拡張AI をビジネスに応用しようとしている人にとって、データセットは最も興味のない部分です。しかし、データセットが画像認識プロジェクトの重要な部分であることは否定できません。さらに、ほとんどの画像認識プロジェクトでは、データセットの管理と編成にチームが多くの時間を費やすことがよくあります。最後に、データセットを適切に処理して AI プロジェクトから最良の結果を得る方法をまとめます。
#元のタイトル:
画像ベースの AI プロジェクト用にデータセットを準備する 7 つのステップ by オレグ・ココリン
以上が画像 AI プロジェクト用のデータセットを準備する 7 つのステップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。