VAD Parameter
experimental_plan.yaml 설명
내가 갖고 있는 데이터에 AI Contents를 적용하려면 데이터에 대한 정보와 사용할 Contents 기능들을 experimental_plan.yaml 파일에 기입해야 합니다. AI Contents를 solution 폴더에 설치하면 solution 폴더 아래에 contents 마다 기본으로 작성되어있는 experimental_plan.yaml 파일을 확인할 수 있습니다. 이 yaml 파일에 '데이터 정보'를 입력하고 function마다 제공하는 'user arugments'를 수정/추가하여 ALO를 실행하면, 원하는 세팅으로 데이터 분석 모델을 생성할 수 있습니다.
experimental_plan.yaml 구조
experimental_plan.yaml에는 ALO를 구동하는데 필요한 다양한 setting값이 작성되어 있습니다. 이 setting값 중 train/inference 항목의 'dataset_uri'와 'function'부분을 수정하면 AI Contents를 바로 사용할 수 있습니다.
데이터 경로 입력(dataset_uri
)
train
혹은inference
의 parameter는 불러올 파일의 경로나 저장할 파일의 경로를 지정할 때 사용합니다.
train:
dataset_uri: sample_data/train/ # 데이터 폴더, 폴더 리스트 (파일 형식 불가)
# dataset_uri: s3://mellerikat-test/tmp/alo/ # 예제1) S3 key(prefix) 이하 경로 모든 폴더, 파일
artifact_uri: train_artifact/
pipeline: \[input, readiness, train2\] # 실행 대상 function 목록
inference:
dataset_uri: sample_data/inference/
# model_uri: model_artifacts/n100_depth5.pkl # 이미 학습된 모델을 load
artifact_uri: inference_artifact/ # Optional) pipeline['artifact']['workspace'] 경로 이하에 저장된 파일에 대해 압축 및 업로드 경로 정의. default 경로 이하 inferenece.tar.gz으로 업로드 됨
pipeline: \[input, readiness, inference2\]
파라미터명 | DEFAULT | 설명 및 옵션 |
---|---|---|
dataset_uri (train) | ./sample_data/train/ | 학습 데이터가 위치한 폴더 경로를 입력합니다.(csv 파일 명 입력 X) |
dataset_uri (inference) | ./sample_data/inference/ | 추론 데이터가 위치한 폴더 경로를 입력합니다.(csv 파일 명 입력 X) |
artifact_uri | train(inference)_artifact/ | 학습 및 추론 결과의 산출물이 저장되는 폴더 경로를 입력합니다. |
*입력한 경로 하위 폴더 안에 있는 파일도 모두 가져와 합칩니다. *합칠 파일의 모든 컬럼 명은 동일해야 합니다.
사용자 파라미터(function
)
function
아래 항목들은 함수 명을 의미합니다. 아래function: input
은 input step임을 의미합니다.argument
는 input function(function: input
)의 user arguments를 의미합니다. user arguments는 각 function마다 제공하는 데이터 분석 관련 설정 파라미터입니다. 이에 대한 설명은 아래에 User arguments 설명을 확인해주세요.
function: # Required) 사용자 정의 함수
input:
def: vad.input_function # {python 파일 명}.{함수 이름} 형태로 구성
argument:
file_type: csv
encoding: utf-8
...
User arguments 설명
User arguments란?
User arguments는 각 asset 별 동작 설정을 위한 파라미터로 experimental_plan.yaml의 각 step step의 args
밑에 기입해 사용합니다. AI Contents의 pipeline을 구성하는 function마다 사용자가 다양한 기능을 데이터에 적용할 수 있도록 user arguments를 제공하고 있습니다. 사용자는 아래 가이드를 참고해서 user arguments를 변경, 추가하여 데이터에 맞는 모델링을 할 수 있습니다.
User arguments는 experimental_plan.yaml에 미리 작성되어있는 "필수 arguments"와 사용자가 가이드를 보고 추가하는 "Custom arguments"로 구분됩니다.
필수 arguments
- 필수 arguments는 experimental_plan.yaml에 바로 보여지는 기본 arguments 입니다. 대부분의 필수 arguments는 default 값이 내장되어 있습니다. default 값이 있는 arguments의 경우에는 유저가 별도로 값을 설정하지 않아도 기본 값으로 동작합니다.
- experimental_plan.yaml의 필수 arguments중 데이터 관련 arguments는 유저가 필수로 값을 설정해주어야 합니다. (ex. model_name, percentile)
Custom arguments
- Custom arguments는 experimental_plan.yaml에 적혀있지 않지만, function에서 제공하는 기능으로 사용자가 experimental_plan.yaml에 추가하여 사용할 수 있습니다. 각 function 별 'argument'에 추가하여 사용합니다.
VAD의 pipeline은 **Input - Readiness - Modeling(train/inference) ** function 순으로 구성되어 있으며 각 function의 기능에 맞추어 user arguments가 다르게 구성되어 있습니다. experimental_plan.yaml에 기입되어 있는 필수 user arguments를 먼저 사용해보시고, user arguments를 추가하여 데이터에 딱 맞는 VAD 모델을 만들어보세요!
train:
...
pipeline: \[input, readiness, train2\] # 실행 대상 function 목록
inference:
...
pipeline: \[input, readiness, inference2\] # 실행 대상 function 목록
User arguments 요약
아래는 VAD의 user arguments 요약입니다. 'Argument 명'을 누르면 해당 arguments의 상세 설명으로 이동할 수 있습니다.
Default
- 'Default' 항목은 해당 user argument의 기본 값 입니다.
- 기본 값이 없는 경우 '-' 로 표기하였습니다.
- default에 로직이 있는 경우에는 '설명 참고'로 표기하였습니다. 'Argument 명'을 눌러 상세 설명을 확인해 주세요
ui_args
- 아래 표의 'ui_args'는 AI Conductor의 UI에서 argument 값을 변경할 수 있는
ui_args
기능 지원 여부를 나타냅니다. - O: experimental_plan.yaml의
ui_args
밑에 해당 argument 명을 입력하면 AI Conductor UI에서 arguments 값을 변경할 수 있습니다. - X:
ui_args
기능을 지원하지 않습니다. ui_args
에 대한 자세한 설명은 다음 가이드를 확인해 주세요. Write UI Parametersetting/solution_info.yaml
하단에 아래 양식으로 추가하면 설정할 수 있습니다.
### ui_args 선언 부 ###
ui_args:
function:
train:
default: fastflow
description: VAD로 사용할 모델을 선택합니다. 선택 가능한 값: fastflow, patchcore
name: model_name
selectable:
- fastflow
- patchcore
type: single_selection
```
#### 사용자 설정 필수 여부
- 아래 표의 '사용자 설정 필수 여부'는 AI Contents를 동작시키기 위해 사용자가 반드시 확인하고 변경해야 할 user arguments 입니다.
- O: 일반적으로 과제, 데이터 관련 정보를 입력하는 arguments로 사용자가 모델링 전에 확인해야 합니다.
- X: 사용자가 값을 변경하지 않으면 default 값으로 모델링이 진행됩니다.
| Asset명 | Argument type | Argument 명 | Default | 설명 | 사용자 설정 필수 여부 | ui_args |
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| Input | Custom | [file_type](#file_type) | csv | input data의 파일 확장자를 입력합니다.|O|X|
| Input | Custom | [encoding](#encoding) | utf-8 | input data의 encoding type을 입력합니다.|X|X|
| Readiness | Custom | [ok_class](#ok_class) | | y_column에서 ok를 의미하는 class를 입력합니다. |X|X|
| Readiness | Custom | [train_validate_column](#train_validate_column) | | train과 validation을 구분하는 컬럼을 입력합니다. 해당 컬럼에는 train과 valid 두 인자로 구성되야합니다. |X|X|
| Readiness | Custom | [validation_split_rate](#validation_split_rate) | 0.1 | train_validate_column이 존재하지 않는 경우, 입력된 train 데이터에서 해당 rate만큼 validation을 생성합니다. |X|X|
| Readiness | Custom | [threshold_method](#threshold_method) | F1 | Validation시 OK와 NG를 판정하는 방법을 선택합니다. 선택 가능한 값: F1, Percentile (검증 데이터 수에 따라 자동 선택되기도 함.) |X|X|
| Readiness | Custom | [num_minor_threshold](#num_minor_threshold) | 5 | OK와 NG의 이미지 수가 이를 넘지 않으면 자동으로 threshold_method가 Percentile로 선택됩니다. |X|X|
| Readiness | Custom | [ratio_minor_threshold](#ratio_minor_threshold) | 0.1 | OK와 NG의 이미지의 비율이 이를 넘지 않으면 자동으로 threshold_method가 Percentile로 선택됩니다. |X|X|
| Train | 필수 | [model_name](#model_name) | fastflow | VAD로 사용할 모델을 선택합니다. 선택 가능한 값: fastflow, patchcore |O|O|
| Train | Custom | [experiment_seed](#experiment_seed) | 42 | pytorch 환경에서의 실험 seed를 결정합니다. |X|X|
| Train | Custom | [img_size](#img_size) | \[256,256\] | 이미지 학습시 변환될 이미지 사이즈를 설정합니다. 숫자만 입력한 경우 원본 이미지의 비율이 유지되도록 Resize 됩니다. (짧은 부분이 Resize 크기가 되고, 비율유지) |X|X|
| Train | Custom | [batch_size](#batch_size) | 4 | 학습 및 검증 시 batch size를 설정합니다. |X|X|
| Train | Custom | [max_epochs](#max_epochs) | 15 | 학습의 max epoch를 설정합니다. |X|X|
| Train | Custom | [accelerator](#accelerator) | cpu | cpu 혹은 gpu를 기반으로 돌릴지를 선택합니다. gpu가 가능한 환경에서는 gpu 선택을 추천합니다. |X|X|
| Train | Custom | [monitor_metric](#monitor_metric) | image_AUROC | best 모델을 저장할 때의 기준을 선택합니다. threshold_method가 Percentile인 경우, 자동으로 loss이 선택됩니다. 선택 가능한 값: loss, image_AUROC, image_F1Score |X|X|
| Train | Custom | [save_validation_heatmap](#save_validation_heatmap) | True | Validation 데이터셋에 대한 예측 히트맵을 저장할지 여부를 선택합니다. (ok-ng, ng-ok, ng-ng 경우만 저장) |X|X|
| Train | Custom | [percentile](#percentile) | 0.8 | threshold_method가 Percentile인 경우 NG로 판정할 기준으로 Validation 데이터셋의 anomaly score의 percentile을 선택합니다. |X|X|
| Train | Custom | [augmentation_list](#augmentation_list) | \[\] | 임의 augmentation을 수행하기 위해 적용 하는 변환 목록입니다. rotation, brightness, contrast, saturation, hue, blur 중 여러 개를 사용할 수 있습니다. |X|X|
| Train | Custom | [augmentation_choice](#augmentation_choice) | 3 | 임의 augmentation을 수행하기 위해 적용하는 변환 횟수입니다. 선택 가능한 값: 0 이상 정수 |X|X|
| Train | Custom | [rotation_angle](#rotation_angle) | 10 | 임의 augmentation 중 회전 가능한 최대 각도입니다. 10으로 설정한 경우 -10에서 10 사이로 변환을 수행합니다.선택 가능한 값: 0이상 180이하 정수|X|X|
| Train | Custom | [brightness_degree](#brightness_degree) | 0.3 | 임의 augmentation 중 밝기 조절 정도입니다. 최대/최소 밝기 수준을 설정합니다. 선택 가능한 값: 0~1 실수 |X|X|
| Train | Custom | [contrast_degree](#contrast_degree) | 0.3 | 임의 augmentation 중 contrast 정도입니다. 선택 가능한 값: 0~1 실수|X|X|
| Train | Custom | [saturation_degree](#saturation_degree) | 0.3 | 임의 augmentation 중 saturation 정도입니다. 선택 가능한 값: 0~1 실수|X|X|
| Train | Custom | [hue_degree](#hue_degree) | 0.3 | 임의 augmentation 중 hue 정도입니다. 선택 가능한 값: 0~1 실수|X|X|
| Train | Custom | [blur_kernel_size](#blur_kernel_size) | 5 | 임의 augmentation 중 blur 커널 최대 크기입니다. 선택 가능한 값: 0~255 정수|X|X|
| Train | Custom | [model_parameters](#model_parameters) | \{"fastflow_backborn": 'resnet18', "fastflow_flow_steps": 8, "patchcore_backborn": 'wide_resnet50_2', "patchcore_coreset_sampling_ratio": 0.1, "patchcore_layers": \["layer2", "layer3"\]\} | 모델 학습과 관련된 파라미터. 설정하지 않으면 default 파라미터로 모델을 학습합니다. 자세한 내용은 하기 파라미터 설명을 참고해주세요. |X|X|
| Inference | Custom | [inference_threshold](#inference_threshold) | 0.5 | abnormal로 판정되기 위한 anomaly score의 threshold입니다. |X|X|
| Inference | Custom | [save_anomaly_maps](#save_anomaly_maps) | False | XAI 이미지 결과 저장 여부입니다. |X|X|
***
## User arguments 상세 설명
### Input asset
#### file_type
input data의 파일 확장자를 입력합니다.
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **csv (defualt)**
- 사용법
- file_type : csv
- ui_args: X
***
#### encoding
input data의 encoding type을 입력합니다.
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **utf-8 (defualt)**
- 사용법
- encoding : utf-8
- ui_args: X
***
### Readiness asset
#### ok_class
시간 정보의 입력 format입니다.y_column에서 ok를 의미하는 class를 입력합니다. 입력하지 않은 경우 ok_class는 학습 데이터셋에서 가장 많은 유형을 차지하는 이름으로 입력됩니다.
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **'' (defualt)**
- 사용법
- ok_class : good
- ui_args: O
***
#### train_validate_column
train과 validation을 구분하는 컬럼을 입력합니다. 해당 컬럼에는 train과 valid 두 인자로 구성되야합니다.
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **'' (defualt)**
- 사용법
- train_validate_colum : phase
- ui_args: X
***
#### validation_split_rate
train_validate_column이 존재하지 않는 경우, 입력된 train 데이터에서 해당 rate만큼 validation을 생성합니다.
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.1 (defualt)**
- 사용법
- validation_split_rate : 0.1
- ui_args: X
***
#### threshold_method
Validation시 OK와 NG를 판정하는 방법을 선택합니다. 선택 가능한 값: F1, Percentile (검증 데이터 수에 따라 자동 선택되기도 함.)
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **F1 (defualt)**
- Percentile
- 사용법
- threshold_method : Percentile
- ui_args: X
***
#### num_minor_threshold
OK와 NG의 이미지 수가 이를 넘지 않으면 자동으로 threshold_method가 Percentile로 선택됩니다.
- Argument type: Custom
- 입력 type
- integer
- 입력 가능한 값
- **5 (defualt)**
- 사용법
- num_minor_threshold : 5
- ui_args: X
***
#### ratio_minor_threshold
OK와 NG의 이미지의 비율이 이를 넘지 않으면 자동으로 threshold_method가 Percentile로 선택됩니다.
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.1 (defualt)**
- 사용법
- ratio_minor_threshold : 0.1
- ui_args: X
***
### Train asset
#### model_name
VAD로 사용할 모델을 선택합니다. 선택 가능한 값: fastflow, patchcore
- Argument type: 필수
- 입력 type
- string
- 입력 가능한 값
- **fastflow (defualt)**
- patchcore
- 사용법
- model_name : patchcore
- ui_args: O
***
#### img_size
이미지 학습시 변환될 이미지 사이즈를 설정합니다. 숫자만 입력한 경우 원본 이미지의 비율이 유지되도록 Resize 됩니다. (짧은 부분이 Resize 크기가 되고, 비율유지)
- Argument type: Custom
- 입력 type
- integer
- 입력 가능한 값
- **\[256,256\] (defualt)**
- 256
- 사용법
- img_size: \[256,256\]
- ui_args: X
***
#### batch_size
학습 및 검증 시 batch size를 설정합니다.
- Argument type: Custom
- 입력 type
- integer
- 입력 가능한 값
- **4 (defualt)**
- 사용법
- batch_size: 32
- ui_args: X
***
#### experiment_seed
pytorch 환경에서의 실험 seed를 결정합니다.
- Argument type: Custom
- 입력 type
- integer
- 입력 가능한 값
- **42 (defualt)**
- 사용법
- experiment_seed : 42
- ui_args: X
***
#### max_epochs
학습의 max epoch를 설정합니다.
- Argument type: Custom
- 입력 type
- integer
- 입력 가능한 값
- **15 (defualt)**
- 사용법
- max_epochs : 15
- ui_args: X
***
#### accelerator
cpu 혹은 gpu를 기반으로 돌릴지를 선택합니다. gpu가 가능한 환경에서는 gpu 선택을 추천합니다.
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **cpu (defualt)**
- gpu
- 사용법
- accelerator : gpu
- ui_args: X
***
#### monitor_metric
best 모델을 저장할 때의 기준을 선택합니다. threshold_method가 Percentile인 경우, 자동으로 loss가 선택됩니다. 선택 가능한 값: loss, image_AUROC, image_F1Score
- Argument type: Custom
- 입력 type
- string
- 입력 가능한 값
- **image_AUROC (defualt)**
- loss
- image_F1Score
- 사용법
- monitor_metric : loss
- ui_args: X
***
#### save_validation_heatmap
Validation 데이터셋에 대한 예측 히트맵을 저장할지 여부를 선택합니다. (ok-ng, ng-ok, ng-ng 경우만 저장)
- Argument type: Custom
- 입력 type
- bool
- 입력 가능한 값
- **True (defualt)**
- False
- 사용법
- save_validation_heatmap : True
- ui_args: X
***
#### percentile
threshold_method가 Percentile인 경우 NG로 판정할 기준으로 Validation 데이터셋의 anomaly score의 percentile을 선택합니다.
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.8 (defualt)**
- 사용법
- percentile : 0.8
- ui_args: X
***
#### augmentation_list
임의 augmentation을 수행하기 위해 적용하는 변환 목록입니다. rotation, brightness, contrast, saturation, hue, blur 중 여러 개를 사용할 수 있습니다.
- Argument type: Custom
- 입력 type
- list
- 입력 가능한 값
- **\[\] (defualt)**
- rotation, brightness, contrast, saturation, hue, blur
- 사용법
- augmentation_list : \[rotation, brightness, contrast, saturation, hue, blur\]
- ui_args: X
***
#### augmentation_choice
임의 augmentation을 수행하기 위해 적용하는 변환 횟수입니다. 선택 가능한 값: 0 이상 정수
- Argument type: Custom
- 입력 type
- int
- 입력 가능한 값
- **3 (defualt)**
- 사용법
- augmentation_choice : 2
- ui_args: X
***
#### rotation_angle
임의 augmentation 중 회전 가능한 최대 각도입니다. 10으로 설정한 경우 -10에서 10 사이로 변환을 수행합니다.선택 가능한 값: 0이상 180이하 정수
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **10 (defualt)**
- 사용법
- rotation_angle : 30
- ui_args: X
***
#### brightness_degree
임의 augmentation 중 밝기 조절 정도입니다. 최대/최소 밝기 수준을 설정합니다. 선택 가능한 값: 0~1 실수
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.3 (defualt)**
- 사용법
- brightness_degree : 0.5
- ui_args: X
***
#### contrast_degree
임의 augmentation 중 contrast 정도입니다. 선택 가능한 값: 0~1 실수
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.3 (defualt)**
- 사용법
- contrast_degree : 0.5
- ui_args: X
***
#### saturation_degree
임의 augmentation 중 saturation 정도입니다. 선택 가능한 값: 0~1 실수
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.3 (defualt)**
- 사용법
- saturation_degree : 0.5
- ui_args: X
***
#### hue_degree
임의 augmentation 중 hue 정도입니다. 선택 가능한 값: 0~1 실수
- Argument type: Custom
- 입력 type
- float
- 입력 가능한 값
- **0.3 (defualt)**
- 사용법
- hue_degree : 0.5
- ui_args: X
***
#### blur_kernel_size
임의 augmentation 중 blur 커널 최대 크기입니다. 선택 가능한 값: 0~255 정수
- Argument type: Custom
- 입력 type
- int
- 입력 가능한 값
- **15 (defualt)**
- 사용법
- blur_kernel_size : 25
- ui_args: X
***
#### model_parameters
모델 학습과 관련된 파라미터. 설정하지 않으면 default 파라미터로 모델을 학습합니다. 자세한 내용은 하기 파라미터 설명을 참고해주세요.
- Argument type: Custom
- 입력 type
- dictionary
- 입력 가능한 값
- **\{"fastflow_backborn": 'resnet18', "fastflow_flow_steps": 8, "patchcore_backborn": 'wide_resnet50_2', "patchcore_coreset_sampling_ratio": 0.1, "patchcore_layers": \["layer2", "layer3"\]\} (defualt)**
- fastflow_backborn: "resnet18", "wide_resnet50_2", "cait_m48_448", "deit_base_distilled_patch16_384"
- fastflow_flow_steps: int
- patchcore_backborn: timm 패키지에 있는 모든 모델 가능, 단 patchcore_layers에 해당 모델의 layer 이름이 상호작용 되야함.
- patchcore_coreset_sampling_ratio: 0~1 사이의 float
- patchcore_layers: 선택된 backborn의 layer 이름을 리스트로 입력
- 사용법
- model_parameters : \{"fastflow_backborn": 'resnet18', "fastflow_flow_steps": 8, "patchcore_backborn": 'wide_resnet50_2', "patchcore_coreset_sampling_ratio": 0.1, "patchcore_layers": \["layer2", "layer3"\]\}
- ui_args: X
***
### Inference asset
#### inference_threshold
abnormal로 판정되기 위한 anomaly score의 threshold입니다.
- Argument type: 필수
- 입력 type
- float
- 입력 가능한 값
- **0.5 (defualt)**
- 사용법
- inference_threshold : 0.5
- ui_args: X
***
#### save_anomaly_maps
XAI 이미지 결과 저장 여부입니다.
- Argument type: Custom
- 입력 type
- bool
- 입력 가능한 값
- **False (defualt)**
- True
- 사용법
- save_anomaly_maps : True
- ui_args: X
***
**VAD Version: 3.0.0**