分類子を改善する方法How to improve your classifier

このガイドでは、Custom Vision Service 分類子の品質を改善する方法について説明します。In this guide you will learn how to improve the quality of your Custom Vision Service classifier. 分類子の品質は、そこに提供するラベル付きデータの量、品質、多様性や、データセット全体のバランスがどれだけとれているかに依存します。The quality of your classifier depends on the amount, quality, and variety of the labeled data you provide it and how balanced the overall dataset is. 適切な分類子には、その分類子に送信されるものを代表する、バランスのとれたトレーニング データセットがあります。A good classifier has a balanced training dataset that is representative of what will be submitted to the classifier. このような分類子を構築するプロセスは反復的です。予想される結果に到達するために、数回のトレーニングが必要になることが一般的です。The process of building such a classifier is iterative; it's common to take a few rounds of training to reach expected results.

より正確な分類子の構築に役立つ一般的なパターンを次に示します。The following is a general pattern to help you build a more accurate classifier:

  1. 1 回目のトレーニングFirst-round training
  2. さらに画像を追加し、データのバランスをとる。再トレーニングAdd more images and balance data; retrain
  3. 背景、照明、オブジェクト サイズ、カメラ アングル、スタイルがさまざまな画像を追加する。再トレーニングAdd images with varying background, lighting, object size, camera angle, and style; retrain
  4. 新しい画像を使用して予測をテストするUse new image(s) to test prediction
  5. 予測結果に従って、既存のトレーニング データを変更するModify existing training data according to prediction results

オーバーフィットを防ぐPrevent overfitting

分類子は、画像が共通して持つ任意の特性に基づいて予測を行うことを学習することがあります。Sometimes, a classifier will learn to make predictions based on arbitrary characteristics that your images have in common. たとえば、リンゴと柑橘類を区別する分類子を作成しており、手の中のリンゴの画像と白いお皿の上の柑橘類の画像を使用している場合、その分類子はリンゴと柑橘類ではなく、手と白いお皿を不当に重視することがあります。For example, if you are creating a classifier for apples vs. citrus, and you've used images of apples in hands and of citrus on white plates, the classifier may give undue importance to hands vs. plates, rather than apples vs. citrus.

予期しない分類の画像

この問題を修正するには、より多様な画像を使用したトレーニングに関する次のガイダンスを使用し、さまざまなアングル、背景、オブジェクト サイズ、グループ、およびその他の変種を含む画像を提供します。To correct this problem, use the following guidance on training with more varied images: provide images with different angles, backgrounds, object size, groups, and other variations.

データの数量Data quantity

トレーニング画像の数は、最も重要な要素です。The number of training images is the most important factor. 開始点としてラベルごとに少なくとも 50 個の画像を使用することをお勧めします。We recommend using at least 50 images per label as a starting point. 画像が少ないほど、オーバー フィットのリスクが高くなり、パフォーマンスの数値は良い品質を示すことがありますが、実際のデータの処理に苦労する可能性があります。With fewer images, there's a higher risk of overfitting, and while your performance numbers may suggest good quality, your model may struggle with real-world data.

データのバランスData balance

トレーニング データの相対量を考慮することも重要です。It's also important to consider the relative quantities of your training data. たとえば 1 つのラベルに 500 個の画像を使用し、別のラベルに 50 個の画像を使用すると、不均衡なトレーニング データセットになります。For instance, using 500 images for one label and 50 images for another label makes for an imbalanced training dataset. これにより、あるラベルが他のラベルより、モデルの予測が正確になります。This will cause the model to be more accurate in predicting one label than another. 画像が最も少ないラベルと画像が最も多いラベルの間で少なくとも 1:2 の比率を維持すれば、より優れた結果が得られる可能性があります。You're likely to see better results if you maintain at least a 1:2 ratio between the label with the fewest images and the label with the most images. たとえば、画像が最も多いラベルに 500 個の画像がある場合、画像が最も少ないラベルにはトレーニングのために少なくとも 250 個の画像が必要です。For example, if the label with the most images has 500 images, the label with the least images should have at least 250 images for training.

データの多様性Data variety

通常の使用中に分類子に送信されるものを代表する画像を使用してください。Be sure to use images that are representative of what will be submitted to the classifier during normal use. そうしないと、分類子は、画像が共通して持つ任意の特性に基づいて予測を行うように学習する可能性があります。Otherwise, your classifier could learn to make predictions based on arbitrary characteristics that your images have in common. たとえば、リンゴと柑橘類を区別する分類子を作成しており、手の中のリンゴの画像と白いお皿の上の柑橘類の画像を使用している場合、その分類子はリンゴと柑橘類ではなく、手と白いお皿を不当に重視することがあります。For example, if you are creating a classifier for apples vs. citrus, and you've used images of apples in hands and of citrus on white plates, the classifier may give undue importance to hands vs. plates, rather than apples vs. citrus.

予期しない分類の画像

この問題を解決するには、多様な画像を含めて、分類子が十分に汎用化できるようにします。To correct this problem, include a variety of images to ensure that your classifier can generalize well. トレーニング セットをより多様にするために実行できるいくつかの方法を次に示します。Below are some ways you can make your training set more diverse:

  • 背景: さまざまな背景の前のオブジェクトの画像を提供します。Background: Provide images of your object in front of different backgrounds. 自然な背景の写真は、分類子により詳細な情報を提供するため、無彩色の背景の写真より優れています。Photos in natural contexts are better than photos in front of neutral backgrounds as they provide more information for the classifier.

    背景のサンプルの画像

  • 照明: 特に、予測に使用される画像にさまざまな照明が含まれている場合は、照明が多様な (たとえば、フラッシュで撮られた、露出が高いなど) 画像を提供します。Lighting: Provide images with varied lighting (that is, taken with flash, high exposure, and so on), especially if the images used for prediction have different lighting. これはまた、彩度、色相、および輝度が多様な画像を使用するためにも役立ちます。It is also helpful to use images with varying saturation, hue, and brightness.

    照明のサンプルの画像

  • オブジェクト サイズ: オブジェクトのサイズと数がさまざまに異なる画像を提供します (1 束のバナナや 1 本のバナナのクローズ アップの写真など)。Object Size: Provide images in which the objects vary in size and number (for example, a photo of bunches of bananas and a closeup of a single banana). さまざまなサイズは、分類子がより適切に一般化するのに役立ちます。Different sizing helps the classifier generalize better.

    サイズのサンプルの画像

  • カメラ アングル: さまざまなカメラ アングルで撮られた画像を提供します。Camera Angle: Provide images taken with different camera angles. または、すべての写真が固定されたカメラ (防犯カメラなど) で撮る必要がある場合は、オーバーフィット、つまり関連のないオブジェクト (街灯柱など) を重要な特徴として解釈することを回避するために、定期的に発生するオブジェクトごとに、異なるラベルを割り当てるようにしてください。Alternatively, if all of your photos must be taken with fixed cameras (such as surveillance cameras), be sure to assign a different label to every regularly-occurring object to avoid overfitting—interpreting unrelated objects (such as lampposts) as the key feature.

    アングルのサンプルの画像

  • スタイル: 同じクラスの異なるスタイル (同じ果物の異なる種類など) の画像を提供します。Style: Provide images of different styles of the same class (for example, different varieties of the same fruit). ただし、スタイルが極端に異なるオブジェクトの画像 (たとえば、ミッキー マウスに対して実物のネズミ) がある場合は、その個別の特徴をより適切に表すために、それらに別のクラスとしてラベルを付けることをお勧めします。However, if you have objects of drastically different styles (such as Mickey Mouse vs. a real-life mouse), we recommend you label them as separate classes to better represent their distinct features.

    スタイルのサンプルの画像

否定画像Negative images

分類子をより正確にする助けになるように、プロジェクトのある時点で、否定的サンプル の追加が必要になることがあります。At some point in your project, you may need to add negative samples to help make your classifier more accurate. 否定的サンプルとは、それ以外のどのタグとも一致しないタグです。Negative samples are those which do not match any of the other tags. これらの画像をアップロードするときには、画像に特殊な 否定用 ラベルを適用します。When you upload these images, apply the special Negative label to them.

注意

Custom Vision Service サービスは、イメージの自動否定処理をいくつかサポートしています。The Custom Vision Service supports some automatic negative image handling. たとえば、ブドウとバナナを区別する分類子を構築しており、予測のために片方の靴の画像を送信した場合、その分類子はブドウとバナナの両方について、その画像に 0% に近いスコアを付けるはずです。For example, if you are building a grape vs. banana classifier and submit an image of a shoe for prediction, the classifier should score that image as close to 0% for both grape and banana.

これに対して、否定画像がトレーニングで使用された画像の変動にすぎない場合は、その大きな類似点のために、モデルがその否定画像をラベル付きのクラスとして分類する可能性があります。On the other hand, in cases where the negative images are just a variation of the images used in training, it is likely that the model will classify the negative images as a labeled class due to the great similarities. たとえば、オレンジとグレープフルーツを区別する分類子があり、クレメンタインの画像を取り込んだ場合、クレメンタインの多くの特徴がオレンジの特徴と似ているため、その分類子はクレメンタインにオレンジとしてスコアを付ける可能性があります。For example, if you have an orange vs. grapefruit classifier, and you feed in an image of a clementine, it may score the clementine as an orange because many features of the clementine resemble those of oranges. 否定画像がこれと同じ性質である場合は、1 つ以上の追加のタグ (その他など) を作成し、トレーニング中に否定画像にこのタグのラベルを付けて、モデルがこれらのクラスをより適切に区別できるようにすることをお勧めします。If your negative images are of this nature, we recommend you create one or more additional tags (such as Other) and label the negative images with this tag during training to allow the model to better differentiate between these classes.

追加のトレーニングに予測画像を使用するUse prediction images for further training

予測エンドポイントにイメージを送信することによって、画像分類子を使用またはテストすると、Custom Vision サービスによって、それらの画像が格納されます。When you use or test the image classifier by submitting images to the prediction endpoint, the Custom Vision service stores those images. それらを使用して、モデルを改善できます。You can then use them to improve the model.

  1. 分類子に送信された画像を表示するには、Custom Vision Web ページを開き、プロジェクトに移動して [予測] タブを選択します。既定のビューには、現在のイテレーションのイメージが表示されます。To view images submitted to the classifier, open the Custom Vision web page, go to your project, and select the Predictions tab. The default view shows images from the current iteration. [Iteration](イテレーション) ドロップ ダウン メニューを使用すると、以前のイテレーションで送信されたイメージを表示できます。You can use the Iteration drop down menu to view images submitted during previous iterations.

    ビュー内に画像がある予測タブのスクリーン ショット

  2. イメージの上にポインターを置き、分類子が予測したタグを表示します。Hover over an image to see the tags that were predicted by the classifier. 分類子を最も改善できる画像が一番上に一覧表示されるように、画像が並べ替えられます。Images are sorted so that the ones which can bring the most improvements to the classifier are listed the top. さまざまな並べ替え方法を使用するには、 [並べ替え] セクションで選択します。To use a different sorting method, make a selection in the Sort section.

    既存のトレーニング データに画像を追加するには、画像を選択し、正しいタグを設定して [保存して閉じる] をクリックします。To add an image to your existing training data, select the image, set the correct tag(s), and click Save and close. 画像が [予測] から削除され、一連のトレーニング画像に追加されます。The image will be removed from Predictions and added to the set of training images. [Training Images] (トレーニング イメージ) タブを選択すると、これを表示できます。You can view it by selecting the Training Images tab.

    タグ付けページのイメージ

  3. 次に、 [トレーニング] ボタンを使用して、分類子を再トレーニングします。Then use the Train button to retrain the classifier.

予測を視覚的に検査するVisually inspect predictions

画像の予測を検査するには、 [Training Images](トレーニング イメージ) タブで、 [Iteration](イテレーション) ドロップダウン メニューから以前のトレーニング イテレーションを選択し、 [タグ] セクションで 1 つまたは複数のタグをチェックします。To inspect image predictions, go to the Training Images tab, select your previous training iteration in the Iteration drop-down menu, and check one or more tags under the Tags section. ビューでは、モデルが特定のタグを正しく予測できなかった各画像の周囲に赤いボックスが表示されているはずです。The view should now display a red box around each of the images for which the model failed to correctly predict the given tag.

イテレーション履歴のイメージ

視覚的な検査により、その後でさらにトレーニング データを追加するか、または既存のトレーニング データを変更することによって修正できるパターンを識別できる場合があります。Sometimes a visual inspection can identify patterns that you can then correct by adding more training data or modifying existing training data. たとえば、リンゴとライムを区別する分類子によって、すべての緑色のリンゴに誤ってライムとしてラベルが付けられる可能性があります。For example, a classifier for apples vs. limes may incorrectly label all green apples as limes. この問題は、緑色のリンゴのタグ付きの画像を含むトレーニング データを追加および提供することによって修正できます。You can then correct this problem by adding and providing training data that contains tagged images of green apples.

次のステップNext steps

このガイドでは、カスタム画像分類モデルをより正確にするためのいくつかの技法について説明しました。In this guide, you learned several techniques to make your custom image classification model more accurate. 次に、画像を予測 API に送信することによって、それらの画像をプログラムでテストする方法を説明します。Next, learn how to test images programmatically by submitting them to the Prediction API.