본문 바로가기

AutoML 논문

V-NAS: Neural Architecture Search for Volumetric Medical Image Segmentation 논문 리뷰

나만의 정리 노트이기 때문에 시간들여서 잘 작성하진 않겠다.

 

요약

2D,3D FCN은 의료영상 분야의 방법론적으로 자리잡힘

2D는 Volumetric 정보를 고려 안하고,

3D는 Computation Cost가 너무 큼

우리는 자동적으로 volumetric한 이미지 분할을 해줄 수 있게 하는 네트워크 구조를 찾게 하는 방법을 소개함

총 3개의 데이터셋을 사용.

NIH 췌장

MSD 폐 종양

MSD 췌장 종양

 

소개

CT와 MRI는 의료에 많은 도움을 주었고, 딥러닝이 발전하면서 의료영상에 딥러닝을 활용한 장기분할이 발전됨.

우리는 Volumetric한 의료영상 분할에 집중.

 

CT 영상에서 췌장 종양과 폐 종양을 분할하기 어려운 이유는 4가지가 있음.

1. 전체 볼륨에 비해 크기가 너무 작음

2. 모양, 위치, 나타나는 지점이 각기 다 다름

3. 이상한 데이터들도 많음. ( 췌장 주변 색이 다르다던지 등)

4. 비등방성인 특성을 가짐

 

처음에는 Hand-Craft한 방법을 했었지만 너무 힘듦.

 

딥러닝 방법으로는 2D, 3D FCN이 좋음

2D FCN은 Slice by Slice 방식인데, 전체 Volumetric 정보를 고려안함.

3D FCN은 Volumetric한 정보를 고려하지만 Computation cost가 너무 큼

 

최근에는 2D와 3D를 결합하는 방식들이 나옴. (H-DenseUNet)

하지만 이것의 단점은, Cascade(계단식) 방식이라 한번에 둘 다(2d,3d) 훈련시키는 것이 아니라 따로 따로 학습을 하게 됨.

 

최근에 P3D(Pseudo-3D) 방식이 나오면서 기존의 3D 방식이였던, K x K x K  Convolution 연산을 K x K x 1 과 1 x 1 x K로 하는 연산이 나오는 데, 이것은 파라미터 개수도 줄여주고 3D 방식을 2D 처럼 할 수 있게 함.

 

그러나 앞서 말한 모든 연구들은 다 하나에만 집중을 함. 즉, 2D로만 분할하거나, 3D로만 분할을 함. 또는 2D와 3D를 결합한다해도 2D와 3D를 따로 훈련시키기 때문에 같이 집중한다고 볼 수 없음.

 

우리는 NAS에 영감을 받았음.

우리는 각 Layer마다 2D, 3D, P3D convolution 3개중 하나를 자유롭게 고르게 하여, 구조를 학습하게 함.

우리의 생각으로는 우리가 NAS/AutoML을 의료영상분야에 처음으로 도입했음.

우리는 differentiable NAS를 사용하고, 2D,3D,p3D 사이에서 탐색을 함.

 

pretrain 안함.

이름은 V-NAS로 정하겠음.

 

방법 

 

우리는 Cell을 정의하는 데,

Cell = 특정 Convolution(2d,3d,p3d) + Batch Normalization + ReLU 로 구성

이 cell을 반복적으로 중첩하여 전체 구조를 만들게 되는 데, NAS-UNet과 달리, 모든 cell이 다 똑같은 것이 아니라 다름.

분할하는 네트워크는 encoder-decoder 형식임.

 

 

 Encoder 탐색 공간

Encoder는 세가지 종류중에 하나만 찾으면 된다.

E0 : 3 x 3 x 1 와 1 x 1 x 1 ( 2D ) 

E1 : 3 x 3 x 3 와 1 x 1 x 1 ( 3D )

E2 : 3 x 3 x 1 와 1 x 1 x 3 ( P3D )

 

 Decoder 탐색 공간

Decoder 또한 세가지 종류중에 하나만 찾으면 된다.

D0 : 3 x 3 x 1 와 3 x 3 x 1 ( 2D ) 

D1 : 3 x 3 x 3 와 3 x 3 x 3 ( 3D )

D2 : 3 x 3 x 1 와 1 x 1 x 3 ( P3D )


즉, 그냥 세 개 중에 하나를 찾으면 된다는 것이다. 어떠한 셀이던 간에..

이것을 0,1,2로 하여, String으로 만들어 RNN에서 예측을 하도록 하게 하는 것이다.

 

상당히 단순하다고 볼 수 있다.

 

전체 구조는 어느정도 본인들이 짜 놓은 구조속에서 encoding하는 cell 몇개를 찾도록 하고, decoding하는 cell 몇개를 찾도록 한 것이다. 

 

Experiments

 

나머지 상세 구현은 논문을 찾아보기를 바란다.

Experiment에서도 중요한 내용이 나올 수도 있겠지만, 내가 읽은 바로는 뭐, 여타 논문과 같이 State-of-the-art나, 다른 것보다 더 좋다는 내용이 대부분이였다.

 

그래도 중요한 것들 중 연구자들에게 필요한 것은 1.2일이 걸렸다는 정도.

 

 

** 느낀 점 및 논문의 장단점

이 논문은 내가 NAS-UNet을 본 후에, 3D NAS-UNet을 만드려고 했었는 데, V-Nas라는 논문이 나왔길래 본 논문이였다. 아이디어가 금새 없어질 줄은 몰랐다.

무튼....

여기서 특이한 점은, 다른 요즘 AutoML 추세를 보면 하나의 Cell을 찾고 그 Cell을 본인들이 만든 구조안에서 반복시키는 방식을 이용하고 있다. 즉, Cell을 하나만 찾는 다는 점이다. 하지만 여기서는 하나의 Cell 또한 거의 사람이 구조를 만들었고, 그 안에서 간단한 3가지 연산만 고르도록 하여 cell 자체의 cost는 줄이면서 여러개의 cell을 찾게끔 했다는 점이다. 

그리고 encoder와 다르게 decoder는 5개만 고르도록 하였다. 본인들이 설계한 대로 하게끔 하려는 생각이 엿보이는 데, 

이 것은 거의 구조를 사람이 다 짜고, 진짜 나머지만 고르도록 한 느낌이 든다.

뭐 결과적으로는 좋았으니 다행이긴 하다만

내 개인적으로는 , cell 한 개가 아니라 cell 개인의 탐색공간은 줄이되, 여러개의 cell을 찾게끔 하여 탐색공간을 늘리는 아이디어는 얻어가지만.... 자동적으로 네트워크를 찾게 하는 AutoML의 취지와는 조금은 떨어져있지 않나 싶은 생각이 든다. 물론 저것도 자동적으로 찾은 것이니 AutoML적인 방법이라고 할 수 야 있겠다만, 내가 생각하는 AutoML과는 조금 다른 느낌?

 

그리고 P3D 방법 배워가서 좋다.