Skip to content

Multipage

Mltipage 기능은 1 또는 3 채널 이미지 여러 장을 채널 방향으로 쌓은 뒤 n채널의 이미지 1장인 것처럼 사용하는 기능입니다.

일반적으로 동일한 제품에 대해 조명을 변경하면서 여러 이미지를 촬영하는 경우 활용됩니다.

라벨은 합쳐진 n채널 이미지에 대해 정의되기 때문에 이미지 1장인 경우와 동일합니다.

API 사용법


Multipage 기능은 추가적인 함수가 존재하지 않고, 기존 API의 입력 타입이나 config를 변경해 사용할 수 있습니다.

Trainer.build()에 전달하는 config에서 multipage 섹션을 세팅합니다.

{
    "network_type": str,
    ...
    "multipage": {
        "image_mode": list[str],  # multipage 이미지들의 모드 리스트. 리스트 길이 = 병합할 이미지 수.
                                  # 모드는 "RGB" 또는 "L" 사용 가능.
                                  # ex) ["RGB", "L", "RGB", ...] - 첫 번째 이미지는 color, 두 번째 이미지는 gray, ...
    }

}

Trainer.build()에 전달하는 data에서 path 값을 str -> list[str] 으로 변경합니다.

  • 이때 list에 들어있는 이미지의 순서대로 채널을 쌓기 때문에 이미지의 순서는 항상 동일해야합니다.

InferenceHandler.infer_and_postprocess() 입력 값을 list[list[str]] 혹은 list[list[np.ndarray]] 으로 사용합니다.

RGB 2장 공유 인코더 (v2p_*)


network_type이 "v1_*", "v2_*", "v2a_*"이면 multipage 이미지를 채널 방향으로 쌓은 n채널 이미지를 인코더 하나에 넣습니다.

"v2p_fast", "v2p_standard", "v2p_accurate"는 RGB 이미지 2장을 3채널 인코더 하나로 각각 처리합니다. 두 이미지는 인코더 가중치를 공유합니다.

network type backbone init weight
"v2p_fast" resnet18 "v2_fast"와 같음
"v2p_standard" resnet50 "v2_standard"와 같음
"v2p_accurate" van_b2 "v2a_accurate"와 같음
  • multipage를 반드시 설정해야 하고, image_mode는 ["RGB", "RGB"]만 사용할 수 있습니다. 설정하지 않거나 다른 값이면 Trainer.build()가 error_code -411306(ConfigMultipageImageModeError)을 반환합니다.
  • 입력 형식과 출력 형식은 일반 multipage와 같습니다.
  • class_activation_map은 두 이미지의 CAM을 정규화하기 전에 픽셀별 최댓값으로 합친 뒤 정규화한 값입니다. shape은 일반 multipage와 같습니다.
  • 인코더가 같은 batch_size에서 이미지를 2배로 처리하므로 학습과 추론의 GPU 메모리와 시간이 늘어납니다.
  • 큰 해상도에서는 학습 batch를 micro-batch로 나누므로 batch_size가 나눈 수의 배수여야 합니다.
  • "v2p_standard": 학습 이미지 면적이 864×1024 이상이면 2개
  • "v2p_accurate": 면적이 800×832의 1/2 이상이면 2개, 800×832 이상이면 4개