【HALCON】add_sample_class_knn 関数について - k-NN分類器にサンプルを追加
2024-08-23
2024-08-23
HALCON
のadd_sample_class_knn
関数は、k-Nearest Neighbors (k-NN)
分類器に対して新しいサンプルを追加するための機能を提供します。サンプルは特徴ベクトルとクラスIDで構成され、分類器に追加されることでモデルの精度が向上します。k-NN
分類器は、最も近いサンプルを基にクラスを分類するアルゴリズムで、追加されたデータは次回のtrain_class_knn
関数で学習されます。画像分類やデータ分類において、データセットを拡張して精度を向上させる場面で特に役立ちます。
使用例
以下に、add_sample_class_knn
関数を使用してk-NN分類器
にサンプルを追加する具体的な例を示します。
* k-NN分類器を作成する
create_class_knn(3, 2, &KNNHandle)
* 特徴ベクトルとクラスIDを指定してサンプルを追加
add_sample_class_knn(KNNHandle, [0.7, 1.4], 1)
* 別のサンプルを追加
add_sample_class_knn(KNNHandle, [2.2, 3.0], 0)
* k-NN分類器をトレーニング
train_class_knn(KNNHandle)
この例では、create_class_knn
関数でk-NN分類器
を作成し、add_sample_class_knn
関数を使ってサンプルを追加しています。その後、train_class_knn
関数でモデルをトレーニングしています。
引数
KNNHandle
k-NN分類器
のハンドル。create_class_knn
関数で生成されたハンドルを指定します。Features
サンプルの特徴ベクトルです。各サンプルの特徴を数値の配列として指定し、k-NN分類器
の次元数と一致している必要があります。ClassID
サンプルが所属するクラスを指定します。各サンプルのクラスを整数値で指定します。
戻り値
add_sample_class_knn
関数は、追加されたサンプルが分類器に適用された状態を持つk-NN分類器
を返します。このデータは、後のトレーニングプロセスで使用されます。
応用例
画像分類タスクでの使用
この関数は、画像分類のためにk-NN
モデルをトレーニングする際に利用されます。各画像から抽出した特徴ベクトルを分類器に追加し、モデルの精度を高めることができます。
* 画像分類用の特徴ベクトルを追加
add_sample_class_knn(KNNHandle, [100, 150, 200], 2)
add_sample_class_knn(KNNHandle, [50, 60, 70], 1)
この例では、RGB値を特徴ベクトルとしてk-NN分類器
にサンプルを追加しています。
大規模データセットの処理
HALCON
のadd_sample_class_knn
関数は並列処理に対応しており、大規模なデータセットに対して効率的にサンプルを追加することが可能です。
* 並列処理でサンプルを追加
parallel(
add_sample_class_knn(KNNHandle, [0.9, 1.7], 1),
add_sample_class_knn(KNNHandle, [2.5, 3.4], 0)
)
このコードでは、複数のサンプルを並列に追加し、処理速度を向上させています。並列処理を利用することで、大量のデータセットでも効率的に学習が進められます。
注意点
Features
の長さは、k-NN分類器
を作成した際に指定した次元数と一致している必要があります。次元が異なる場合、エラーが発生するため注意が必要です。- 新しいサンプルは、
train_class_knn
関数を実行してモデルを再トレーニングするまで分類に反映されません。サンプルを追加した後には、必ず再トレーニングを行う必要があります。
まとめ
HALCON
のadd_sample_class_knn
関数は、k-Nearest Neighbors (k-NN)
分類器に新しいサンプルを追加し、モデルのトレーニングデータセットを拡張するための便利なツールです。画像分類や機械学習の精度向上に寄与し、並列処理にも対応しているため、大規模なデータセットに対しても迅速に処理が可能です。