3. 사용 방법
3-3. Image Processing 모듈
Image Processing 모듈은 영상 전처리를 의미합니다.
인공지능 신경망은 입력 데이터에서 특징(Feature)을 추출하고, 이를 기반으로 데이터의 규칙을 알아내는 방식으로 학습합니다. 따라서 입력 데이터의 형태에 따라 학습 성능이 유의미한 차이를 보이고, 단순히 원본 데이터를 그대로 사용하는 것이 아니라 각 데이터셋의 특성과 연구목적에 맞게 데이터를 가공해서 신경망에 입력하는 것이 성능을 높일 수 있는 좋은 방법입니다.
다음의 예시에서 전처리의 유무에 따른 성능 차이를 확인할 수 있습니다.
<별다른 영상처리="" 모듈="" 없이="" 학습을="" 수행했을="" 때=""> 별다른>
<영상을 grayscale로="" 변경="" 후="" pixel="" value를="" rescaling한="" 뒤="" 학습을="" 수행했을="" 때=""> 영상을>
데이터 값의 균일화만 추가적으로 진행한 뒤 학습을 수행했을 뿐이지만 정확도는 0.772에서 0.820으로 증가했고, 특이도 역시 0.708에서 0.822로 증가한 것을 확인할 수 있습니다. 여러 경우에 대한 실험을 반복하며 각각의 데이터셋에 맞는 최적의 전처리 방법을 찾아야 합니다.
(1) Image Processing 모듈 사용하기
① Image Processing 모듈은 대상 이미지의 타입에 따라 분류되어 있습니다.
② 모듈을 선택하면 우측 메뉴의 Information탭에서 모듈의 정보와 상세설명, 활용예시를 확인할 수 있습니다. 해당 Information을 확인하고 상황에 맞는 모듈을 적절히 사용하면 됩니다.
③ 사용할 모듈을 가운데 Flow workspace에 배치하고, 모듈을 연결합니다. 모듈은 연결한 순서대로 처리됩니다.
④ 모듈을 클릭하고 우측 메뉴의 Parameter 탭에서 파라미터를 설정합니다.
Min-Max Noramlization 등의 모듈은 파라미터가 없지만, Resize 등의 모듈은 전처리에 필요한 파라미터를 설정해 주어야 합니다.
각 파라미터에 대한 설명은 Information 탭에서 확인할 수 있고, 각 변수 이름에 커서를 올리면 간단한 설명이 팝업됩니다.
⑤ Processing Result 탭에서 Image Processing 모듈을 거쳐 가며 영상이 어떻게 변화하는지를 직접 확인할 수 있고, 모듈을 클릭하고 하단의 Files 탭을 보면 데이터의 상태를 간단히 확인할 수 있습니다.
영상의 변화과정을 직접 확인하며 프로젝트에 어떤 전처리를 사용할지 결정할 수 있습니다. (모듈 실행 후 확인할 수 있음)
(2) Custom Image Processing 모듈 제작하기
데이터를 가공하는 것은 각 데이터의 도메인 지식(Domain Knowledge)에 영향을 많이 받습니다. 사용할 데이터셋의 영상이 가지는 특성, 그중에서도 영상을 얻는 분야의 배경지식 등을 적용해서 가공을 수행할 수 있습니다. 예를 들어 CT 데이터는 일반적인 0 ~ 255 스케일의 값이 아닌 HU(Hounsfield Units)이라고 하는 데이터를 각 픽셀마다 저장하고 있어, 이를 이용한 새로운 전처리 기법을 적용할 수 있습니다.
이처럼 각 데이터마다 존재하는 특수한 특성들을 다루기 위한 새로운 Custom 모듈을 사용자가 직접 제작할 수 있습니다.
Image Processing 모듈 탭 하단의 +Create 버튼을 클릭하면 Image Processing 모듈 생성 마법사가 팝업됩니다.
모듈 생성 단계는 아래와 같습니다. (*표시는 필수 입력 정보입니다.)
① 모듈을 생성하기 전 튜토리얼 영상을 확인하면 모듈 생성 과정에 많은 도움이 됩니다.
② 모듈의 이름, 분류 카테고리, 사용하는 데이터의 Modality 정보, 사용하는 데이터의 차원 등 필요한 정보들을 입력합니다.
③ 모듈에 대한 상세정보를 입력하고 Next 버튼을 누르면 모듈 내부를 편집할 수 있는 소스코드 에디터가 팝업됩니다.
④ 소스코드 에디터는 실제 영상처리를 수행하는 부분을 제외한, 데이터의 입출력과 관련된 부분이 미리 작성되어 있으며 아래에는 예시 코드가 있습니다.
따라서 사용자는 간단한 파이썬 코딩 스킬과 라이브러리 사용방법만 익히고 있다면 간단하게 모듈을 생성할 수 있습니다.
⑤ 모듈은 Class의 형태를 띄고 있습니다. 크게 파라미터 설정 부분과 동작 부분으로 나뉩니다.
모듈 파라미터 설정/추가
__init__()
부분에는 입력 받을 파라미터에 관한 내용을 입력합니다.- 만약 외부에서 입력 받을 파라미터가 있다면 우측 Parameter 탭에 추가합니다.
- 이 파라미터는
__init__()
부분에서 입력받아 Class의 내부에서 사용할 수 있습니다.
- 우측 Parameter 탭에서 +Add Row 버튼을 눌러 파라미터를 추가할 수 있습니다.
__init__()
에서 인식할 파라미터의 이름과 파라미터 타입을 선택하고, 파라미터에 대한 정보를 작성하면 됩니다.- 파라미터 타입은 Selection, Direct Input, File Upload 세 가지 종류가 있습니다.
Selection: 여러 값 중 하나를 선택하는 방식
Direct Input: 특정한 값을 입력받는 방식
File Upload: 파일을 직접 입력으로 전달하는 방식
전처리 동작
- 실제 모듈 동작과 관련된 코드는 class 안의
__call__()
함수에 작성하면 됩니다. __call__()
함수는data
라는 이름으로 데이터를 하나씩 받고, Image Processing을 거친 후 return합니다.data
는 데이터의 각종 정보를 담고 있는 dictionary type입니다.- 원본 영상은
data['image']['array']
에 있습니다. data[‘image’][‘array’]
에서 원본 영상을 꺼내고, 여기에 처리를 수행한 후 다시data[‘image’][‘array’]
에 넣어 주고data
를 return 해주면 됩니다.- 모듈의 데이터 입출력 구조는
4. 부록 > 4-2. DEEP:PHI 플랫폼 모듈의 입/출력 구조
에 설명되어 있습니다. 또는, 소스코드 에디터 우측 상단의!Python Dictionary Structure Reference
를 클릭하면 해당 링크로 이동합니다. 이를 참고하여 코드를 작성해 주시길 바랍니다.
⑥ 코드를 저장하고 소스코드 에디터에서 나가면 모듈 제작이 완료됩니다. 생성된 Custom 모듈은 모듈 리스트에서 확인할 수 있고, 이름 좌측에 My
태그가 붙습니다.
(3) Image Processing 모듈 편집하기
모듈 리스트에 있는 모듈이나, Flow workspace에 추가한 모듈을 편집할 수 있습니다. 기존에 만들어진 모듈에서 소스코드를 약간만 변형하여 원하는 기능으로 만들고 싶은 경우에 사용할 수 있습니다.
- 모듈 리스트에서 모듈 이름 우측에 있는 코드 아이콘
</>
을 클릭하거나, 우측 메뉴 Information 탭 하단의</>View Code
버튼을 클릭하면 해당 모듈의 소스코드 편집창으로 진입합니다. - 단, 기본 모듈의 경우 소스코드를 편집할 수 없고, 직접 생성한 Custom 모듈의 경우에만 소스코드를 수정하고 저장할 수 있습니다.
- 기본 모듈을 편집하기 위해서는 Flow workspace에 모듈을 추가한 후 수정해야 합니다.
- Flow workspace에 있는 모듈을 클릭하고 모듈 위의 코드 아이콘
</>
을 클릭하면 소스코드 편집창으로 진입합니다. - 소스코드를 수정하고 저장하면 Flow workspace에 있는 해당 모듈에만 수정사항이 반영됩니다.
- 코드 아이콘 왼쪽의 저장 아이콘을 누르면 수정한 모듈을 모듈 리스트에 저장할 수 있습니다.