제가 지금 하고 있는 과제는 실내 수직 농장의 작물별 재배 레시피 고도화를 위한 농장 환경 미러링 및 평가 시스템과 자동 제어 플랫폼 개발입니다. 실내 농장에서 환경에 따른 식물의 성장 정도와 건강 상태를 파악할 수 있도록 하는 것이 2차 년도 과제의 큰 주제였습니다. 식물의 성장 상태 파악을 위해 1차 년도에는 semantic segmentation을 이용하여 식물이 있는 영역을 구할 수 있도록 하였고, 2차 년도에는 실제 모니터링 환경에서 생길 수 있는 여러 상황에 대응하기 위해 instance segmentation을 이용하여 모니터링 하고자 하는 중심 식물과, 모니터링 대상이 아닌 주변 식물을 구분하여 성장 상태를 파악할 수 있도록 하고자 하였습니다. 또한 식물의 건강 상태를 파악하기 위해 저는 segmentation을 이용한 실험을 진행하고 있습니다.
저는 이번 리뷰에서 지금까지 프로젝트의 진행 과정과 추가로 진행해야 할 사항, 프로젝트를 하며 느꼈던 점에 대해 리뷰해보려 합니다.
진행 과정 및 추가 사항
식물의 성장 상태를 파악하기 위해 1차 년도에는 개체를 구분하지 않고, 픽셀 단위로 class를 정하는 semantic segmentation을 이용하였습니다. 하지만 2차 년도에는 식물을 모니터링 하는 과정에서 발생할 수 있는 상황에서 강인성을 확보할 수 있도록 하는 것으로 방향을 잡았습니다. 우선 식물의 모니터링 과정에서 발생할 수 있는 상황으로 카메라 위치가 변하는 것과 식물의 성장을 위한 조명 변화, 주변 식물이 모니터링 영상에 같이 촬영되는 상황으로 구분하여 보았고, 각각의 상황에 대응하기 위해 rotation과 photometric distortion을 augmentation에 이용하기로 하였고, 주변 식물을 구분하기 위해서는 instance segmentation 방식을 도입하기로 하였습니다. augmentation에 대한 성능을 확이해보았고, mask rcnn을 이용하여 instance segmentation을 수행하였습니다.
식물의 성장 상태 파악을 위해 저는 segmentation을 이용하여 접근하기로 하였습니다. 하지만 학습과 평가에 사용할 데이터가 부족하였고, 데이터가 부족한 상황에서는 어떤 방식으로 학습을 하고 평가를 해야 타당할 지 논의를 많이 하였고, 생성한 pseudo data를 이용하여 학습을 하고, 정량적 평가를 진행한 후, 실제 데이터에서 정성적&정량적 평가를 진행하기로 하였습니다.
instance segmentation과 semantic segmentation을 이용하여 학습과 평가를 진행해 보았으나 tipburn 부분이 너무 작아 학습이 제대로 이뤄지지 않고 있다 판단을 하게 되었습니다. 그래서 tipburn이 발생한 경우의 식물에 대해 tipburn 부분을 확대하여 촬영한 데이터 셋을 이용한 instance segmentation에서 어느정도 tipburn의 위치를 찾아낸 것에서 가능성을 보고 이미지를 패치 단위로 잘라 학습해보기로 하였습니다.
느낀점
이번 프로젝트를 진행하며 가장 크게 느낀 것은 문제의 정의와 계획 수립의 중요성입니다. 애매한 문제 정의는 같은 실험을 여러 번 진행하게 만들어 비효율적으로 시간을 소비하게 된다는 것을 느꼈습니다. 확실하게 어떤 것을 해결하기 위해 어떤 주장을 가지고 어떤 실험을 할 지 정리하지 않으면 실험과 주장이 엉킨다는 것을 다시 한번 느끼게 되었습니다.
그리고 코드를 정리하고, 이후에도 알아보기 편하도록 주석을 잘 작성하는 것의 중요성을 느끼게 되었습니다. 실험을 여러번 진행하다보니 변경해주어야 할 것과 변경한 것들이 헷갈리게 되었습니다. 그래서 다시 확인해보느라 시간이 더 걸리고 코드를 돌리다 뒤늦게 깨달아 다시 실험을 진행한 적도 많았습니다. 그래서 이러한 반복을 줄이기 위해서는 잠시 시간이 더 들더라도, 주석을 잘 달고, 코드를 잘 정리해야겠다고 다짐했습니다. 그리고 변수명이나 파일의 이름도 구분이 잘 되도록 적어야 한다는 것을 느꼈습니다.
마지막으로 소통의 중요성을 체감할 수 있었습니다. 내가 이해한 바가 상대방이 하고자 한 말인 지 고려하지 않고 실험을 진행하여 하지 않아도 될 일을 한 경험이 여러 번 있었습니다.
정리하고 보니 여러 이유로 시간을 비효율적으로 사용하게 되었던 것 같습니다. 물론 실험을 하는 데 있어 시행착오가 있을 수도 있지만, 그 외에 부가적으로 시간이 드는 부분을 줄인다면 좀 더 의미 있는 실험들을 할 수 있을 테니 앞으로는 생각과 실행 사이에 정리와 계획을 추가하고 이를 습관이 되도록 해야겠다고 생각하게 되었습니다.