DOI QR코드

DOI QR Code

딥러닝 기반 넙치 질병 식별 향상을 위한 전처리 기법 비교

A Comparison of Pre-Processing Techniques for Enhanced Identification of Paralichthys olivaceus Disease based on Deep Learning

  • 강자영 (목포대학교 컴퓨터공학과) ;
  • 손현승 (목포대학교 컴퓨터공학과) ;
  • 최한석 (목포대학교 컴퓨터공학과)
  • 투고 : 2022.02.07
  • 심사 : 2022.02.23
  • 발행 : 2022.03.28

초록

과거 양식장에서 어류 질병은 세균성이었던 반면 최근은 바이러스성 및 혼합된 형태가 되면서 어류 질병의 빈도가 높아졌다. 양식장이라는 밀폐된 공간에서 바이러성 질병은 확산속도가 높으므로 집단 폐사로 이어질 확률이 매우 높다. 집단 폐사를 방지하기 위해서는 어류 질병의 빠른 식별이 중요하다. 그러나 어류의 질병 진단은 고도의 전문지식이 필요하고 매번 어류의 상태를 눈으로 확인하기 어렵다. 질병의 확산을 막기 위해서는 병이든 어류의 자동식별 시스템이 필요하다. 본 논문에서는 딥러닝 기반의 넙치의 질병 식별 시스템의 성능을 높이기 위해서 기존 전처리 방법을 비교 실험한다. 대상 질병은 넙치에서 가장 빈번히 발생하는 3가지 질병 스쿠티카병, 비브리오증, 림포시스티스를 선정하였고 이미지 전처리 방법으로 RGB, HLS, HSV, LAB, LUV, XYZ, YCRCV를 사용하였다. 실험결과 일반적인 RGB를 사용하는 것보다 HLS가 가장 좋은 결과를 얻을 수 있었다. 간단한 방법으로 질병의 인식률을 향상해 어류 질병 식별 시스템을 고도화 할 수 있을 것으로 예상한다.

In the past, fish diseases were bacterial in aqua farms, but in recent years, the frequency of fish diseases has increased as they have become viral and mixed. Viral diseases in an enclosed space called a aqua farm have a high spread rate, so it is very likely to lead to mass death. Fast identification of fish diseases is important to prevent group death. However, diagnosis of fish diseases requires a high level of expertise and it is difficult to visually check the condition of fish every time. In order to prevent the spread of the disease, an automatic identification system of diseases or fish is needed. In this paper, in order to improve the performance of the disease identification system of Paralichthys olivaceus based on deep learning, the existing pre-processing method is compared and tested. Target diseases were selected from three most frequent diseases such as Scutica, Vibrio, and Lymphocystis in Paralichthys olivaceus. The RGB, HLS, HSV, LAB, LUV, XYZ, and YCRCV were used as image pre-processing methods. As a result of the experiment, HLS was able to get the best results than using general RGB. It is expected that the fish disease identification system can be advanced by improving the recognition rate of diseases in a simple way.

키워드

I. 서론

우리나라의 넙치 양식 산업은 1980년대 초 육상 양식 방법이 개발되면서 급진적으로 발전하게 되었다. 2010년대에는 양식 어류 생산량의 약 56%를 기록하였으며, 2021년도를 기준으로 넙치의 생산량은 지역별로는 제주 53.5%, 전남 41.7%, 경남 3.3% 및 기타 1.5% 로 나타났다. 주요 생산 지역인 제주와 전남은 전체 생산량의 95.2%를 점유하고 있다[1].

넙치 양식 산업은 어류 생산에서 큰 부분을 차지하고 있으나, 넙치 양식장에서 발생하는 다양한 기생충과 세균에 의한 질병으로 급성 및 만성 폐사 피해가 거듭되는 문제점이 있다. 2015년 전남과 제주의 표본조사 넙치 양식장에서 발생한 폐사의 발생 원인은 세균성 질병으로 연쇄구균병, 비브리오병, 활주세균증, 에드워드 병이고, 기생충성 질병은 스쿠티카증, 여윔증였다. 넙치에서 가장 많이 발생하는 대표적인 질병으로는 폐사율이 가장 높은 기생충성 질병인 스쿠타카증와 세균성 질병인 비브리오증, 바이러스성 림포시스티스이다[2].

양식어의 질병에 대한 증상, 감염경로를 보면, 기생충에 의한 질병인 스쿠티카병은 체표 염증 및 두부 손상이나 안구 백탁 및 돌출, 지느러미 연조 및 꼬리자루 노출 등의 증상이 나타나며, 주로 몸, 아가미, 뇌 등에 기생충이 발생하다. 세균에 의한 비브리오증은 몸의 색깔이 흑화되고 등 부위의 부분적 발적과 궤양, 복부 측면충혈증상, 지느러미의 출혈, 결손, 붕괴, 불규칙한 기저부의 궤양, 먹이를 먹지 않는 경향을 보이며, 질병 감염 시 수조 바닥 부분에 가만히 붙어 있다. 바이러스 감염인 림포시스티스는 영양부족 및 빈혈로 인해 어류의 행동이 저조해지는 경향을 보이며, 입 주위에 종양을 형성하거나 체표 출혈 및 지느러미 끝부분의 손상이 발병한다[3].

CCTHCV_2022_v22n3_71_f0001.png 이미지

그림 1. 넙치 질병 종류

[그림 1]은 질병의 원인(기생충, 세균, 바이러스)에 따른 대표적인 넙치의 질병인 스쿠티카병, 비브리오증, 림포시스티스의 예이다.

어류의 사망은 외부 전염병에 의한 감염뿐만 아니라 어류의 건강상태, 적절하지 않은 환경 등의 복합적으로 일어난다[4]. 그러므로, 상시 어류의 상태를 확인하는 것이 중요하다. 그러나 양식장의 질병 예측은 육안 관측 중심으로 질병을 조기에 진단해 질병의 확산을 예방하는 데 큰 어려움이 있다. 또한, 방치 시 어류의 죽음 및 대량 폐사로 이어진다.

그래서 많은 연구자는 카메라를 통한 영상 이미지에서 어류 질병을 감지하기 위해 이미지 처리 기법을 사용한다[5][6]. 이미지처리기법은 전문가에 의해서 영상처리 알고리즘들의 조합을 통해서 분류하고 식별하기 때문에 일부 이미지에는 매우 효과적이나 다양한 이미지에는 성능이 떨어지는 문제가 있다. 이 문제로 최근에는 딥러닝을 통한 질병을 분류하는 방법이 많이 사용되고 있고 그 결과도 기존 영상처리 방법보다 좋은 결과를 얻고 있다[7-10]. 하지만 딥러닝을 통해 질병을 찾고 그 정확도를 높이기 위해서는 질병에 대한 다양한 이미지가 필요하다.

질병에 대한 다양한 이미지 부족을 해소하기 위해서는 이미지 확대, 자르기, 회전과 같은 이미지 증강 기법 [11]을 사용한다. 그러나 이미지 증강 기법은 이미지의 양적 증가만 가능하여 다양한 질병이미지 생성에는 종별 수량, 다양성, 품질 등의 질적 문제를 가지고 있다. 우리는 기존 연구[12]에서 SinGAN[13]을 활용해서 다양한 종류의 질병 이미지를 증강하였다. 이 생성된 질병 이미지는 본 논문에서 객체 인식의 성능 비교를 위해서 활용하고자 한다.

본 논문에서는 어류 넙치의 질병의 인식률을 높일 수 있도록 딥러닝 기반의 시스템 구축하고 질병 이미지 전처리가 미치는 영향에 대해서 비교 실험하였다. 대상 질병은 넙치에서 가장 빈번히 발생하는 3가지 질병 스쿠티카 병, 비브리오증, 림포시스티스를 선정하였고 이미지 전처리 방법으로 RGB, HLS, HSV, LAB, LUV, XYZ, YCRCV를 사용하였다.

양식장의 폐사율을 최소하기 위해서는 양식 어류들의 행동 패턴과 질병 데이터를 학습 데이터로 구축하고 딥러닝 기반의 어류 질병 예측 시스템을 개발함으로써 양식장의 어류의 질병을 조기에 예측할 수 있고 빠른 조치로 집단 폐사율을 최소화할 수 있을 것이다.

본 논문의 구성은 다음과 같다. 2장에서는 관련 연구로서 이미지 전처리 기법과 이미지 데이터 증강 기법을 소개한다. 3장에서는 딥러닝 기반의 전처리 기법 및 검출 방법에 대해서 언급한다. 4장에서는 본 연구에서 제안한 방법의 실험한 결과 및 평가에 대해 논의한다. 마지막으로 5장에서는 결론 및 향후 연구에 관해서 기술한다.

II. 관련연구

1. 이미지 전처리 기법

이미지 데이터는 픽셀(Pixel) 이라는 작은 사각형 형태를 모은 것으로 각 픽셀은 다른 색의 사각형이고, 전체 이미지의 크기를 “세로 픽셀 수 × 가로 픽셀 수” 형식으로 표현한다. 이러한 픽셀의 색을 표현하는 스칼라값이나 벡터를 2차원 함수 f(x,y)정의하며 x와 y는 2차원 공간 좌표를 말한다. 좌표 (x,y)에서 f의 값이 그 점에서의 영상의 밝기가 된다. 픽셀의 색을 숫자로 표현하는 방식을 색공간(Color Space)라 하며 색공간변환은 본래의 색공간에서 다른 색공간으로 변환할 때 사용한다. 대표적인 색공간으로는 Gray Scale, RGB,  HSV 방식 등이 있다.

가장 기본이 되는 RGB은 Red, Green, Blue의 3가지 색의 명도를 숫자 3개가 합쳐진 벡터로 표현되며 8bit 부호 없는 정수를 사용하는 경우 빨강(255, 0, 0), 녹색(0, 255, 0), 파랑(0, 0, 255)이다. RGB는 “세로 픽셀 수 × 가로 픽셀 수 × 색채널”의 3차원 배열의 형태로 저장된다[14]. 이미지 색공간 변환방법인 HLS, HSV, LAB, LUV, XYZ, YCRCV는 OpenCV API 문서[15]를 참고하였다.

HLS는 8bit 이미지 경우 R, G, B가 부동 소수점 형식으로 변환되고 0에서 1 범위에 맞게 크기가 조정되는 변환방식이다.

\(\begin{aligned} &V_{\max } \leftarrow \max (R, G, B) \\ &V_{\min } \leftarrow \min (R, G, B) \\ &L \leftarrow \frac{V_{\max }+V_{\min }}{2} \end{aligned}\)       (1)

\(S \leftarrow \begin{cases}60(G-B) / V_{\max }-V_{\min } & \text { if } V_{\max }=R \\ 120+60(B-R) / V_{\max }-V_{\min } & \text { if } V_{\max }=G \\ 240+60(R-G) / V_{\max }-V_{\min } & \text { if } V_{\max }=B \\ 0 & \text { if } R=G=B\end{cases}\)       (2)

If H < 0then H ← H+360

Onoutput 0 ≤ L ≤ 1,0 ≤ S ≤ 1,0 ≤ H ≤ 360

그런 다음 값이 V ← 255V, S ← 255S, H ← H/2 유형으로 변환된다.

HSV는 8bit 이미지 경우 R, G, B가 부동 소수점 형 식으로 변환되고 0에서 1 범위에 맞게 크기가 조정되는 변환방식이다.

\(V_{\max } \leftarrow \max (R, G, B)\)       (3)

\(S \leftarrow \begin{cases}\frac{V-\min (R, G, B)}{V} & \text { if } V \neq 0 \\ 0 & \text { otherwise }\end{cases}\)       (4)

\(H \leftarrow \begin{cases}60(G-B) / V-\min (R, G, B) & \text { if } V=R \\ 120+60(B-R) / V-\min (R, G, B) & \text { if } V=G \\ 240+60(R-G) / V-\min (R, G, B) & \text { if } V=B \\ 0 & \text { if } R=G=B\end{cases}\)       (5)

If H < 0then H ← H+360

Onoutput 0 ≤ V ≤ 1,0 ≤ S ≤ 1,0 ≤ H ≤ 360

그런 다음 값이 V ← 255V, S ← 255S, H ← H/2 유형으로 변환된다.

LAB은 8bit 이미지 경우 R, G, B가 부동 소수점 형 식으로 변환되고 0에서 1 범위에 맞게 크기가 조정되 는 변환방식이다.

\(\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \leftarrow\left[\begin{array}{lll} 0.412453 & 0.357580 & 0.180423 \\ 0.212671 & 0.715160 & 0.072169 \\ 0.019334 & 0.119193 & 0.950227 \end{array}\right] \cdot\left[\begin{array}{c} R \\ G \\ B \end{array}\right]\)       (6)

\(\begin{aligned} &X \leftarrow X / X_{n}, \text { wgere } X_{n}=0.950456 \\ &Z \leftarrow Z / Z_{n}, \text { wgere } Z_{n}=1.088754 \end{aligned}\)       (7)

\(L \leftarrow \begin{cases}116^{*} Y^{1 / 3}-16 & \text { f or } Y>0.008856 \\ 903.3^{*} Y & \text { for } Y \leq 0.008856\end{cases}\)        (8)

\(\begin{aligned} &a \leftarrow 500(f(X)-f(Y))+\text { delta } \\ &b \leftarrow 200(f(Y)-f(Z))+\text { delta } \end{aligned}\)       (9)

\(f(t)=\left\{\begin{array}{lr} t^{1 / 3} & \text { for } t>0.008856 \\ 7.787 t+16 / 116 & \text { f or } t \geq 0.008856 \end{array}\right.\)       (10)

\(\text { delta }=\left\{\begin{array}{l} 128 \text { fot } 8-\text { bitimages } \\ 0 \quad \text { for floating-point images } \end{array}\right.\)       (11)

출력이 0 ≤ L ≤ 100, -127 ≤ a ≤ 127, -127 ≤ b ≤ 127이면 L← L*255/100, a← a + 128, b ← b+128 유형으로 변환된다.

LUV는 8bit 이미지 경우 R, G, B가 부동 소수점 형 식으로 변환되고 0에서 1 범위에 맞게 크기가 조정되는 변환방식이다.

\(\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \leftarrow\left[\begin{array}{lll} 0.412453 & 0.357580 & 0.180423 \\ 0.212671 & 0.715160 & 0.072169 \\ 0.019334 & 0.119193 & 0.950227 \end{array}\right] \cdot\left[\begin{array}{c} R \\ G \\ B \end{array}\right]\)       (12)

\(L \leftarrow \begin{cases}116^{*} Y^{1 / 3}-16 & \text { for } Y>0.008856 \\ 903.3^{*} Y & \text { for } Y \leq 0.008856\end{cases}\)       (13)

\(\begin{aligned} &u_{\leftarrow}^{\prime} 4^{*} X /\left(X+15^{*} Y+3 Z\right) \\ &u^{\prime} \leftarrow 9^{*} X /\left(X+15^{*} Y+3 Z\right) \\ &u \leftarrow 13^{*} L^{*}\left(u^{\prime}-u_{n}\right) \text { where } u_{n}=0.19793943 \\ &u \leftarrow 13^{*} L^{*}\left(v^{\prime}-v_{n}\right) \text { where } v_{n}=0.46831096 \end{aligned}\)        (14)

출력이 0 ≤ L ≤ 100, -134 ≤ u ≤ 220, -140 ≤ v ≤ 122이면 L← 255/100L, u← 255/354(u+134), v ← 255/262(u+140) 유형으로 변환된다.

XYZ는 X ,Y, Z는 전체 값 범위를 포함하며 부동소 수점 이미지의 경우 Z는 1을 초과할 수 있다.

\(\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \leftarrow\left[\begin{array}{lll} 0.412453 & 0.357580 & 0.180423 \\ 0.212671 & 0.715160 & 0.072169 \\ 0.019334 & 0.119193 & 0.950227 \end{array}\right] \cdot\left[\begin{array}{c} R \\ G \\ B \end{array}\right]\)       (15)

\(\left[\begin{array}{c} R \\ G \\ B \end{array}\right] \leftarrow\left[\begin{array}{ccc} 3.240479 & -1.53715 & -0.498535 \\ -0.969256 & 1.875991 & 0.041556 \\ 0.055648 & -0.204043 & 1.057311 \end{array}\right] \cdot\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right]\)       (16)

YCRCV는 Y, Cr, Cb는 전체 값 범위를 포함한다.

\(Y \leftarrow 0.299 \cdot R+0.587 \cdot G+0.114 \cdot B\)   (17)

Cr ← (R-Y)· 0.713 + delta

Cb ← (B-Y)· 0.564 + delta

R ← Y + 1.403 · (Cr - delta)

G ← Y - 0.714 · (Cr - delta) - 0.334· (Cb - delta)

B ← Y + 1.773 · (Cb - delta)

  \(\text { delta }=\left\{\begin{array}{l} 128 \text { fot } 8-\text { bit images } \\ 0.5 \text { for floating-pointimages } \end{array}\right.\)       (18)

2. 어류 이미지 데이터 증강 기법

이미지 증강 기법의 부족한 이미지를 만들어내기 위해서 대부분은 [그림 2]와 같이 이미지 확대, 자르기, 뒤집기, 회전과 같은 이미지 처리를 사용한다.

CCTHCV_2022_v22n3_71_f0002.png 이미지

그림 2. 일반적인 이미지 증강의 예

그러나 이러한 이미지 증강 기법은 단순히 이미지의 양만 증가시키기 때문에 다양한 질병을 인식하기에는 질적인 한계를 가지고 있다. 이러한 이미지의 질적인 수준(종별 수량, 다양성, 품질)을 높이기 위해서 다양한 질병에 따라 부족한 질병 이미지를 다량으로 만들어내는 방법이 필요하다.

다른 이미지 증강 기법으로는 GAN[16]이나 CGAN[17]을 사용하는 것이다. GAN은 생성자와 판별자 사이에 경쟁을 통해 네트워크를 학습하여 생성된 가짜 이미지가 실제와 비교하여 구분이 안 될 정도의 그럴듯한 이미지를 생성하는 방법으로 새로운 이미지 생성, 복원, 합성, 변환 등을 수행할 수 있고 흑백 사진을 컬러로 복원하거나 특정 화가의 화풍을 학습하는 등 이미지 분야에 광범위하게 응용되고 있다. CGAN은 기존 GAN에 조건을 입력할 수 있도록 개선되었다. 이러한 특성에 착안해 CGAN의 일종인 pix2pix[18]과 CycleGAN[19]을 사용하여 어류의 질병 이미지를 증강해보았다[20][21]. 하지만 일부 이미지에서 [그림 3] 과 같이 지느러미 부분만 질병의 이미지가 생성되어야 하지만 범위를 벗어나 몸체 부분까지 확장된다. 즉, 기존의 CGAN을 통해서 그럴듯한 질병의 이미지를 다양하게 생성할 수 있으나 병에 대한 잘못된 이미지를 생성할 수 있는 문제가 있다.CCTHCV_2022_v22n3_71_f0003.png 이미지

그림 3.CGAN에 의해 잘못 생성된 예

우리는 SinGAN[13]을 이용하여 기존 CGAN을 이용한 질병 이미지 생성 문제를 해결할 수 있었다[12]. SinGAN을 이용하여 어류 질병 이미지를 생성하기 위해서는 [그림 4]와 같이 2단계로 구성되어 있다.

1단계에서는 이미지 학습 단계로 정상적인 어류 이미지를 학습하고 2단계에서는 질병이 합성된 이미지와 마스크 이미지를 SinGAN에 합성하여 질병 이미지를 생성한다. 사용된 넙치의 질병 이미지는 배경을 제거하여 이미지 확대, 회전 및 전처리와 같은 이미지 처리 기법을 사용하여 학습하였다. SinGAN의 학습 환경은 기본 Default를 사용하였고, 네트워크의 Layer 수만 5에서 10으로 변경하였다. Convolution Network는 Conv(3×3)-BatchNorm–LeakyReLU의 컨볼루션 블록 10개를 사용하고 32개의 Kernel을 시작하여 4개의 스케일마다 Kernel의 숫자를 2배씩 증가하였다.

CCTHCV_2022_v22n3_71_f0004.png 이미지

그림 4. SinGAN을 사용한 질병 이미지 증강 방법

최종적으로 어류 질병 이미지를 증강하여 넙치 정상 이미지 11장에 각 질병 패턴 10가지를 합성하여 스쿠티카 병 110장, 비브리오증 110장, 림포시스티스 110 장으로 총 330장을 생성하고, 이를 통해 생성된 이미지는 4배수 하여 1, 320장의 이미지를 생성하였다. 본 논문에서는 생성된 질병 이미지 1, 320장을 사용하여 실험을 진행한다.

Ⅲ. 제안하는 딥러닝 기반 전처리 처리방법

1. 딥러닝 기반의 객체검출

어류의 질병을 예측하기 위해서는 어류의 질병 부위를 식별할 필요성이 있다. 어류의 질병을 식별하기 위해 YOLOv4[22] 아키텍처를 활용하였다. YOLOv4의객체검출은 이미지 내 영역을 랜덤하게 선택하여 랜덤하게 채우거나(Random Erase), 0의 값으로 보완한다. 그리고 이미지 내 여러 사각형 영역을 랜덤하게 또는 고르게 선택하여 모두 0으로 변환시켜 객체검출 시 실시간, 고품질의 확실한 객체검출이 가능하다. 따라서 이 결과를 토대로 어류 질병 객체검출 성능 평가 실험을 YOLOv4 아키텍처로 사용한다.

각 질병 어류 이미지를 HLS, HSV, LAB, LUV, XYZ, YCRCV으로 전처리 과정을 진행한 이미지와 질병 부위가 라벨링 과정이 된 이미지를 YOLOv4 모델로 학습하여 가중치 파일을 생성하였다. 전처리는 OpenCV 라이브러리를 이용하여 [그림 5]와 같이 파이썬으로 간단하게 작성할 수 있다.

CCTHCV_2022_v22n3_71_f0005.png 이미지

그림 5. 이미지 전처리 코드

[그림 6]은 YOLOv4에 이미지 전처리를 수행한 후 학습하는 과정을 도식으로 표현한 것이다. RGB 이미지를 각각 HLS, HSV, LAB, LUV, XYZ, YCRCV로 변환하고 각각을 별개로 학습한다. 그러므로 최종적으로 학습 후에 생성되는 가중치 파일은 RGB를 포함하여 7개이다.

CCTHCV_2022_v22n3_71_f0006.png 이미지

그림 6. 이미지 학습 방법

2. 전처리 기반 딥러닝 검출 방법

질병 검출하기 위해서 [그림 7]과 같이 RGB, HLS, HSV, LAB, LUV, XYZ, YCRCV으로 처리된 이미지와 가중치 파일을 각각 YOLOv4 모델로 실행시켜 전처리결과별 이미지에서 질병 부위를 검출하고 각각의 결과를 확인한다.

CCTHCV_2022_v22n3_71_f0007.png 이미지

그림 7. 이미지 검출 방법

Ⅳ. 실험 및 결과

1. 실험 데이터

이미지 학습에 사용된 기본적인 넙치 이미지는 인터넷 검색을 통해서 수집하였다. 또한, 좋은 결과를 얻기 위해 이미지 배경은 제거하였다. 정상적인 어류 이미지와 질병 부위를 마스크화시켜 SinGAN을 이용하여 질병 이미지를 증강하였다. 넙치 정상 이미지 11장에 각 질병 패턴 10가지를 합성하여 스쿠티카병 110장, 비브리오증 110장, 림포시스티스 110장으로 총 330장을 생성하고, 이를 통해 생성된 이미지는 4배수 하여 1, 320장의 이미지를 생성하였다.

각 질병 어류 이미지를 HLS, HSV, LAB, LUV, XYZ, YCRCV으로 전처리 과정을 진행하고 질병 부위 라벨링 과정이 진행된 이미지를 YOLOv4 모델로 학습하여 가중치 파일을 생성하였다. 생성된 가중치 파일과 전처리 과정이 진행된 이미지를 YOLOv4 모델로 학습 시켜 전처리 결과별 이미지에서 질병 부위를 검출하였다.

2. 실험환경

어류의 질병 예측을 하기 위해서는 어류의 질병 부위를 식별할 필요성이 있다. 어류의 질병을 식별하기 위해 YOLOv4 아키텍처를 활용하였다. 학습을 위한 시스템은 CPU Intel i7-11700K 3.6GHz, Memory 64GB, GPU GeForce RTX 3080 Ti로 구성하였고, 총 1, 320장의 어류 이미지를 학습하는데 소모된 시간은 약 25시간이 사용되었다. 7가지의 전처리 별로 따로 학습해야 수행되므로 학습에 사용된 총 시간은 약 175 시간이 필요하다.

3. 어류 검출 성능 평가 지표

딥러닝으로 학습한 데이터를 Precision, Recall, F1-score, Iou, mAP의 객체검출 성능 평가 지표[23] 로 성능 평가하였다.

Precision(정밀도)는 관련 객체만을 식별하는 모델의 성능을 나타낸다.\(\text { Precision }=\frac{T P}{T P+F P}=\frac{T P}{\text { all } \text { detections }}\)       (19)

Recall(재현율)은 모든 관련 사례(모든 정답 bounding box)를 찾는 모델의 성능으로 평가한다.

표 1.객채 검출된 이미지CCTHCV_2022_v22n3_71_t0001.png 이미지

\(\text { Recall }=\frac{T P}{T P+F N}=\frac{T P}{\text { all groundtruths }}\)       (20)

F1 Score는 Precision과 Recall의 조화 평균으로 주로 분류 Class 간의 데이터가 불균형이 심각할 때 사용되는 모델이다.

\(F 1-\text { score }=2 \times \frac{\text { Precision } \times \text { recall }}{\text { Precision }+\text { Recall }}\)        (21)

IOU(Intersection Over Union)는 의미 그대로 합집합 분에 교집합이며, ground truth bounding box 와 predict bounding box의 교집합/합집합으로 평가하는 모델이다.

\(I o u=\frac{\operatorname{area}\left(B_{g u} \cap B_{p}\right)}{\operatorname{area}\left(B_{g u} \cup B_{p}\right)}\)        (22)

mAP는 모든 점 보간법을 이용해서 AP를 구한 값의 평균을 산출한다. 즉 여러 Class에 대한 AP를 구해야 하므로, 각각의 Class에 대해 AP를 구하고 평균을 산 출하는 모델이다.

\(m A P=\frac{1}{N} \sum_{i=1}^{N} A P_{i}\)       (23)

4. 어류 질병 검출의 성능 평가 결과

딥러닝 모델을 기반으로 어류 질병 예측 모델을 제안하고 실제 데이터를 이용하여 성능을 테스트하여 전처리 결과별 질병 이미지 검출 결과는 [표 1]과 같다. [표 2]는 색상 변환에 따른 전처리 성능을 객체검출 알고리즘을 활용한 결과의 성능을 비교한 것이다. [표 1]과 [표 2]의 RGB는 전처리하지 않은 원본 이미지이다. 객체검출 알고리즘을 활용한 전처리 성능 평가 결과 Percision는 HSV 0.88, Recall는 HLS 0.31, F1-score는 HLS 0.44, average IoU는 XYZ 59.89%, mAP는 HLS 71.98%의 결과를 얻었다. 이 결과 중에서 HLS가 좋은 결과가 나타났다.

표 2. 색상 변환에 따른 전처리 성능 평가 비교표

CCTHCV_2022_v22n3_71_t0002.png 이미지

Ⅴ. 결론

본 논문에서는 SinGAN 딥러닝 모델을 이용하여 어류 질병 이미지를 증강하여 넙치 정상 이미지 11장에 각 질병 패턴 10가지를 합성하여 스쿠티카병 110장, 비브리오증 110장, 림포시스티스 110장으로 총 330장을 생성하고, 이를 통해 생성된 이미지는 4배수 하여 1, 320장의 이미지를 생성하였다.

생성된 이미지를 딥러닝으로 학습한 데이터를 객체검출 알고리즘의 성능으로 평가한 결과 전처리 과정에서 Percision는 HSV, Recall는 HLS, F1-score는 HLS, average IoU는 XYZ, mAP는 HLS가 가장 좋은 결과가 나타났다.

본 논문의 전처리 과정에서 디스플레이 기기에서 색을 표현하는데 특화된 방식인 HLS가 가장 좋은 결과를 산출한다는 것을 알 수 있었다. 실험결과 일반적인 RGB를 사용하는 것보다 HLS가 가장 좋은 결과를 얻을 수 있었다. 본 연구결과로 복잡한 딥러닝 모델의 변경이나 조정 없이 간단한 이미지 전처리방법의 변경만으로도 어류 질병의 인식률을 향상시킬 수 있는 것을 확인할 수 있었다. 이 방법을 어류 질병 식별 시스템에 적용하면 쉽게 질병의 인식률을 향상 가능해 시스템이 고도화되고 국내 수산 양식장에서의 질병 관리에 도움이 될 것으로 예상한다.

본 연구의 한계점은 어류의 질병 인식의 성능 평가를 위하여 사용된 이미지가 실제 수산 양식장에서 획득한 데이터가 아닌 오픈된 이미지 데이터셋을 사용하였고 SinGAN을 이용해서 생성된 이미지를 포함하여 실험하였기 때문에 실제 수산양식장에 그대로 적용하는 데에 한계가 있다. 따라서 향후 연구에서는 실제 양식장 데이터를 적용하는 과정이 필요하고 질병이 이미 확산한 이미지가 아닌 초기 상태에 질병을 식별할 수 있는 방안이 보완되어야 할 것이다.

본 연구의 향후 연구 방향 및 기대효과는 국내 스마트 양식장의 실제 어류의 데이터셋을 확보하고 질병을 임의로 조절해서 질병이 진행되는 과정에 대한 이미지확보가 필요하다. 이로 인하여 현재 양식장의 육안 관측 중심이 아닌 딥러닝을 활용한 영상으로 질병을 조기에 진단해 질병의 확산을 예방하고 집단 폐사율을 최소화할 수 있을 것으로 기대한다.

참고문헌

  1. 국가통계포털, 시도.시군구별 양식방법별 어종별 양식현황, https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1EZ0008&vw_cd=MT_ZTITLE&list_id=K2_4&seqNo=&lang_mode=ko&language=kor&obj_var_id=&itm_id=&conn_path=MT_ZTITLE
  2. 심재동, 황성돈, 장수영, 김태완, 정지민, "한국 양식넙치 폐사피해 모니터링," 한국어병학회지 제32권 제1호, pp.29-35, 2019. https://doi.org/10.7847/JFP.2019.32.1.029
  3. 국립수산과학원 해양수산자료실 어류 질병 정보, https://www.nifs.go.kr/fishguard/disease01.do
  4. 이덕찬, 원경미, 박명애, 최혜승, 정승희, "남해안 양식어류의 대량폐사 원인 분석," 해양정책연구, 제33권 제1호, pp.1-16, 2018. https://doi.org/10.35372/KMIOPR.2018.33.1.001
  5. S. Malik, T. Kumar, and A. Sahoo, "Image processing techniques for identification fish disease," IEEE 2nd International Conference on Signal and Image Processing (ICSIP), pp.55-59, 2017.
  6. V. Lyubchenko, R. Matarneh, O. Kobylin, and V. Lyashenko, "Digital image processing techniques for detection and diagnosis of fish diseases," International Journal of Advanced Research in Computer Science and Software Engineering, Vol.6, pp.79-83, 2016.
  7. A. Waleed, H. Medhat, M. Esmail, K. Osama, R. Samy, and T. M Ghanim, "Automatic Recognition of Fish Diseases in Fish Farms," 14th International Conference on Computer Engineering and Systems (ICCES), pp.201-206, 2019.
  8. M. S. Ahmed, T. T. Aurpa, and A. K. Azad, "Fish Disease Detection Using Image Based Machine Learning Technique in Aquaculture," Journal of King Saud University-Computer and Information Sciences, 2021.
  9. B. C. Kim, H. H. Cho, J. Y. Kang, H. S. Son, and H. S. Choi, "Object Detection of Paralichthys olivaceus Disease based on Deep Learning," SMA 2021, 2021.
  10. 신영학, 최정현, 최한석, "스마트 양식을 위한 딥러닝기반 어류 검출 및 이동경로 추적," 한국콘텐츠학회논문지, 제21권, 제1호, pp.552-560, 2021. https://doi.org/10.5392/JKCA.2021.21.01.552
  11. A. Mikolajczyk and M. Grochowski, "Data augmentation for improving deep learning in image classification problem," 2018 international interdisciplinary PhD workshop (IIPhDW), IEEE, pp.117-122, 2018.
  12. 손현승, 최한석, "SinGAN 딥러닝 모델을 이용한 넙치 질병 이미지 증강," 한국콘텐츠학회논문지, 제21권, 제12호, pp.322-330, 2021. https://doi.org/10.5392/JKCA.2021.21.12.322
  13. Shaham, Tamar Rott, Tali Dekel, and Tomer Michaeli, "SinGAN: Learning a generative model from a single natural image," Proceedings of the IEEE/CVF International Conference on Computer Vision, 2019.
  14. 천인국, OpenCV를 이용한 디지털 영상처리, INFINITY BOOKS, 2019.
  15. OpenCV, "Color conversions documentation," https://docs.opencv.org/4.5.2/de/d25/imgproc_color_conversions.html
  16. I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio, Generative adversarial nets, NIPS, 2014.
  17. M. Mirza and S. Osindero, "Conditional generative adversarial nets," arXiv preprint arXiv:1411.1784, 2014.
  18. I. Phillip, Z. Jun-Yan, Z. Tinghui, and A E. Alexei, "Image-to-Image Translation with Conditional Adversarial Networks," Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp.1125-1134, 2017.
  19. J. Y. Zhu, T. S. Park, Phillip Isola, and Alexei A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," Proceedings of the IEEE international conference on computer vision, pp.2223-2232, 2017.
  20. J. H. Nam, H. H. Sin, H. S. Son, and H. S. Choi, "Image Generation of Paralichthys olivaceus Disease using pix2pix of CGAN," SMA 2021, 2021.
  21. 신현호, 남정혁, 손현승, 최한석, "CycleGAN을 사용한 넙치 질병 이미지 증강," 2021년도 스마트미디어학회 추계학술대회, 2021.
  22. Bochkovskiy, Alexey, Chien-Yao Wang, and Hong-Yuan Mark Liao, "YOLOv4: Optimal speed and accuracy of object detection," arXiv preprint arXiv:2004.10934, 2020.
  23. https://github.com/rafaelpadilla/Object-Detection-Metrics/blob/master/paper_survey_on_performance_metrics_for_object_detection_algorithms.pdf