1. 서론
농업 활동은 인류의 생존과 직결된 문제로 매우 중요하다. 하지만, 최근 몇 년간 지속적으로 대한민국의 자국 농업 생산량은 점차 감소하는 추세이다. 이에 따라서 식량 안보 문제에 대한 자국 농업 보호에 대한 해결 방안 및 필요성이 증가하고 있다. 농업 생산량 감소의 주원인은 인구의 도시화가 진행되며 청년층의 농촌기피 현상 및 고령화로 인한 농촌 인구의 감소 문제이다. 이로 인해 전반적인 농업 인구 부족 문제가 심화되고 있으며, 이는 농업활동에 대한 노동력의 문제로, 나아가 자국 농업 생산량의 문제로 직결되고 있다. 이러한 문제는 비닐하우스와 같은 악조건을 가진 농업환경에서 더욱 심하게 나타난다. 비닐하우스의 강한 자외선 및 습하고 뜨거운 악조건 환경은 청년층의 농업 기피 현상을 격화시키며 고령 농촌 인구의 사망 사례 또한 발생시켜 문제가 되고 있다. 이에 인공지능 기술을 활용하여 비닐하우스 내 작물의 병해 감지를 자동화하는 시스템을 적용해 볼 수 있다. 이러한 시스템은 농업 인구의 노동력 부족 문제를 해결할 수 있으며, 악조건의 환경에서의 노동을 줄임으로써, 농업 활동에서의 건강과 안전을 향상시킬 수 있다. 또한, 작물의 병해를 인공지능 기술을 통해 자동으로 정확하게 감지하므로, 농업 생산량의 증가를 기대할 수 있다.
본 논문에서는 제안하는 시스템은 비닐하우스 내 작물의 사진을 촬영해 클라우드에서 객체 검출 기술을 이용하여 병해를 판단한다. 그리고 데이터베이스에 결과를 저장하여 관리자의 효율적인 모니터링이 가능하다. 관련 연구[1]-[9]들은 주로 자동화된 병해 감지에 초점을 맞췄다면, 본 논문은 비닐하우스라는 한정적인 환경에서 자동화된 병해 검출을 위한 연구를 다룬다. 더 나아가, 본 연구는 객체 검출 모델을 통한 클라우드 시스템을 활용하여 보다 범용적으로 활용 가능한 시스템을 제안한다.
2. 관련 연구
빅데이터, 로봇, 인공지능, IoT 등의 4차 산업혁명과 관련한 기술들이 다양하게 연구되고 있다[1]-[2]. 특히 인공지능을 활용한 병해 감지에 관한 연구는 본격적으로 농업 분야에 활용된 이후부터 현재까지도 전 세계적으로 활발하게 이루어지고 있다. 2017년 독일 회사 피트(PEAT) 사에서 농부들이 직접 촬영한 병해 이미지에서 병해를 감지하고 분류하는 애플리케이션인 플랜 틱스[3]를 개발하였다. 이 기술은 이미지를 인식하고 분석하며, 농부가 병해가 있는 작물의 이미지를 촬영하여 새롭게 등록하게 되면 AI는 이를 통해서 농작물에 대한 병해를 학습하는 특징이 있다. 이창준 연구팀은 EfficientNet 모델을 활용하여 딸기의 초기 병해를 분석하고, 농민의 애플리케이션으로 병해 여부를 전송 및 전문가의 피드백을 받을 수 있는 기술을 개발하였다[4]. 기존 연구와 달리 본 연구에서는 시설재배 작물 중 딸기가 아닌 고추 및 고춧잎에 대해서 검출하도록 하였고, 다양한 컴퓨터 비전 작업에 사용되는 EfficientNet가 아닌 객체 검출 기술을 활용한다는 것이다. M. Agarwal et. al.은 토마토 잎의 질병을 감지하기 위해 CNN 기반의 연구인 ToLeD를 소개하였다[5]. 해당 연구는 사전 훈련된 모델보다 높은 성능을 보여준다. V. Gonzalez-Huitron et. al.은 토마토 잎의 질병 감지를 위해 CNN과 전이 학습을 이용하여 판단하고, 이를 Raspberry Pi에서 사용하기 쉬운 GUI를 통해 사용 가능한 시스템을 제안하였다[6]. 하지만, 본 연구와 비교하였을 때 클라우드를 사용하지 않는 것과 모니터링 측면에서의 효율이 차이가 있다. S. Ashwinkumar et. al.은 MobileNet을 기반으로 식물의 질병을 감지할 수 있는 최적의 모델인 OMNCNN을 제안하였다[7]. 이 연구는 양방향 필터링, EPO 알고리즘, ELM 기반 분류기를 통해 높은 성능을 달성하였다. 따라서, 질병 감지를 위한 모델의 성능의 향상을 위한 연구로 객체 검출을 활용한 병해 감지와 클라우드 환경의 안정성에 초점을 둔 본 연구와는 초점의 차이가 있다. Z. Xue et. al.은 객체 검출 방식으로 차 나무의 잎병과 해충을 검출할 수 있는 YOLO-Tea라는 모델을 제안하였다[8]. 이 연구는 제안하는 방법과 객체 검출을 기반으로 한다는 공통점이 있다. 정민수 연구팀은 라즈베리 파이에 Pan-Tilt HAT을 장착한 하드웨어에 CNN과 RNN 모델을 이용하여 작물의 병해를 감지하는 시스템을 제안하였다[9]. 제안하는 방법과의 차이점은 클라이언트와 서버를 각각 구축하였기 때문에 클라우드를 사용하지 않아도 된다는 특징이 있다.
3. 객체 검출 기반의 클라우드 시스템
본 논문에서 제안하는 시스템은 인공지능, 클라우드, 데이터베이스를 결합한 병해 감지 기술이며 비닐하우스 내에서 유용한 서비스를 제공할 수 있다. 비닐하우스에 존재하는 여러 작물들 중 고추 열매와 잎에 대하여 진행한다. 먼저, 영상을 촬영하여 데이터베이스에 저장하면 인덱스 변화를 통해 AWS에서는 병해 검출 모델에 대한 추론을 진행하고 그 결과로 JSON파일을 생성한다. 이 파일을 파싱하여 데이터베이스에 병해 검출에 대한 결과와 작물에 대한 정보를 저장하여 관리자가 효율적인 모니터링을 할 수 있다.
3.1 객체 검출 기반 병해 감지 모델
본 논문에서는 병해를 감지하기 위해서 객체 검출 기술을 이용한다. 딥러닝 기반의 객체 검출 모델 중 빠른 속도와 높은 정확도로 주목받는 Yolo-v4[10] 모델을 사용해 작물의 병해를 검출하도록 한다.
Yolo-v4[10]는 객체를 찾아내는 과정에서 영상을 Cell로 분할하고 객체의 클래스와 바운딩 박스를 예측하는 SSD 방식을 사용하여 검출하는 기술이다. 이러한 객체 검출 방식을 통해 비닐하우스 내의 작물의 병해를 진단할 수 있다. 또한, 작물과 같이 성장하고 병해를 입는 과정에 대해서 지속적으로 감지할 수 있다.
객체 검출을 기반으로 여러 클래스의 객체를 검출할 수 있기 때문에 다양한 병해와 질병에 대하여 동시에 검출할 수 있다. 또한, 비닐하우스 내에서 실시간으로 데이터 수집이 가능하다.
본 논문에서는 그림 2와 같이 5개의 클래스로 지정한다. 작물의 병해를 검출하기 위하여 정상으로 자라고 있는 고추에 대하여 빨간색 고추(0), 초록색 고추(1)에 대하여 라벨을 지정한다. 그리고 병해는 3개의 클래스로 노란색으로 시든 경우(2), 갈색으로 말라 비틀어진 경우(3), 흰가루 병(4)으로 지정한다. 따라서 모델은 정상으로 자라고 있는 고추에 대한 위치를 찾을 수 있고 동시에 병해가 나타난 위치와 종류를 알 수 있다. 영상 데이터를 통해 최소 1개 이상의 2~4의 클래스의 객체가 검출된다면, 병해가 있는 영상으로 분류한다. 입력된 영상에 대하여 JSON 파일을 생성한다. JSON 파일의 objects에는 표 1과 같이 class_id, name, relative_coordinates, confidence의 4가지 정보에 대한 값을 저장한다. 이 중 본 논문에서는 class_id만을 이용해 병해를 판단할 수 있다. JSON 파일의 objects에서 class_id를 하나씩 읽으면서 2~4의 값이 하나라도 존재한다면 병해가 있다고 판단하며 그렇지 않다면 정상으로 판단한다.
표 1. JSON 파일의 Objects에 대한 설명
Table 1. Description of Objects in the JSON file
그림 1. 제안하는 시스템의 전반적인 흐름도
Fig. 1. Overall flowchart of the proposed system
그림 2. 병해 검출 모델의 예제 및 병해 클래스
Fig. 2. Examples and class of disease detection model
3.2 데이터베이스 연동
비닐하우스에서 촬영한 영상을 저장하고 병해 검출 결과를 확인하기 위해 MongoDB를 사용한다. MongoDB는 NoSQL 데이터베이스로, Python에서 pymongo 모듈을 이용하여 사용자가 접속하기 위한 User를 생성하고 활용할 수 있다. 또한, 데이터베이스에 접속하는 User의 데이터베이스 및 네트워크 접근 권한을 설정하여 사용할 수 있다.
데이터를 저장할 Collection으로는 dataset, result, result2를 생성한다. dataset Collection에는 사용자가 영상을 서버로 전송했을 때 파일명과 데이터를 Binary 정보로 저장하도록 하는 목적이 있다. 영상을 데이터베이스에 삽입하기 위해 Binary 형태로 변환한다. 그리고 MongoDB에 index와 파일명, 그리고 이진 데이터 형식을 dictionary 형태로 저장하여 데이터베이스에 삽입할 수 있다. result Collection에는 병해충의 유무를 저장하도록 하고, result2 Collection에서는 검출된 객체의 좌표와 Confidence Score를 저장하도록 한다. 표 2는 데이터베이스에서 도큐먼트를 설계한 내용을 나타낸다. 이를 바탕으로 그림 3은 MongoDB에서 생성한 Collection을 나타낸다. JSON 파일을 읽고 class_id가 2, 3, 4인 경우에는 병해충이 있다는 뜻이므로 이를 이용하여 데이터베이스에 해당 영상에 대한 병해충 판단 결과를 저장한다. 0, 1이 있는 경우에는 result2 Collection에 인식 결과를 저장하도록 한다. 그리고 MongoDB Atlas에 설치하여 원격으로 접근이 가능하도록 구축한다.
표 2. 데이터베이스 도큐먼트 설계 내용
Table 2. Database Document Design Contents
그림 3. MongoDB에 생성한 검출 Collection
Fig. 3. Detection collection created in MongoDB
3.3 클라우드 시스템 및 서비스 연동
본 논문에서는 클라우드 컴퓨팅 서비스를 구축하기 위해 AWS의 Elastic Compute Cloud(EC2)를 통해 가상 환경을 생성 및 관리하여 서비스를 제공한다. 이는 스토리지 옵션을 활용하고 모니터링, 로깅 및 보안 관리에 대한 기능을 포함한다. 병해 감지 모델이 동작 가능한 환경을 구축하고 컴퓨팅 환경에서 필요한 서버 구축, 보안 강화, 네트워크 설정의 작업들을 수행한다.
먼저, 서버의 보안성을 강화하기 위한 계정 MFA를 설정 후 pem 형식의 유일 키를 사용하여 외부 접속을 허용한다. 그리고 gp2/30GiB 범용 SSD 볼륨을 사용하여 고성능의 스토리지를 구성한다. 또한, 클라우드 인스턴스로 vCPU 48개, 192GiB를 지원하는 g4dn. 12xlarge을 사용한다. 효율적인 서버 운영을 위하여 AWS의 온디맨드 인스턴스 정책을 이용하여 컴퓨팅 용량을 유연하게 조절하고 가용성을 향상되도록 한다.
AWS 서버와 클라이언트 간의 통합 기능을 구현하기 위해 AWS와 MongoDB 연동을 위한 필요한 모듈을 설치하고, Flask를 이용하여 서버를 구축한다. 클라이언트는 카메라를 사용하여 비닐하우스 내 작물들의 이미지를 촬영하고, 이를 DB 서버에 저장한다. 서버는 DB에서 이미지를 추론하는 Yolo-v4 모델을 통해 병해를 감지하고 결과를 DB에 저장한다.
4. 실험 및 결과
4.1 데이터 세트 구축
본 논문에서 사용한 비닐하우스 작물 데이터는 하나의 비닐하우스에서 실제로 촬영한 데이터 257장을 통해 구축한다. 비닐하우스에서 실제로 촬영한 데이터 특성상 작물과 잎의 크기가 상대적으로 작고 가려져 있는 부분이 존재하는데, 눈에 보이는 영역에 대해서 모두 어노테이션을 진행한다. 그 후에 좌우 반전, 블러, 노이즈 등의 여러 가지 데이터 증강을 진행하여 학습 데이터를 확보한다. 직접 수집한 비닐하우스 데이터에는 흰가루병에 대한 데이터가 존재하지 않아, Ai hub의 “식물 병 유발 통합 데이터”에서 고추 데이터를 추가로 활용하여 최종 학습 및 실험 데이터를 구축한다.
4.2 실험 환경 및 학습
모델 학습은 Ubuntu 18.04 LTS의 운영체제 환경에서 Geforce RTX 3090 2대를 통해 학습을 진행한다. 비닐하우스 작물에 대한 학습 데이터가 충분하지 않기 때문에 오버피팅에 대한 위험을 최소화시킬 수 있는 방안을 모색하고 가장 적절한 Iteration을 탐색을 진행한다. 학습 과정에서는 학습 데이터로 인한 평가로 mAP가 높은 상황에서 실험 데이터를 이용해 평가하여 가장 결과에 대한 신뢰성이 높은 4,000 Iteration에 대한 가중치를 사용한다.
학습된 모델의 가중치는 클라우드 서버인 AWS로 이동시켜 저장한다. 클라우드 서버인 AWS에서는 Ubuntu 22.04의 운영체제를 사용한다. MongoDB를 사용하기 위해서 해당 DB가 사용할 저장소가 따로 필요하기 때문에, Focal Fosa repository를 사용한다. 구축한 AWS에는 Python 3.7.6, Flask 1.1.2, Wekzeug 1.0.1 버전을 설치하여 운영한다.
4.3 성능 평가 및 결과
병해 검출을 위한 모델에서 비닐하우스에서 실사 촬영한 영상에 대한 결과는 그림 4와 같다. 작물인 고추의 크기는 영상 내에서 매우 작게 위치하지만, 높은 검출 성능을 보인다. 초록색 고추는 잎과 색상이 비슷하여 검출하는 것이 난이도가 높지만 특징에 기반하기 때문에 올바르게 검출하는 것을 볼 수 있다. 다만, 병해로 지정한 클래스에 대해서는 찾지 못하는 경우가 많이 존재한다. 하지만, 본 논문에서는 영상 내에서 병해가 있는지 없는지 검사하는 이진 분류가 목적이기 때문에 성능 평가에는 영향을 미치지 않는다. 병해가 있는 영상과 없는 영상을 섞은 50장의 실험 데이터에서 평가한 결과를 표 3과 같다. 정상인 사진에 대하여 병해충이 있다고 분류하는 FP는 존재하였지만, 병해충이 있는 영상에 대하여 병해충이 없다고 판단하는 FN은 존재하지 않았다. 병해충을 기준으로 Precision은 100.0%, Recall은 88.0%, F1 Score는 93.62%, Accuracy는 94.0%의 분류 성능을 달성하였다.
표 3. 제안하는 객체 검출 모델의 성능 평가
Table 3. Evaluation of the performance of the proposed object detection model
그림 4. 병해 검출 모델의 결과
Fig. 4. Result of Disease Detection Model
병해 검출의 결과에 대하여 AWS에서 MongoDB에 저장하게 된다. 저장하면 Collection에 대한 Index가 변화하게 되는데, 이 변화를 통해 시스템에서는 새로운 영상에 대한 결과를 자동으로 추론한다.
병해 검출 모델에 대한 추론 결과는 데이터베이스에 저장되며 이는 그림 5에 Collection에 대한 Index와 같이 나타난다. 그림 5-(a)는 저장된 영상에 대한 dataset Collection에서 파일의 이름과 Binary로 변환된 영상의 일부를 볼 수 있다. 그림 5-(b)는 병해의 유무에 관한 결과를 저장하는 result Collection이며, 그림 5-(c)는 result2 Collection에서 작물(고추)에 대한 상대좌표와 모델에서 추론한 Confidence Score가 저장된 결과를 볼 수 있다.
그림 5. 데이터베이스에 저장된 결과
Fig. 5. Results saved in the database
5. 결론 및 향후 과제
본 논문에서는 비닐하우스에서 객체 검출 모델을 기반으로 병해를 감지하기 위한 시스템을 소개하였다. 객체 검출 모델을 통해 해당 영상에서 병해가 있는 객체가 존재하는지 확인하는 방식의 이진 분류를 통해 94.0%라는 정확도를 달성하였다. 제안하는 방법은 클라우드 컴퓨팅을 통해 가상 환경으로 구성한 시스템을 제공하고 추론 결과를 데이터베이스에 저장하여 효율적인 모니터링이 가능한 차별적인 연구를 소개하였다. 하지만, 병해를 정확히 판단하기에는 클래스의 개수가 매우 적고 작물 자체에 대한 병해를 판단하는 기능이 존재하지 않는다. 추후에는 다양한 질병에 대한 클래스를 정의하고, 고추의 탄저병과 같은 작물 자체의 병을 검출할 수 있는 기능을 추가할 예정이다.
참고문헌
- D. Shin, S. Hwang, and J. Kim, "Development of System for Drunk Driving Prevention using Big Data in IoT environment", Journal of The Institute of Internet, Broadcasting and Communicaion, Vol. 22, No. 6, pp. 69-74, Dec. 2022. https://doi.org/10.7236/JIIBC.2022.22.6.69
- H. Park, M. Lim, and W. Gal, "Smart Safety Stick for Transportation Vulnerable using IoT Technology", Journal of The Institute of Internet, Broadcasting and Communicaion, Vol. 23, No. 1, pp. 177-182, Feb. 2023. https://doi.org/10.7236/JIIBC .2023.23.1.177
- https://plantix.net/en/
- J. Chang, B. Chun et. al., "Strawberry disease diagnosis service using EfficientNet", Journal of Smart Media, Vol. 11, No. 5, pp.26-37, Nov. 2022. https://doi.org/10.30693/SMJ.2022.11.5.26.
- M. Agarwal, S. Gupta, et. al., "ToLeD: Tomato leaf disease detection using convolution neural network", Procedia Computer Science, Vol. 167, pp. 293-301, 2020. https://doi.org/10.1016/j.procs. 2020.03.225.
- V. Gonzalez-Huitron, H. Rodriguez et. al., "Disease detection in tomato leaves via CNN with lightweight architectures implemented in Raspberry Pi 4", Computers and Electronics in Agriculture, Vol. 181, No. 105951, pp. 1-9, 2021. https://doi.org/10.1016/j.compag.2020.105951.
- S. Ashwinkumar, B. Jegajothi et. al., "Automated plant leaf disease detection and classification using optimal MobileNet based convolutional neural networks. Materials Today", Materialstody Proceedings, Vol. 51, No. 1, pp.480-487, 2022. https://doi.org/10.1016/j.matpr.2021.05.584.
- Z. Xue, H. Lin, et. al., "YOLO-tea: A tea disease detection model improved by YOLOv5", Forests, Vol. 14, No. 2, pp. 415. 2023. https://doi.org/10. 3390/f14020415. https://doi.org/10.3390/f14020415
- M. Jeong, S. Kim et. al., "Crop Disease Diagnosis System based on Pan-Tilt HAT For Smart Farm", Proceedings of KIIT Conference, pp. 309-310, Jun. 2022.
- A. Bochkovskiy, C. Y. Wang, and H. Y. M Liao, "Yolov4: Optimal speed and accuracy of object detection", arXiv preprint arXiv:2004. 10934.