본문 바로가기
의료 인공지능 전망, 의료 영상 분석 방법, 의료 데이터 분석 기법

의료 데이터 분석 기법 - CNN 기반의 딥러닝 모델(Segmentation, Detection 모델)

by 펜앱 2022. 8. 1.

의료 데이터 분석 기법 - CNN 기반의 딥러닝 모델(Segmentation, Detection 모델)

의료 데이터 분석 기법 - CNN 기반의 딥러닝 모델(Segmentation, Detection 모델)
의료 데이터 분석 기법 - CNN 기반의 딥러닝 모델(Segmentation, Detection 모델)

미국에서 첫 FDA의 승인을 받은 인공지능 기술을 이용한 의료 영상 소프트웨어입니다. 아털이라는 의료 인공지능 스타트업 회사에서 제작한 소프트웨어로 심장 MRI 영상에서 Chamber를 자동으로 분할해줍니다. 의료 영상 진단 영역에서 보면 의료 영상이 얻어지면 판독에는 영상에서 보이는 질병 장비들을 자동적으로 찾고 병변을 검출하며 이를 통해 진단을 수행하게 됩니다. 순서를 보면 Segmentation, Detection, Diagnosis, Classification으로 임상의 흐름이 진행된다는 것을 알 수 있습니다. 이처럼 의료 영상 분야에서 Segmentation과 Detection은 가장 긴보적인 역할을 담당하고 있습니다. CNN 기반의 딥러닝 모델들은 이러한 Segmentation, Detection 분야에서 인간의 능력에 필적하거나 능가하고 있습니다. 의료 분야에서도 여러 인공지능 스타트업 기업들을 통해 활발히 연구되고 의료기기 허가를 받아 임상현장에 적용되고 있습니다.

Segmentation 모델

Segmentation모델은 CNN 구조를 변경하여 만들 수 있습니다. 이러한 네트워크 구조 변경은 Network surgery라 불리기도 합니다. 끊고 자르고 붙이는 과정이 수술과 유사하여 붙여진 이름인 것 같습니다. 먼저 VGG16 모델을 다시 한번 살펴보도록 합시다. 입력 영상이 224X224의 크기로 네트워크에 들어오면 컨볼루션 계층과 맥스 풀링 층을 거치며 반인 112X112로 줄어듭니다. 이러한 과정이 여러 번 반복되면서 최종적으로는 7X7이라는 크기로 줄어들게 됩니다. 이 7X7이라는 크기 안에는 영상이 있는 물체에 대한 매우 정확한 정보를 포함하고 있습니다. 또한, 위치 정보도 가지고 있습니다. 분류 모델에서는 이러한 위치 정보는 사라지고 물체에 대한 특징 값만 이용하게 됩니다. Segmentation은 이와 달리 인공지능 모델의 출력 크기가 입력 영상의 크기인 224X224여야 합니다. 그렇다면 어떠한 방식으로 7X7크기의 특징 값을 224X224로 만드느냐에 따라 몇몇 모델들이 있습니다. 우선 미국 버클리 대학에서 개발된 Fully convolutional network라는 FCN 모델을 소개해드리고자 합니다. 7X7을 몇 배로 만들어야 224X224가 될 수 있을까요. 답은 32배입니다. 그래서 처음 나온 FCN 모델의 이름을 FCN32S라는 이름으로 나왔습니다. 32S가 의미하는 바는 32배로 샘플링을 한다는 것입니다. 이때, 사용되는 방법이 영상처리에 있어서 오랜 기간 사용되어 왔던 인터폴레이션 기법입니다. 논문에서는 발리녀 인터폴레이션을 사용하였습니다. 더 좋은 방법은 32개를 한 번에 적용하지 않고 단계적으로 인터폴레이션을 적용하는 것입니다. 이를 위해 7X7을 두 배로 크게 하여 14X14로 만듭니다. 여기에 이전 컨볼루션 계층에서 14X14 크기를 갖는 특징 값들을 Skip onnection으로 가져와 더합니다. 이는 화가가 얼굴을 그릴 때, 전체적인 윤곽을 먼저 7X7로 그리고 난 후 좀 더 세밀한 키와 코 등을 14X14에서 가져와 그리는 것으로 생각해볼 수 있습니다. 이렇게 7X7, 14X14, 28X28로 만든 다음에, 8배만 마지막에 인터폴레이션을 적용하여 224X224 크기를 얻습니다. 이 모델의 이름 FCN8s입니다. 그러나 이러한 방식의 문제점이 있는데요. 이 문제점은 Skip connection을 이용할 때, 그냥 더한다는 점입니다. CNN 구조의 앞부분에 위치하는 컨볼루션 계층에서 얻어진 특징 값들은 영상의 큰 영역을 보고 얻어진 것이 아니기 때문에 노이즈가 포함되어 있을 수 있습니다. 이를 그대로 더하게 되면 마지막 결과에도 노이즈가 남게 됩니다. 이를 해결하는 방법이 Skip connection을 이용할 때, 그냥 더하지 않고 채널을 그대로 가져와 합치는 concatenation 하는 방식을 적용하는 것입니다. 이렇게 concatenation을 수행하게 되면 화가는 세밀한 부분을 그릴 때, 현재 가지고 있는, 보다 정확한 특징 값 정보를 그대로 두고 CNN 구조와 앞쪽에서 가져온 특징 값 정보를 참고하여 그릴 수 있게 됩니다. 이렇게 Skip connection과 concatenation을 사용한 것이 UNet입니다. UNet 구조에서는 왼편의 인코더 부분과 오른쪽의 디코더 부분으로 나눌 수 있습니다. 이때, 인코더 부분에는 VGG 16, ResNet, GoogleNet, DenseNet, EfficientNet 등의 다양한 CNN 모델을 사용할 수 있습니다. 예를 들어 EfficientNet의 구조를 인코더 부분에 사용하여 디코더 부분에서 Skip connection과 concatenation을 사용하여 구성하면 EfficientUNet이라고 이름 할 수 있습니다. 이 UNet 구조가 의료영상 Segmentation에서 주로 사용되고 있습니다.

Detection 모델

Segmentation 모델에서는 학습 시 손실 함수로서 Pixel-wise cross entropy를 사용할 수 있습니다. 그러나 Detection에서는 이전의 정보를 박스 형태로 이용하게 되어 Regression을 수행하여야 합니다. 이전 박스 클래스는 분류에서 사용한 크로스 엔트로피를 사용합니다. 이렇게 Detection 모델은 regression과 classification에서 사용하는 손실 함수를 모두 사용하게 됩니다. Detection 모델은 Region proposal 네트워클 사용하여 보다 많은 수의 예측 박스를 생성하고, 이를 다시 classification 모델을 통해 걸러주는 형태에는 R-CNN 계열과 주어진 개수만큼의 예측 박스를 바로 출려한 형태인 Yolo 계열로 나뉘게 됩니다. 우선 R-CNN 방식을 살펴보면 입력 영상에서 CNN 구조를 통해 특징 값을 추출하고 이를 통해 여러 예측 박스들을 생성하게 됩니다. 이를 일정 크기로 변환한 후 분류 모델을 통해 예측 박스 숫자를 줄이는 형태로 구성되어 있습니다. 이러한 초기 R-CNN 방식은 후에 region proposal을 위해 계산된 특징 값들을 뒷부분의 분류 모델이 그대로 사용할 수 있게 개선하여 fast R-CNN, faster R-CNN으로 발전되어 왔습니다. 이러한 R-CNN 방식은 느리지만 정확도는 높은 것으로 알려져 있습니다. 이와는 달리 region proposal 네트워크와 함께 CNN 분류 모델을 사용하지 않고 바로 예측 박스를 출력하는 Yolo 계열은 빠른 수행성능을 특징으로 합니다. 주로 실시간이 중요한 분야에서 사용됩니다. Yolo의 경우에는 그리드로 영상을 나누고, 각 그리드마다 앵커 박스 숫자에 해당하는 예측 바스를 출력하는 형태로 구성되어 있습니다. 예를 들어 그리드를 7X7개라고 하고 앵커 박스의 수를 5개라고 하면 이를 모두 곱하여 총 245개의 예측 박스를 출력하게 됩니다. 이러한 Yolo는 초기버전이 소개된 이후 계속 발전되어 현재 버전 4가 나와 있습니다. 이러한 책은 Detecion 모델에서는 Segmentation 모델이 CNN 구조의 앞쪽 컨볼루션의 특징 값들을 함께 고려하여 최종 분할 마스크를 만들었듯이, Skip connection과 Concatenation을 사용하여 예측 박스들을 생성하게 됩니다. 이러한 구조 중 가장 유명한 것은 FPN이라 합니다.

댓글