2)solo(single stage instance segmentation) 논문 : 기존의 bounding box를 그린 후 segmentation과 instance mask 구하는것과 달리 bounding box를 구하지않고 바로 Instance mask를 구한다.
이것이 가능한 이유는 FCN을 하면서 공간정보의 유실을 막기때문이다. 또한 코드를 돌려보면 coordconv를 사용하여 공간정보의 유실을 계속해서 막는 것이 나온다.(정말 많이나온다...)
grid =5 일때,
Category Branch : S X S X C
Mask Branch : H X W X S^2 → 25개의 mask가 생김?
ResNet(hypothesis를 구할때 Residual을 사용함) : 일반 네트워크(위그림)와 달리 Resnet(아래그림)은 weight layer를 거친값과 원래 데이터값을 더한후 relu를 취하는 skip connection기법을 사용하면 h(x) = F(x) - x 가되어서 residual를 구하는 과정이 된다. 기존에 네트워크는 H(x)를 구하기 위해서 최적화를 했다면, resnet은 F(x)가 0이 되는 값을 최적화하는 작업이 되면서 성능이 좋아진다.
Fully Connected Network
-receptive field를 전체크기의 입력이미지값을 사용한다. → 위치데이터의 손실이 줄어든다.
FPN(Feature Pyramid Network) 을 이용하여 category branch와 mask branch가 bilinear interpolation(쌍선형보간),즉 중간점을 찾는다.
상위 resolution과 하위 resolution 정보를 같이 비교하며 forward에서 손실된 지역정보들을 skip-connection(?)으로 보충한다. 스케일변화에 rigid하다.
7번의 FPN을 거치면 OUTPUT이 나온다. Mask 부분의 FPN을 적용할때는 위치정보의 손실을 막기위해 Coordconv를 이용하였고 마지막에 업샘플링은 network가 inference(추론)하는 과정에서 필요한것 같다. ㅡmask를 더 잘그리기위해?? 왜 이렇게 하는지는 잘 모르겠다.
mmdetection(single stage instance segmentation에서, 즉 solo에서 object detection후 mask를 그리는 과정)
mmdetection의 detection & instance mask과정은 다음과 같다.
backbone → neck → DenseHead → RoIExtractor → RoIHead
backbone 부분은 입력받은 image를 resnet을 거쳐 feature map을 추출한다.(아래사진은 backbone을 거친 후의x값)
neck 부분은 backbone에서 얻은 feature map 과 head를 FPN(Feature Pyramid Network)을 이용하여 연결 시킨다.(아래사진은 FPN이 적용된후 x값)
DenseHead 부분은 feature map의 공간정보를 추가한다.
RoiExtractor 부분은 추가된 공간정보를 이용해서 RoIfeature를 추출한다.
RoIHead 부분은 이제 공간정보를 겸비한 feature를 이용해서 bounding box or instance mask를 그린다.
→ solo에서는 bounding box를 사용하지 않기에 instance mask를 구할때만 사용한다.(아래사진은 bounding box를 거치지않고 바로 instance mask를 구한 모습)
배경제거하는 부분 → mmdet의 inference부분에서 처리한다.
loss function: category loss와 mask의 조합으로 loss를 사용하는데, category loss는 focal loss를 사용한다.
Focal loss는 one shot으로 object detection을 취하는 network에서 실제 object는 찾기 어렵고, background를 찾기 쉬워지는 문제(e.g.1:1000)를 해결하기 위해서 고안해낸 Loss이다.
Pt가 아래그림처럼 주어질때 FL(Focal Loss)는 크로스 엔트로피와 비슷하지만 살짝 다르다. 실제 ground truth 데이터 값과 element wise를 하는 cross entrophy와 달리 focal loss는 (1-pt)^r를 곱한다.
mask loss는 예측한 마스크값과 실제 마스크의 거리 차이를 구한 후 개수로 나눈다.
'딥러닝' 카테고리의 다른 글
[딥러닝][yolov5]custom dataset tutorial (0) | 2021.09.15 |
---|---|
[딥러닝] 데이터 포맷 (0) | 2021.09.01 |
[딥러닝]3d instance segmentation via multi-task metric learning 의 논문에 있는 dir_loss 구하기 (0) | 2021.07.30 |
[딥러닝]Detectron install 및 구동 (0) | 2021.07.30 |