【HALCON】add_deformable_surface_model_sample 関数について - 変形可能な表面モデルにサンプルを追加する
2024-08-23
2024-08-23
HALCON
のadd_deformable_surface_model_sample
関数は、変形可能な表面モデルに新しいサンプル変形を追加し、モデルを再トレーニングするために使用されます。この関数により、モデルはより多くの変形データを学習し、将来の類似した変形の検出精度が向上します。追加するサンプルは、find_deformable_surface_model
関数やrefine_deformable_surface_model
関数で取得された3Dオブジェクトモデル
を使用します。
モデルにサンプルを追加すると、そのサンプルがトレーニングデータに組み込まれ、変形検出の際にそのパターンが認識されやすくなります。
使用例
以下は、HALCON
のadd_deformable_surface_model_sample
関数を使って、変形可能な表面モデルにサンプルを追加する手順の例です。
* 変形可能な表面モデルを作成
create_deformable_surface_model(..., &DeformableSurfaceModel)
* 3Dオブジェクトモデルを取得
find_deformable_surface_model(..., &ObjectModel3D)
* サンプル変形をモデルに追加
add_deformable_surface_model_sample(DeformableSurfaceModel, ObjectModel3D)
このコードでは、まず変形可能な表面モデルを作成し、その後find_deformable_surface_model
関数を使用して取得された3Dオブジェクトモデル
をadd_deformable_surface_model_sample
関数に渡して、モデルに新しいサンプルを追加しています。
引数
-
DeformableSurfaceModel
変形可能な表面モデルのハンドル。create_deformable_surface_model
関数で生成されたものを指定します。 -
ObjectModel3D
追加する3Dオブジェクトモデルのハンドル。このモデルは、既存の変形可能な表面モデルにサンプルとして追加されます。オブジェクトモデル内の点群は、トレーニング済みの変形モデルと一致する必要があります。
戻り値
add_deformable_surface_model_sample
関数の戻り値は、サンプルが正常に追加され、モデルが再トレーニングされた場合に返されるH_MSG_TRUE
です。エラーが発生した場合には、エラーメッセージが返されます。特に、サンプルの点群の数が一致しない場合にはエラーが発生します。
応用例
モデルの再トレーニングと精度向上
add_deformable_surface_model_sample
関数を使用することで、モデルに追加のサンプル変形を学習させ、モデルの精度を向上させることができます。例えば、異なる変形のパターンを複数回追加することで、将来的に類似の形状が検出される可能性を高めることができます。
* 変形の異なるサンプルをモデルに追加
create_deformable_surface_model(..., &DeformableSurfaceModel)
for (i = 0; i < NumSamples; i++)
{
refine_deformable_surface_model(..., &ObjectModel3D)
add_deformable_surface_model_sample(DeformableSurfaceModel, ObjectModel3D)
}
このコードでは、複数の変形サンプルをモデルに追加し、モデルがさまざまな変形パターンに対応できるようにしています。
並列処理の活用
HALCON
のadd_deformable_surface_model_sample
関数は、再入可能な設計がされており、複数のスレッドから同時に使用することが可能です。ただし、並列処理でこの関数を使用する場合には、各スレッドで使用するモデルハンドルやデータセットに注意する必要があります。
* 並列処理で複数のサンプルを追加
parallel(
add_deformable_surface_model_sample(DeformableSurfaceModel, ObjectModel3D1),
add_deformable_surface_model_sample(DeformableSurfaceModel, ObjectModel3D2)
)
この例では、異なるスレッドで同時にサンプルをモデルに追加し、処理速度の向上を図っています。
注意点
サンプルとして追加するObjectModel3D
の点群は、既存の変形モデルと同じ数の点を持つ必要があります。この要件が満たされない場合、エラーが発生し、追加が失敗します。また、サンプルの品質がモデルの精度に影響するため、前処理を適切に行うことが重要です。
特に、モデルのトレーニングデータに含めるサンプルは、多様であるほど変形検出の精度が向上するため、さまざまな変形パターンを含むデータを収集することが推奨されます。
まとめ
HALCON
のadd_deformable_surface_model_sample
関数は、変形可能な表面モデルに新しいサンプル変形を追加し、モデルを再トレーニングするための強力なツールです。この機能を活用することで、モデルの精度を高め、より多様な変形に対応できるようになります。また、並列処理を利用することで、大規模なデータセットに対する効率的な処理も実現可能です。サンプルの品質と適切な処理を行うことで、より信頼性の高いモデルを構築できます。