OpenCV での SVM トレーニングのための画像特徴抽出
サポート ベクター マシン (SVM) を使用した画像分類タスクでは、特徴抽出が重要な役割を果たしますモデルのパフォーマンスで。 OpenCV を使用すると、効率的なアルゴリズムを活用して、生のピクセル データを、SVM トレーニングを容易にする意味のある特徴に変換できます。
OpenCV で SVM トレーニング用に画像から特徴を抽出するには、以下の手順に従います。
1.画像を 1D 行列に変換:
SVM は 1 次元形式の入力データを必要とするため、画像を 1D 行列に変換する必要があります。これを実現するには、reshape() 関数を使用して画像データを 1 つの行に平坦化します:
import numpy as np import cv2 img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) img_flattened = np.reshape(img, (1, -1))
2。トレーニング行列の構築:
SVM のトレーニング行列は行のセットで構成され、各行は画像の抽出された特徴を表します。必要な行数 (画像の数) と列数 (特徴の総数) を使用して行列を初期化します。
training_matrix = np.zeros((num_images, num_features))
3.トレーニング行列の入力:
各画像を反復処理し、抽出された特徴をトレーニング行列に入力します。これは、画像ピクセルを反復処理し、そのグレースケール値を行列内の対応する要素に割り当てることで実行できます:
for i in range(num_images): img = cv2.imread(f'image{i}.jpg', cv2.IMREAD_GRAYSCALE) img_flattened = np.reshape(img, (1, -1)) training_matrix[i, :] = img_flattened
4。ラベリング:
トレーニング マトリックスの各画像にクラス ラベルを割り当てます。これには、トレーニング行列の行に対応する個別の 1D ラベル行列の作成と、各画像のラベルの設定が含まれます。
5. SVM のトレーニング:
トレーニング データの準備ができたら、抽出された特徴を使用して SVM をトレーニングできます。これには、svm_type や kernel_type などの SVM パラメータの設定と、SVM オブジェクトの初期化が含まれます。
svm = cv2.ml.SVM_create() svm.train(training_matrix, cv2.ml.ROW_SAMPLE, labels)
一度トレーニングされた SVM は、新しい画像から特徴を抽出し、そのラベルを予測することにより、分類タスクに使用できます。
以上がOpenCV を使用して SVM トレーニング用の画像特徴を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。