콘텐츠로 이동

Train Anomaly Clustering

SaigeVAD.AnomalyClusteringTrainer

Bases: anomaly_cluster.AnomalyClusteringTrainer

Anomaly Clustering 학습을 위한 AnomalyClusteringTrainer class 입니다.

Usage
from SaigeVAD.engine.saigevad_api import AnomalyClusteringTrainer


# this is an example config.
config = {
            "progress_server_url": "http://0.0.0.0:5000/on_epoch_end",
            "device_index": 0 # optional
}

# train_data에는 최소 50장의 이미지가 필요함.
train_message = {
    "data": {
        "train_data": [
            {"img_path": "../220914_0520/1521_001.jpeg"},
            {"img_path": "../220914_0525/1521_002.jpeg"},
        ],
        "saigevad_model_path": "../name.saigevad",
    }
}

# AnomalyClusteringTrainer 빌드
error, anomaly_clustering = AnomalyClusteringTrainer.build(config)

# train_message를 이용한 학습
error, cluster_output = anomaly_clustering.train(train_message, password)
"""
[{"image_path": ["../220914_0520/1521_001.jpeg"], "cluster_index": 1}, ...]
"""

# VAD 학습 결과를 이용한 학습
error, weight_sampling_result = trainer.process_weight_sampling() #VadTrainer
vad_train_result_dict = {
    "checkpoint_path": checkpoint_path,
    "weight_sampler_info": weight_sampling_result ,
}
error, train_message = anomaly_clustering.convert_vad_train_result_to_train_message(vad_train_result_dict)
error, cluster_output = anomaly_clustering.train(train_message, password)

# 결과 저장 & metadata "inference_settings" 저장
anomaly_clustering.save_checkpoint(checkpoint_path=train_message["saigevad_model_path"], password=password)

build(config=None) classmethod

학습을 위해 AnomalyClusteringTrainer class의 instance를 생성합니다.

Parameters:

Name Type Description Default
config Optional[dict]

학습 config가 담겨 있는 dictionary 입니다. Defaults to None.

config = {
    "progress_server_url": "http://0.0.0.0:5000/on_epoch_end"
    "device_index": 0
}

None

Returns:

Name Type Description
AnomalyClusteringTrainer

build가 완료된 saigevad_api.AnomalyClusteringTrainer class의 instance를 반환합니다.


train(train_message, password=None, pretrained=True, initial_epochs=1000, n_oversampling_stage=6, n_oversampling_epoch_per_stage=500)

Clustering 학습을 진행합니다.

Parameters:

Name Type Description Default
train_message Dict

학습 데이터가 담겨 있는 dictionary 입니다.

train_message = {
    "data": Dict, # 학습에 필요한 데이터를 담고 있습니다.
        {
            "train_data": List[Dict], # 학습에 필요한 이미지 데이터입니다.
                [
                    {"img_path": "../220914_0520/1521_001.jpeg"},
                    {"img_path": "../220914_0525/1521_002.jpeg"},
                ],
            "saigevad_model_path": str, # VAD 학습 모델의 경로입니다.
        }
}

required
password Optional[str]

VadTrainer 학습 파일의 password입니다. Defaults to None.

None

Returns:

Type Description
List[dict]

List[dict]: clustering image info 리스트입니다. python output = [ { "image_output": str, # "../220914_0520/1521_001.jpeg", "cluster_index": int, # 3 }, ... ]


convert_vad_train_result_to_train_message(vad_train_result_dict)

VAD 학습 결과를 이용하여 anomaly clustering 학습에 사용하기 위해 preprocessing을 진행합니다.

Parameters:

Name Type Description Default
vad_train_result_dict Dict[str, Any]

학습 config가 담겨 있는 dictionary 입니다.

vad_train_result_dict = {
    "checkpoint_path": str, # VAD 학습모델 경로입니다.
    "weight_sampler_info": np.ndarray, # weight sampling 결과입니다.
}

required

Returns:

Type Description
List[Dict[str, str]]

List[Dict[str, str]]: 학습에 필요한 정보가 담겨있는 dictionary 입니다.

output = [
    {
        "data": Dict, # 학습에 필요한 데이터를 담고 있습니다.
            {
                "train_data": List[Dict], # 학습에 필요한 이미지 데이터입니다.
                    [
                        {"img_path": "../220914_0520/1521_001.jpeg"},
                        {"img_path": "../220914_0525/1521_002.jpeg"},
                    ],
                "saigevad_model_path": str, # VAD 학습 모델의 경로입니다.
            }
    }
]


save_checkpoint(checkpoint_path, password=None)

현재 AnomalyClusteringTrainer의 상태를 VAD train result dictionary에 저장합니다.

Parameters:

Name Type Description Default
checkpoint_path str

checkpoint를 저장할 경로입니다.

required
password str

checkpoint 파일에서 중요한 정보를 암호화 하는데 사용되는 password 입니다. None이면 암호화하지 않습니다. Defaults to None.

None