SiameseOI

SiameseOI is an NVIDIA-developed optical inspection model for PCB data and is included in the TAO Toolkit. SiameseOI supports the following tasks:

  • train

  • evaluate

  • inference

  • export

These tasks can be invoked from the TAO Toolkit Launcher using the following convention on the command-line:

Copy
Copied!
            

tao model optical_inspection <sub_task> <args_per_subtask>

Where args_per_subtask are the command-line arguments required for a given subtask. Each subtask is explained in detail in the following sections.

SiameseOI requires the data to be provided as image folders and CSV files. See the Data Annotation Format page for more information about the input data format for SiameseOI.

Configuring a Custom Dataset

This section provides an example configuration and commands for training SiameseOI using the dataset format described above. You will need to configure the augmentation_config mean and standard deviation based on your input dataset.

Here is an example spec file for training a SiameseOI model with a custom backbone on a custom dataset using the Data Annotation Format.

Copy
Copied!
            

results_dir: /path/to/experiment_results model: model_type: Siamese_3 model_backbone: custom embedding_vectors: 5 margin: 2.0 dataset: train_dataset: csv_path: /path/to/split/train.csv images_dir: /path/to/images_dir/ validation_dataset: csv_path: /path/to/split/val.csv images_dir: /path/to/images_dir/ image_ext: .jpg batch_size: 32 workers: 8 fpratio_sampling: 0.1 num_input: 4 input_map: LowAngleLight: 0 SolderLight: 1 UniformLight: 2 WhiteLight: 3 concat_type: linear grid_map: x: 2 y: 2 output_shape: - 100 - 100 augmentation_config: rgb_input_mean: [0.485, 0.456, 0.406] rgb_input_std: [0.229, 0.224, 0.225] train: optim: type: Adam lr: 0.0005 loss: contrastive num_epochs: 50 checkpoint_interval: 5 results_dir: "${results_dir}/train"

Parameter Data Type Default Description
model dict config The configuration of the model architecture
dataset dict config The configuration for the dataset detailed in the Config section
train dict config The configuration for training parameters, which is detailed in the Train section
results_dir string The path to save the model experiment log outputs and model checkpoints
results_dir string The path to save the model training experiment log outputs and model checkpoints
checkpoint_interval int 5 The interval at which the checkpoint needs to be saved
num_epochs int 20 The total number of epochs to run the experiment
optim dict config None Contains the configurable parameters for the SiameseOI optimizer detailed in the optim section.
loss str contrastive The loss function used during training

optim

Copy
Copied!
            

optim: lr: 0.0005

Parameter Datatype Default Description Supported Values
lr float 0.0005 The learning rate >=0.0

The following example model config provides options to change the SiameseOI architecture for training.

Copy
Copied!
            

model: model_type: Siamese_3 model_backbone: custom embedding_vectors: 5 margin: 2.0

The following example model is used during SiameseOI evaluation/inference.

Parameter Datatype Default Description Supported Values
model_type string Siamese_3 The default model architecture from the supported custom model architectures Siamese_3, Siamese_1
model_backbone string custom The name of the backbone to use custom
embedding_vectors int 5 The embedding dimensions of the final output from the model before computing Euclidian distance
margin float 2.0 The threshold parameter that determines the minimum distance between embeddings of positive and negative pairs

The dataset parameter defines the dataset source, training batch size, augmentation, and pre-processing. An example dataset is provided below.

Copy
Copied!
            

dataset: train_dataset: csv_path: /path/to/split/train.csv images_dir: /path/to/images_dir/ validation_dataset: csv_path: /path/to/split/val.csv images_dir: /path/to/images_dir/ image_ext: .jpg batch_size: 32 workers: 8 fpratio_sampling: 0.1 num_input: 4 input_map: LowAngleLight: 0 SolderLight: 1 UniformLight: 2 WhiteLight: 3 concat_type: linear grid_map: x: 2 y: 2 output_shape: - 100 - 100 augmentation_config: rgb_input_mean: [0.485, 0.456, 0.406] rgb_input_std: [0.229, 0.224, 0.225]

Parameter Datatype Default Description Supported Values
train_dataset Dict The paths to the image directory and CSV files for the training dataset
validation_dataset Dict The paths to the image directory and CSV files for the validation dataset
image_ext str .jpg The file extension of the images in the dataset string
batch_size int 32 The number of samples per batch string
workers int 8 The number of worker processes for data loading
fpratio_sampling int 0.1 The ratio of false-positive examples to sample >0
num_input int 4 The number of lighting conditions for each input image* >0
input_map Dict The mapping of lighting conditions to indices specifying concatenation ordering*
concat_type string linear Type of concatenation to use for different image lighting conditions linear, grid

grid_map

Dict

Dict

dict config

None

None

None

The parameters to define the grid dimensions to concatenate images as a grid:

* x: The number of images along the x-axis

* y: The number of images along the y-axis

Dict

output_shape List[int] [100, 100] Image resolution of each lighting condition to be reshaped before concatenation >=0

augmentation_config

Dict

List[float]

List[float]

None

[0.485, 0.456, 0.406]

[0.229, 0.224, 0.225]

The image normalization config, which contains the following parameters:

* rgb_input_mean: The mean to be subtracted for pre-processing

* rgb_input_std: The standard deviation to divide the image by

>=0.0

>=0.0

* See the Dataset Annotation Format definition for more information about specifying lighting conditions.

Use the following command to run SiameseOI training:

Copy
Copied!
            

tao model optical_inspection train -e <experiment_spec_file> -r <results_dir> --gpus <num_gpus>

Required Arguments

  • -e, --experiment_spec_file: The path to the experiment spec file

  • -r, --results_dir: The path to a folder where the experiment outputs should be written

Optional Arguments

  • --gpus: The number of GPUs to use for training. The default value is 1.

Here’s an example of using the SiameseOI training command:

Copy
Copied!
            

tao model optical_inspection train -e $DEFAULT_SPEC -r $RESULTS_DIR --gpus $NUM_GPUs

Here is an example spec file for testing evaluation and inference of a trained SiameseOI model.

Copy
Copied!
            

results_dir: /path/to/experiment_results model: model_type: Siamese_3 model_backbone: custom embedding_vectors: 5 margin: 2.0 dataset: validation_dataset: csv_path: /path/to/split/val.csv images_dir: /path/to/images_dir/ image_ext: .jpg batch_size: 32 workers: 8 num_input: 4 input_map: LowAngleLight: 0 SolderLight: 1 UniformLight: 2 WhiteLight: 3 concat_type: linear grid_map: x: 2 y: 2 output_shape: - 100 - 100 augmentation_config: rgb_input_mean: [0.485, 0.456, 0.406] rgb_input_std: [0.229, 0.224, 0.225] evaluate: gpu_id: 0 checkpoint: "${results_dir}/train/oi_model_epoch=019.pth" results_dir: "${results_dir}/evaluate" inference: gpu_id: 0 checkpoint: "${results_dir}/train/oi_model_epoch=004.pth" results_dir: "${results_dir}/inference"

Use the following command to run SiameseOI evaluation:

Copy
Copied!
            

tao model optical_inspection evaluate -e <experiment_spec> -r <results_dir>

Required Arguments

  • -e, --experiment_spec_file: The experiment spec file to set up the evaluation experiment

  • -r, --results_dir: The path to a folder where the experiment outputs should be written

Here’s an example of using the SiameseOI evaluation command:

Copy
Copied!
            

tao model optical_inspection evaluate -e $DEFAULT_SPEC -r $RESULTS_DIR

Use the following command to run inference on SiameseOI with the .tlt model:

Copy
Copied!
            

tao model optical_inspection inference -e <experiment_spec> -r <results_dir>

Required Arguments

  • -e, --experiment_spec_file: The experiment spec file to set up the evaluation experiment

  • -r, --results_dir: The path to a folder where the experiment outputs should be written

Here’s an example of using the SiameseOI inference command:

Copy
Copied!
            

tao model optical_inspection inference -e $DEFAULT_SPEC -r $RESULTS_DIR

Here is an example spec file for exporting the trained SiameseOI model:

Copy
Copied!
            

export: checkpoint: "${results_dir}/train/oi_model_epoch=004.pth" results_dir: "${results_dir}/export" onnx_file: "${export.results_dir}/oi_model.onnx" batch_size: 32

Use the following command to export the model:

Copy
Copied!
            

tao model optical_inspection export [-h] -e <experiment spec file> -r <results_dir>

Required Arguments

  • -e, --experiment_spec_file: The experiment spec file to set up the evaluation experiment

  • -r, --results_dir: The path to a folder where the experiment outputs should be written

Sample Usage

The following is an example export command:

Copy
Copied!
            

tao model optical_inspection export -e /path/to/spec.yaml -r $RESULTS_DIR

Previous Optical Inspection
Next VisualChangeNet
© Copyright 2024, NVIDIA. Last updated on Mar 22, 2024.