Skip to content

학습 데이터

개념

학습 설정 파일의 dataset_path 아래에는 학습할 (이미지) 데이터와 레이블링이 들어가 있습니다. 기본적으로 레이블 파일을 찾아 그 안에 적힌 이미지의 경로를 찾아가는 방식입니다.

데이터의 구성

데이터셋 폴더의 내용은 학습 설정 파일의 training_type 에 따라 다른 구성을 가지게 되며 각각의 경우에 대한 구성은 아래와 같습니다.

Classification (CL)

데이터셋 폴더내 아래 파일들이 존재합니다.

dataset_path
├─ label.txt
├─ train
│  └─ train.txt
└─ validation
   └─ validation.txt

train.txt은 학습에 대한 데이터이며, validation.txt는 검증에 대한 데이터 입니다. 또한 참고용으로 label.txt가 존재하는데, 이 파일에는 classification의 class 이름 목록이 적혀 있습니다. 일반적으로 여기 적힌 순서가 prediction 결과에 대한 index 값(모델의 아웃풋)이 됩니다.

각 이미지는 하나의 라인으로 표시되고 각 라인은 이미지 경로(image path)와 라벨(label) 루 구성되어 있습니다. image path는 컨테이너 내의 전체 경로이므로, 별도의 prefix나 base folder와의 조합은 필요 없습니다.

train.txt 예

/mnt/image/NAS01/image/3/71/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_L_0_A.png VALVE_GOOD
/mnt/image/NAS01/image/3/71/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_R_0_A.png VALVE_BROKEN
...

Regional Classification (RC)

Regional classification(RC) 은 Classification(CL) 과 동일한 파일들이 존재하나 내용상 아래와 같은 다른 점이 있습니다.

  • 이미지당 여러개의 label 정보 존재 : 하나의 이미지에 대해 여러 개의 label 정보를 가질 수 있으며, 그 경우 동일한 이미지 경로를 가지는 여러 라인에 걸쳐 표기 됩니다.
  • 영역(rectangle)과 label 판정 정보 : 각 label 정보는 영역에 대한 위치 정보와 해당 영역의 레이블의 판정 정보로 구성 됩니다.

train.txt 예

/mnt/image/NAS01/image/3/72/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_L_0_A.png VALVE_SCRATCHED true 100 100 150 150
/mnt/image/NAS01/image/3/72/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_L_0_A.png VALVE_SCRATCHED true 300 300 350 350
/mnt/image/NAS01/image/3/72/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_R_0_A.png VALVE_SCRATCHED false 100 100 150 150
/mnt/image/NAS01/image/3/72/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_R_0_A.png VALVE_SCRATCHED false 300 300 350 350
...

Segmentation (SEG), Object Detection (OD)

Segmentation(SEG)와 Object Detection(OD) 그리고 Anomaly Detection(AD)의 경우 label format은 동일합니다.

dataset_path
├─ label.txt
├─ train
│  ├─ 1.json
│  ├─ 2.json
│  └─ 3.json
└─ validation
   ├─ 1.json
   ├─ 2.json
   └─ 3.json

데이터셋 폴더 아래에 Train / Validation 폴더가 존재하고, 그 아래에 label file 들이 존재합니다.

label file 은 labelme format 을 사용합니다. 앞 링크의 예제를 열어보면 flags 나 version, group_id 같은 meta field도 존재하는데 그런 meta field는 사용하지 않고 아래와 같은 형태로 사용하게 됩니다.

  • shapes[].label : 기본정보에서 정의된 label_id
  • shapes[].shape_type : rectangle 또는 polygon
  • shapes[].points : shape type 에 대한 좌표 배열
  • shapes[].isgenerated : 해당 필드에 ‘true’/’false’ 가 들어가 있는 경우가 있을 수 있는데, 이것은 검증에 대한 결과로 생성된 label 을 의미하므로 학습에 활용할 여지가 있으면 활용해도 좋습니다.
  • shapes[].isroi : 프로젝트 모델타입 설정에서 ROI type을 지정한 경우, 해당 type이 shaps[].label_type 에 설정되어 rectangle로 전달되게 된다. 또한 해당 label에는 shapes[].isroi = ‘true’ 로 설정이 되므로 isroi가 true인 것은 ROI로 처리하면 된다.
  • imagePath : 이미지에 대한 경로입니다. Classficiation과 마찬가지로 도커 컨테이너내 전체 경로 입니다.

label 파일 예

json
{
  "shapes": [
    {
      "label": "OD_VALVE_CRACK",
      "shape_type": "rectangle",
      "points": [
        [
          252.0,
          215.0
        ],
        [
          271.0,
          231.0
        ]
      ],
      "isgenerated": false,
      "isroi": false
    },
    {
      "label": "OD_VALVE_SCRATCH",
      "shape_type": "rectangle",
      "points": [
        [
          248.0,
          252.0
        ],
        [
          257.0,
          262.0
        ]
      ],
      "isgenerated": false,
      "isroi": false
    }
  ],
  "imagePath": "/mnt/image/NAS01/image/3/71/L_VALVE_1/2024/1030/05/S5421E45626133463036_THERMOSTATIC_VALVE_L_0_A.png",
  "image_id": 88785
}

학습 가능한 이미지에 대한 접근

학습 가능한 이미지(trainable_image_type)란 다양한 방법으로 가공후 제공되는 학습 가능한 이미지 종류를 뜻합니다. 플렛폼에 존재하는 학습 가능한 이미지 목록은 플랫폼내 프로젝트 환경설정에서 정의 되며 학습시(혹은 검증시) model.json의 trainable_image_type 항목을 통해 전달됩니다. 특정 이미지 종류에 접근하는 경우 파일명의 뒷부분을 교체하여 사용하면 됩니다.

예를 들어 메인 이미지와 엑스레이 이미지를 사용하는 경우 프로젝트 환경설정에서 학습 가능한 이미지 종류에 "_A.png", "_X.png" 를 설정하면 학습시(혹은 검증시) trainable_image_type 에 ["_A.png", "_X.png"] 가 전달되고 엑스레이 이미지를 사용하는 경우 파일 이름의 뒷부분 _A.png를 _X.png로 교체하여 사용하면 됩니다.

검증(Validatioin) 의 경우

검증의 경우 dataset_path 아래에 train/validation 폴더중 validation 부분에만 데이터가 존재하고 나머지는 학습과 동일합니다.