제목 : Automatic segmentation of fish using deep learning with application to fish size measurement
APA citation : Garcia, R., Prados, R., Quintana, J., Tempelaar, A., Gracias, N., Rosen, S., ... & Løvall, K. (2020). Automatic segmentation of fish using deep learning with application to fish size measurement. ICES Journal of Marine Science, 77(4), 1354-1366.
Abstract
오늘날 echosounder는 어군을 탐지하고 어류의 양과 종을 정성적으로 추정하는 데 사용된다.
하지만 echosounder를 이용해 어류의 크기를 추정하는 문제는 여전히 풀리지 않고 있으며, 이 문제를 해결하기 위해 몇 번의 시도만 있었다.
본 논문에서는 트롤(trawl)에 직접 설치한 Deep vision imaging system을 통해 얻은 stereo image를 처리해 각 물고기를 탐지하고 길이를 추정해 소형 물고기의 어획량을 대폭 줄이는 방법을 제안한다.
Mask R-CNN 모델을 이용해 이미지에서 local gradient를 적용, 각 물고기를 지역화, 세그먼트화(localize and segment) 한다.
본 논문에서 제안된 방법의 독특한 장점은 겹치는 물고기가 포함된 깔끔하지않은(cluttered) 이미지를 문제없이 처리할 수 있다는 것이다.
Introduction
트롤망을 사용해 물고기 이미지를 캡쳐 할때 물고기의 길이를 측정하는 새로운 방법을 제안한다.
트롤에 직접 설치한 Deep Vision system을 이용해 초당 5~10개로 횟수를 고정해 스테레오 이미지 쌍을 얻어 약 100만 개의 이미지 페어를 획득한다.
본 논문에서는 이미지를 획득한 뒤 오프라인으로 이미지를 처리했지만, 후에 Deep Vision system에 모델을 적용해 실시간으로 적용할 예정.
Material and methods
Data acquisition
위의 Deep Vision system(그림 1)으로 얻은 이미지는 파이프 라인(그림 2)을 통해 분석된다.
첫번째로는 이미지의 비선형성과 균일하지 않은 조명 효과를 보정하기 위해 전처리가 진행된다.
다음으로 Mask R-CNN을 이용해 이미지의 모든 물고기들을 각각 localize & segment 한다.
추출한 segmentation을 local gradient를 이용해 각 물고기의 경계를 추정한다.
마지막으로 스테레오 정보를 이용해 물고기의 길이를 계산한다.
Image pre-processing
이미지 전처리의 목적은 균일하지 않은 조명을 보정해서 물고기의 위치와 관계없이 물고기와 배경사이의 차이가 비슷한 이미지를 만드는 것이고, 그러기 위해서는 먼저 비선형 이미지를 선형화 해야 한다.
카메라는 들어오는 빛 에너지와 비례하지 않는 RGB 값을 제공하기 때문에 이미지 선형화는 필요한 전처리 과정이다.
본 연구에서는 Debevec and Malik (1997)에 설명된 카메라 선형화 방법으로 RGB 값은 센서 픽셀에 대한 조도에 비례하게 이미지를 처리했고, 이제 균일하지 않은 조명의 보정과 같은 추가적인 선형 보정을 거칠 수 있게 되었다.
(Debevec, P. E., & Malik, J. (1997). Recovering high dynamic range radiance maps from photographs: Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques. Los Angeles, USA: SIGGRAPH.)
Deep Vision system으로 얻은 이미지는 중앙 영역의 빛의 양이 모서리의 빛의 양보다 높다.
이를 보정하기 위해 우선 이미지를 RGB에서 HSV(Gue, Saturation, Value)로 변환한다.(여기서 V는 휘도, 즉 단위면적당 광도)
V채널은 조명을 보정하는데 사용되는 유일한 요소로, 충분히 큰 이미지 세트의 중앙 값(median)을 계산한다.
이미지 세트로부터 중앙 이미지가 계산이되면, 배경의 휘도를 얻을 수 있고 이를 이용해 이미지의 조명을 추론할 수 있게된다.
추정된 배경 이미지는 반전 시켜서 불균일한 조명의 보상패턴으로 적용되어 모든 이미지의 휘도(V)를 보정한다.
최종 이미지는 HSV에서 다시 RGB로 변환하여 기존의 RGB채널 간의 상관관계는 유지된다.(색이 변하지 않는다)
Single fish detection
우선 이미지에서 물고기를 각각 분할할 수 있게 함으로 분할된 물고기에 대한 길이 측정이 쉬운작업이 되도록 만드는 것이 중요하다(그림 3)
그림 3a는 배경이 아닌것이 모두 물고기라고 가정할 수 있기 때문에 segmentation이 매우 쉬운 상황을 보여준다.
그러나 그림 3c는 물고기가 겹쳐있기 때문에 외곽선을 결정하기 어려운 까다로운 이미지이다.
객체(본 논문에서는 물고기)를 인식하는 알고리즘을 공식화 할 수 없는 상황에 적용하기 위해 머신러닝 방법을 적용했고, 여러 알고리즘 중에서도 Convolutional Neural Network(CNN)은 지도 학습을 사용해 까다로운 데이터 셋에서 최상의 결과를 얻을 수 있다는 것이 입증되었기 때문에 이를 이용했다.
State-of-the-art CNN기반 딥러닝 객체 탐지 방법중 하나는 Region-CNN(R-CNN)이다.
R-CNN은 이미지내의 관심지역(regions of interest, RoI)을 빠르게 감지할 수 있는 방법을 제공한다.
R-CNN을 기반으로 빠른 객체탐지를 위한 Faster R-CNN과 객체 segmentation을 위한 Mast R-CNN과 같은 방법이 등장했고, 본 논문에서는 어류 탐지 및 segmentation을 위해 Mask R-CNN방법을 사용한다.
Mask R-CNN은 이미지에 따라 개체 수가 다양할 수 있는 개체 탐지를 위해 Faster R-CNN과 이미지의 픽셀이 어떤 개체에 속하게 되는지 알기위한 segmentation을 얻기 위해 Fully Convolutional Network(FCN)을 결합한다. 그리고 이를 semantic segmentation이라고 한다.
Mask R-CNN은 우선 물체가 포한된 영역을 찾기 위해 슬라이딩 창(sliding-window)방식으로 이미지를 스캔하는 region proposal network(RPN)을 이용해 RoI를 결정하고, 각 RoI에 대해 RoI 풀링을 통해 객체의 클래스 레이블을 결정한다.
FCN은 모든 RoI에 대해 마스크를 예측하는데에 사용되었다.
Mask R-CNN 모델은 coco데이터셋에 pretrained-weights를 이용했고, 마지막 레이어만 물고기와 배경을 구분할 수 있게끔 재학습 시켰다.
그 다음 전체 네트워크에 대해 다양한 data augmentation방법을 이용해 늘린 트롤링데이터를 학습시켜 과적합을 줄이려 했다.
Segmenatation refinement
Mask R-CNN으로 계산된 마스크는 저해상도 이미지를 이용해 얻어졌기 때문에 물고기를 분할하는 마스크는 원본이미지에서 얻을 수 있는 것보다 정확도가 떨어진다. 따라서 마스크를 개선(refinement)하는 최종단계는 보다 정확한 segment를 얻기위해 적용된다.
저해상도에서 얻어진 이미지들은 다시 원본스케일로 변환되어 원본 이미지의 V채널 gradient를 계산해 객체의 경계가 명확하게 구분될 수 있는 이미지를 만든다. 빈 내부 영역은 binary morphological operations을 이용해 채워진다.
겹치는 물고기의 경우에 gradient-based 미세조정에 의해 얻은 경계로 겹치는것을 구별할 수 없는 경우, Mask R-CNN의 마스크를 이용해 경계를 배치해야한다.
각 물고기가 속하는 픽셀을 결정하기 위해 다중 레이블 확장 작업(multi-label dilate operation)을 사용해 마스크가 확장되고, 확장된 마스크는 각 물고기 마스크에 대한 gradient 이미지의 기여도를 결정하기위해 사용된다.
Segmentation performance
본 논문에서는 IoU(Intersection over Union)와 픽셀 정확도를 이용해 처리된 마스크의 성능을 평가했다.
Jaccard index라고도 불리는 IoU는 특정 데이터셋에서 개체 분할(segmentation)의 정확성을 측정하는 데 사용되는 평가 지표로써, CNN 모델에 의해 예측된 바운딩 박스와 ground-truth (사람이 직접 라벨링한) 바운딩박스를 사용해 계산된다.
픽셀 정확도의 경우는 올바르게 분류된 픽셀의 백분율에 해당되며, 이 경우 TP, TN, FP, FN을 사용해 계산을 한다.
Length estimation
우선 closing 형태학적 연산을 수행함으로써 마스크를 매끄럽게 만들고, 마스크가 1픽셀 너비를 가질때 까지 thinning 형태학적 연산을 축소시켜서 물고기의 주축을 얻는다.
주축을 얻으면 RANSAC을 사용해 3차 다항식을 추정하여 골격의 포인트를 얻게되고, 이 포인트들은 inlier와 outlier로 분류되게 된다. 이러한 과정을 여러번 반복하여 여러개의 inliers 세트에 대해 최소 제곱의 합이 가장 낮은 곡선을 최종 추정치로 얻는다.
곡선 방정식이 도출되면, 물고기의 길이를 정의하는 시작점과 끝점은 곡선 방정식의 곡선과 물고기 마스크의 경계의 교차점으로 결정된다.
스테레오 정제(rectification)로 결정된 축 제약조건(axis constraint)을 적용해 시작점과 끝점을 오른쪽이미지에서 왼쪽이미지로 쉽게 옮길 수 있다.
그리고 오른쪽 이미지에서 곡선 방정식을 따라 균일하게 분포된 포인트 세트가 결정되면, 동일한 균일 분포에 따라서 왼쪽이미지로 옮길 수 있다.
마지막으로 왼쪽과 오른쪽 이미지의 포인트 쌍 세트는 스테레오 시스템의 교정을 덕분에 에피폴라 지오메트리(epipolar geometry, 2-view 비전에서의 기하)를 사용하여 세그먼트의 거리를 계산한다.
Results
불균일 조명을 보정한 결과(F.4)
Mask R-CNN의 결과
데이터셋 #1 - 1605개의 이미지, 어종은 whiting, redfish, Atlantic mackerel, velvet belly lanternshark, and Norway pout
데이터셋 #2 - 밝기 조건과, 카메라의 세팅이 바뀐 200개의 annotated 이미지, 어종은 Atlantic mackerel, blue whiting, and Atlantic herring, 또한 대부분의 이미지에서 northern krill, Meganyctiphanes norvegica가 포함되어 있으며, 이미지당 평균 물고기 마리수가 데이터셋 #1에 비해 훨씬 더 많음
물고기 탐지 문제를 일반화 할수 있는 모델의 기능을 평가하기 위해 데이터셋 #1으로 모델을 학습하고, 데이터셋 #2으로 모델을 테스트했다. (표 1)
표 1을 기준으로 CNN모델이 잘 되고 있다고 생각 할 수 있다.
단일 물고기거나 겹치는 물고기 두 가지 경우에 IoU가 각각 0.845, 0.824의 값을 가지지만 정확도의 경우 0.98이상으로 훨씬 높아서 얼핏 보기엔 Mask R-CNN은 어류 탐지 문제를 일반화 하는데 큰 도움이 된 것처럼 보인다.
하지만 탐지 다음에 길이를 재는 것을 가능하게 하기 위해 모든 물고기들을 각각 분할할 것이다.
그림 5 에서 5c는 두개의 물고기가 겹치는 상황인데, 정답과 다르게 segment가 되더라도 앞서 정의했던 IoU에서는 잘 작동한 것으로 판단되기 때문에 본 연구의 의도와는 다르다고 볼 수 있다.
따라서 새로운 지표인 IoU* 를 제시한다.
IoU*는 그림 5a와 5c를 이용해 예를 들자면, 5a의 1번(빨간부분)과 5c의 1번(빨간부분)의 교집합이 분자, 두 영역의 합집합이 분모가 되게 된다. 즉 기존의 IoU에서는 높게 평가 되었던 부분이 본 연구의 목적에 맞게 제시된 IoU*에서는 낮게 평가된다.
IoU*값이 높게 평가된 경우는 겹치는 물고기가 각각 잘 분할된 경우이고, 낮게 평가된 경우는 그림 5c와 같이 겹치는 물고기를 하나의 물고기로 판단한 경우이다. 본 연구에서는 실험적으로 IoU*의 임계값을 0.7로 설정했다.
새로운 지표인 IoU*를 이용한 첫 번째 실험 결과(표 2)
3번째 열은 IoU*값이 임계값(본 실험에서는 0.7로 설정)이상으로 검출된 물고기의 갯수이다.
겹치지 않는 물고기의 경우에 높은 정확도를 보여주지만, 겹치는 물고기의 경우에는 2/3도 안되는 정확도를 보여준다.
표 2의 마지막 2행은 Mask R-CNN의 결과에 gradient refinement를 적용한 결과로 IoU*는 개선 되었지만, 물고기를 탐지하는 능력은 나아졌다고 볼 수 없다.
두 번째 실험으로 학습 데이터에 데이터셋 #2의 데이터를 포함시켰다.
예상대로 겹쳐있는 물고기에 대한 탐지 성능이 첫 번째 실험의 약 57%에서 두 번째 실험의 약 79%로 향상되었고 FN, FP의 비율이 확연하게 줄은 것을 확인할 수 있다.
또한 마지막 열의 IoU*의 값에서 볼 수 있듯이 전체적으로 두 번째 실험이 첫 번째 실험보다 높고, Gradient refinement로 인한 IoU*가 향상됨에 따라 여전히 결과를 개선시킬 수 있다는 점을 확인했다.
본 연구의 모델을 실제 데이터에 적용한 결과(그림 6, 그림 7)
그림 7은 본 논문에서 제안한 파이프라인의 중간 결과물들을 모아 한번에 보여준다.
Discussion and conclusions
물고기가 겹치는 상황에서의 적절한 분할은 완전히 해결되지 않았고, 여전히 도전 과제로써 남아있다.
스테레오 이미지는 깊이 정보를 얻기 위해 사용되었으나, 복잡한 상황에서 안정적으로 물고기의 경계 추정하지 못하는 단점이 아직 남아있다.
본 연구에 대한 많은 후속 연구가 계획되어있는데, 첫 번째로 크기를 측정하는것의 검증은 정확한 물고기의 모양을 재생산(reproduction)하려는 도움이 되고있다.
두 번째로는 본 모델을 임베디드 프로세싱 하드웨어에서 10fps정도의 속도로 처리하는 것이다. 그것이 가능할 때 연속된 이미지에서 동일한 물고기의 이동이 감지되기 때문에 물고기를 추적하는 것 또한 가능해져서, 트롤에 있는 물고기의 양과 평균 크기를 실시간으로 추정할 수 있게된다.
마지막으로 annotated 데이터들이 더 많아졌을 때, 본 연구에서 단순히 물고기다 아니다를 판별하는 것이 아닌 물고기의 어종을 판별하는 Mask R-CNN을 만들도록 확장할 것이다.
Morphology operations 참고 - https://swprog.tistory.com/entry/Mathematical-morphology-%EB%AA%A8%ED%8F%B4%EB%A1%9C%EC%A7%80-%EC%97%B0%EC%82%B0