농업 환경 변화에 따른 작물 병해 진단 AI 경진대회

농업 환경 변화에 따른 작물 병해 진단 AI 경진대회 수상자 인터뷰_캐주얼AI드래곤

2022.03.22 15:12 2,079 조회

농업 환경 변화에 따른 작물 병해 진단 AI 경진대회

🎉 Team  캐주얼AI드래곤 님, 수상을 진심으로 축하합니다. 🎉


🏆 용시우 님, 이태홍 님, 한원준 님 (서울대학교, 충남대학교, POSTECH)


🎙세 우승팀 중 한 팀이 되었는데요, 수상을 진심으로 축하드립니다. 수상 소감 부탁드립니다.

용시우

먼저 농업 환경 변화에 따른 작물 병해 진단 AI 경진대회를 진행해주신 데이콘, LG 관련자분들께 깊은 감사의 말씀 드립니다. 고등학교 동창들과 같이 참여하여 많은 것들을 배울 수 있었고, 이렇게 상까지 받게 되니 기분이 매우 좋습니다.

이태홍

마음이 맞는 친구들과 함께 대회에 참가하여 대회 활동 자체도 재미있었습니다. 또한 함께 하는 친구의 실력이 출중한 덕에 수상까지 받는 영광을 얻었습니다. 많은 시간을 할애해야 했지만 그만큼의 결과가 있었기에 뿌듯합니다. 꾸준히 공부하며 데이콘, 캐글 등 다양한 대회에도 참가할 계획입니다.

한원준

이번 대회에서 수상을 하게 되어 영광입니다. 데이콘에서 진행하는 대회에 참가하면서, 실력도 늘었지만 무엇보다 재밋는 경험을 매번 할 수 있어서 영광이라고 생각합니다. 특히, 이번 LG AI Research에서 주최했던 이 대회는 해당 기업을 굉장히 긍정적으로 생각하고 있는 저에게도 좋은 기회였다고 판단합니다.


🎙이번 대회에서 특별하게 활용한 데이터 전처리 방법이 있었을까요?

용시우

해당 대회는 이미지, 시퀀스 데이터를 이용하여 농작물을 분류하는 대회입니다. 

첫째, 이미지의 경우는 크기가 성능에 큰 영향을 주는 요소라고 생각을 했고 512*512, 384*384등 다양한 크기의 이미지로 실험을 진행했습니다. 512*384의 성능이 가장 좋았으나, 대회 평가 항목 중에 작동 속도가 있었기 때문에, 최종적으로 384*384의 이미지를 선택했습니다. 

둘째, 시퀀스 데이터의 경우는 온도, 습도등을 포함한 데이터로, 정규화가 성능 향상에 중요한 역할을 할 것이라고 생각했습니다. 표준 정규화, minmax-scaling등 다양한 방법을 시도하였으나 성능에 큰 영향을 주지 않는 요소였고 그중 minmax-scaling의 성능이 가장 높았기 때문에 최종적으로 minmax-scaling을 시퀀스 데이터의 전처리 방법으로 선택했습니다. 

이태홍

데이터가 매우 불균형하며 train 데이터 셋의 양이 부족했습니다. Stratified k-fold cross validation을 통해 데이터의 불균형과 노이즈를 해결하기 위해 노력했습니다. 실제로 데이터를 일일히(특히 파프리카 흰가루병)확인하며 직접 라벨링을 시도해보았으나 효과가 생각많금 좋지 않았기에 최종 모델 선정에 있어서는 사용하지 않았습니다.

한원준

데이터의 분포가 불균형했기 때문에, 이를 모델에 훈련 시에 잘 반영될 수 있는 방안을 위주로 고민했었습니다. 특히나, 흰가루병 초기, 중기, 말기에 대해서는 직접 앞면과 뒷면에 대한 라벨링도 진행하면서 정확도를 높이기 위해 노력했었습니다.


🎙대회 문제를 풀어가기 위해 활용한 데이터 증강 및 모델링 방법에 대해 말해주세요.

용시우

먼저 이미지 데이터의 경우 flip, color contrast, 등 보편적으로 많이 사용하는 augmentation과 함께 cutmix, mixup등 다양한 방식을 시도했습니다. augmentation을 사용하면 대부분 성능 향상이 있었지만 그중에서 cutmix방식을 사용한 경우가 가장 높은 성능 향상을 얻어낼 수 있었습니다. 또한 단순히 cutmix를 전체 훈련 과정에서 적용하는 것이 아니라 마지막 5~10 epoch에는 이를 적용하지 않음으로써 더 높은 성능 향상을 얻어낼 수 있었습니다. 


시퀀스 데이터의 경우 노이즈가 많이 존재했습니다. 특히 상당수의 데이터가 시간이 중복되어 제시됨으로써 최대길이를 증가시켰습니다. 시퀀스 데이터를 처리하기 위해서 사용한 rnn계열의 경우 시퀀스 데이터가 너무 길어지면 상호간의 정보가 제대로 전달되지 못하는 문제가 존재합니다. 이를 해결하기 위해 시간이 중복되어 데이터가 제시된 경우 시퀀스 데이터의 짝수 번째, 홀수 번째 데이터를 random sampling하여 사용하였습니다. 결과적으로 최대길이를 줄여서 소요되는 메모리를 줄일 수 있었고, 또한 이를 통해 일종의 augmentation의 효과도 얻을 수 있었습니다.


위에서 언급한 augmentation을 바탕으로 이미지 데이터를 처리한 feature1와 시퀀스 데이터를 처리하여 얻은 feature2를 단순 concatenate하여 최종 라벨을 예측하도록 훈련을 진행했습니다. 

이미지 데이터와 시퀀스 데이터는 각각 resnext50_32x4d, gru를 통해 처리하였습니다.

이태홍

병 구분에 있어서, 명도를 바꾸는 어그멘테이션을 활용하고, Flip 각도 조절 및 위상 조정 등을 통해 준수한 변화를 시도하였습니다. Color jitter와 같은 색 관련 augmentation 의 경우에는 오히려 성능이 낮아지는 것으로 확인할 수 있었습니다. 이미지 두개의 일부를 잘라 섞는 방법의 어그멘테이션인Cutmix로 Maximum 25 에폭에 대해 마지막 10개의 에폭은 cutmix 기능을 끈 상태로 진행하는 방식을 택했습니다.. 마치 수능에 있어서도 사설 모의고사를 통해 복잡한 문제로 실력을 올려두고, 실전 문제 풀이에 대한 핏 향상을 위해 기출 문제를 풀듯이 말입니다.

한원준

K-fold Cross Validation을 사용하여, 일반화 성능을 최대화하는 것을 목표로 하였고, 이미지를 변형시키는 Cutmix를 특정 에폭까지 적용하는 등의 시도를 하였으며, 시퀀스 데이터에 대한 중복된 데이터를 홀.짝의 개념으로 랜덤 샘플링하는 방법을 사용하였습니다. 결론적으로, Resnext 모델에 위의 모델링 기법을 적용한 앙상블 모델을 통해 대회에서 좋은 결과를 얻을 수 있었습니다.


🎙위의 기술적인 요소들을 활용하기 위해 참고한 논문, 경험 같은 것들이 있을까요?

용시우

이미지 데이터를 증강하기 위한 기법인 cutmix와 관련된 논문CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features와 노이즈가 많이 있는 데이터를 처리하는 기법인 label smoothing과 관련된 논문 When Does Label Smoothing Help?등을 통해 많은 정보를 얻을 수 있었습니다. 

특히 Kaggle에서 진행한 잎 분류 대회인 Cassava Leaf Disease Classification를 통해 많은 도움을 받았습니다. winner들의 다양한 방법이 공유되어 있었고, 이는 저희 팀의 초기 방향성을 잡는데 많은 영향을 주었습니다.

이태홍

다양한 모델들을 사용하였는데 어떠한 모델이 적합할 지 찾기 위해 모델에 대한 다양한 논문을 참고하였습니다. 특히 최종 모델에 선정된 resnext의 논문의 경우에는 적은 데이터에 있어 좋은 효율을 보인다는 내용이 있었습니다. 또한 kaggle winner의 코드를 참고하며 어떤 모델을 사용했는지, 어떤 방법을 사용했는 지 등을 참고했습니다.

한원준

경험도 중요하지만, 기존에 읽었던 모델에 대한 설명과 모델링 기법들이 이번 문제를 해결하는 데에 도움이 되었다고 생각하며, 자주 팀 회의를 진행하며, 서로에 대한 부족한 이해도를 점검하고 보충하는 시간들을 통해서 더 좋은 결과물을 얻을 수 있었다고 판단합니다.


🎙대회를 진행하면서 직면했던 문제점과 이를 해결하기 위해 어떠한 방법을 활용하셨나요?

용시우

해당대회에서 어려운 점은 크게 두가지였습니다. 


첫째, 데이터에 노이즈가 많았습니다. 해당 대회의 라벨중 파프리카 흰가루병 초기, 중기, 말기는 주관적인 기준으로 설정된 라벨이었기 때문에 해당 데이터들에게는 많은 노이즈가 있을 것이라고 생각했습니다. 데이터에 노이즈가 많은 경우 validation의 신뢰도가 떨어지는 문제가 존재합니다. 이를 해결하기 위해 k-fold cross validation방법을 사용하여 validation 의 신뢰도를 높였고, 실제로 이로 인해 가장 큰 성능 향상을 얻을 수 있었습니다.

이외에도 노이즈 데이터 문제를 해결하기 위해, 해당 데이터를 다시 라벨링 하거나, 또는 더 세분화하여 라벨링하거나, label smoothing loss function을 사용하는 등의 시도를 해보았으나 이들로부터 큰 성능 향상은 얻지 못했습니다. 


또한 해당 대회의 평가 항목에는 작동 시간이 존재합니다. 즉 k-fold cross validation을 사용할 경우, 작동 시간은 k배 만큼 늘어나기 때문에 이를 해결하기 위해 knowledge distillation을 방식을 시도했습니다. 실제로 이 방법을 통해 5개의 ensemble모델에 근접하는 성능을 1개의 모델에서 얻을 수 있었으나, private 리더보드 상에서 높은 순위를 얻기 위해 최종적으로는 k-fold ensemble방식을 선택했습니다.

이태홍

데이터 라벨링에 오류가 있다고 생각했습니다. 대부분의 작물은 좋은 예측을 보였으나 파프리카 흰가루병에 있어서는 모델이 자꾸 틀리고 힘들어했습니다. 그래서 직접 파프리카 흰가루병을 앞면과 뒷면으로 나누고 초기, 중기, 말기를 다시 라벨링 해보는 등의 방법을 사용했습니다.

한원준

파프리카 흰가루병에 대한 라벨지와 사진의 정보에 대해서 의구심이 든 적도 있었는데요, 라벨링 자체를 인간이 진행하고, 특히나 초기 중기 말기를 인간이 구분하여 정의내린다는 점에서 오차가 필연적으로 발생할 수 밖에 없다고 생각했습니다. 그리고, 그 오차가 더 잘 나타난 부분이 파프리카 흰가루병 진단에서 더 잘 부각되었다고 생각하였습니다.

이를 해결하기 위해 직접 라벨 앞, 뒤로 세분화시키고, 따로 해당 질병만을 추정할 수 있는 모델을 디벨롭하기도 하였습니다.