2019년 다양한 H&E 염색 이미지 데이터셋에서 SOTA를 달성한 nuclei segmentation 알고리즘
Main Contribution
크게 보면 1 enconder + 3 decoder branches
HoVer branch 빼고는 각각에 대한 CE loss + Dice loss의 조합
HoVer branch를 알아보자
horizontal 방향 (+x)과 vertical 방향 (+y)으로 center에서 distance를 만들면, cell이 인접한 방향에 대해서 자연스럽게 값의 차이가 커진다
그림에서 화살표는 경계에서 값의 차이가 확 커지는 경우를 설명해준다
이를 MSE로 map을 그냥 regression하는 것도 있지만, 이 경우 gradient를 각 방향으로 취해 그 gradient를 regression해주는 loss를 추가로 제안한다
경계 부분에서 차이가 커져서 인접한 방향에 대해서 gradient가 크게 나타나는 gradient map을 상상해보면 될 것 같다
이를 통해 인접한 nuceli를 separate하는 데에 사용한다
각 방향의 gradient 값은 인접한 nuclei 사이에 높은 값이 나타나게 하는데, pixel 값 중에 유의미한 (significant) 차이를 이와 같이 정의함
p_x, p_y: Horizontal and Vertical Map Predictions
H_x, H_y: 각 방향의 sobel kernel로 gradient를 근사화해서 구해주는 function
인접한 nuclei 사이에 유의미한 값의 차이를 통해 marker와 energy landscape를 정의한다
q: 해당 pixel에 NP branch의 Nuclear가 있을 확률값
h, k: 성능이 제일 잘 나오는 걸로 골랐다고 함
: 음수는 0으로 만드는 rectifier
: a가 b보다 크면 1, 작으면 0
marker 는 주어진 energy landscape 에서 를 어떻게 split할 지 결정하는 marker-controlled watershed의 marker로 사용된다.
뒤의 실수 값이 남아있는 Instance Marker를 통해 Marker Controlled Watershed를 한 건 그림으로 이해가 되는데, 주어진 energy landscape에서 를 어떻게 split한다는 건지는 설명이 더 나와있지 않아 이해가 잘 안 간다.
DICE2와 AJI (Aggregated Jaccard Index) 의 경우, Prediction B의 성능이 더 높게 나오고 Prediction A의 성능이 너무 낮게 나온다.. DICE2의 경우 그 차이가 더 심하다
Prediction A처럼 인접한 instance의 misclassification된 부분이 over-penalisation되는 경향이 있다는 것이다
DICE2는 '2x(겹치는 영역)/(각 영역의 크기의 합)'을 각 nuclei마다 구하니 Prediction A의 경우, cyan 색의 nuclei말고도 blue 색의 nuclei에 대해서도 penalisation을 받게 된다.
AJI는 (교집합의 합/합집합의 합)으로 계산되어서 그나마 덜하지만, 역시 인접한 부분에 대해서 침범하는 쪽에 대한 예측 성능이 penalisation되는 경향이 있다.
그래서 이 논문에서 Panoptic Quality를 제안한다
해당 sample에 대한 detection quality를 추정하는 term과 segmentation quality를 추정하는 term인데, segmentation quality의 경우 true positive가 있는 영역에 한해서 IoU를 계산해 ratio를 계산해준다
특정 type t의 F_c score를 다음과 같이 정의함. , 로 줬는데, nuclear classification을 좀 더 강조하기 위해
TP_c나 TP_d나 같다고 보면 됨
전체 Type T에 대한 overall F_c score는 다음과 같이 정의함
CoNSeP dataset는 이 논문에서 새롭게 소개하는 데이터셋
input size: 252 X 252 ~ 270 X 270 (due to the use of valid convolutions)
augmentation: flip, rotation, Gaussian blur, median blur
network: ImageNet에서 사전훈련된 weight으로 model을 초기화
two stage: only decoder (50 epoch) -> encoder + decoder (50 epoch, fintuning)
optim: Adam
learning rate: 1e-4로 시작해서 25 epoch 이후엔 1e-5 (각 stage마다 반복)
batch size: only decoder (82) -> encoder + decoder (42)
두 개의 NIVDIA GeForece 1080 Ti GPU로 stage마다 120분, 260분 총 380분 정도 걸렸다