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

알고리즘 | CV | 분류 | 농작물 | Macro f1 score

  • moneyIcon Prize : 총 1,000만원
  • 1,894명 마감

 

이미지 데이터만 사용한 모델 훈련 baseline [public 0.8863]

2022.01.13 18:10 5,406 Views language

안녕하세요.
오랜만에 코드를 공유해봅니다!
csv파일들을 어떻게 활용할지는 아직 고민이 되고, 우선 이미지 데이터만 사용하여 기본 모델을 훈련해 보았습니다.


colab환경에서 진행한 노트북입니다. 총 소요시간은 1시간 내외입니다.
자신의 train.zip 의 경로를 넣어서 압축을 풀고 진행하시면됩니다.
기본적인 훈련 방향에서 추가로 랜덤하게 이미지를 vertical, horizontal flip 하는 데이터 증량 방법을 사용했습니다.
pretrained efficientnet-b0 모델을 사용하였고 지금까지 efficientnet-b0 만 실험해보아서 어떤 구조의 모델이 좋을지는 모르겠네요.
test데이터셋을 추론한 것은 이 노트북에 없습니다.



코드에 대한 주석은 천천히 달아보겠습니다.
도움되셨으면 좋아요! 부탁드립니다. ㅎㅎ
colab에서 오류가 나면 댓글달아주세요.

Code
로그인이 필요합니다
0 / 1000
이여름
2022.01.13 20:44

감사합니다

솔라나
2022.01.13 21:09

감사합니다

Junhyuk
2022.01.13 23:03

감사합니다

hahaha
2022.01.14 09:03

코드 공유 감사합니다.
한 번 따라서 해봐야 겠습니다.

동화책
2022.01.15 18:45

코드 공유 감사합니다🙂

maxpark
2022.01.17 13:48

공유 감사드려요

Surdarla
2022.01.19 10:10

감사합니다!

비정상곰
2022.01.20 03:46

감사해요!!

클로드섀넌
2022.01.21 17:01

이 노트북으로 훈련하면 fold 를 하나만 사용하는것 아닌가요..?

최정명
2022.01.21 17:04

네 맞습니다. 하나만 사용한 것이 맞아요.

클로드섀넌
2022.01.21 18:34

답변 감사합니다! 
k-fold 사용했을 때 로깅 정책이랑 최종모델점수는 어떻게 만드시는지 참고하고 싶었는데 이건 제가 알아서 해보겠습니다!

최정명
2022.01.21 18:37

아 그냥 단순히 한 폴드만 사용한다면 랜덤하게 분리하는 방법을 사용하는 train_test_split 이 함수를 사용해도 될 것 같은데 저는 나중에 앙상블 시도도 해보기 위해 KFold로 만들어 두었습니다. 

제가 코드 설명을 자세히 적지않은 것 같네요.

혹시 로깅정책은 어떤것을 의미하는지 알 수 있을까요?

클로드섀넌
2022.01.21 18:54

wandb 로 validation score 를 로깅하는데 폴드가 바뀔때마다 score 다 다시 0으로 가는 그림이 나와서 다른 분들은 어떻게 하나 궁금했습니다!

최정명
2022.01.21 18:57

아 저는 wandb로 로깅할 때 fold 인자만 바꾸고 각각 run하여 기록해둡니다.
fold 바뀔때 마다 새롭게 초기화 하기 때문에 기록하는 loss나 score 등도 0 으로 초기화됩니다.

클로드섀넌
2022.01.21 19:07

아하!

저는 fold 마다 valid data 가 다르니까 비교를 할 수 없다 생각했는데 그냥 정명님처럼 해야겠습니다!

클로드섀넌
2022.01.22 14:57

이 게시물과는 상관없긴 한데,

annotation 에 병해 위치가 나와있으니 object_detection 모델을 만들어 훈련시킨뒤 backbone을 pretrain 된 모델로 활용하면 뭔가 잘 될 거 같습니다.
다만, 구현이 피곤한데 혹시 정명님은 이 방법에 대해 어떻게 생각하시는지요?

최정명
2022.01.22 17:40

저도 annotations 피처를 이렇게 저렇게 사용해보고 있는데 좋은 결과가 안 나오네요 ㅠㅠ

클로드섀년님이 말씀해 주신 방법도 시도해볼만 하다고 생각합니다. 다만 주어진 데이터 (annotations 포함된 데이터)가 한정되어 있다는게 아쉽네요.

추가로 annotations를 통해 시도해본 것을 공유드리자면 작물 좌표, 병해 좌표를 통해 crop한 것을 훈련시켰을 때 crop안된것을 훈련 시킬 때 보다 성능이 좋진 않더라고요. cv score부터 성능이 좋지 않아 test로 추론도 하지 않았습니다.

만약 위 방법을 test dataset 추론한다해도 모델이  훈련된 데이터 샘플의 작물, 병해 부분만 crop하여 훈련한것이라 test dataset 에서 또한 결과가 좋지 않을거구요. 

클로드섀넌
2022.01.22 17:38

오 이미 이것저것 해보셨군요 ㅠ 그나저나 그런 시도들이 성능에 도움이 안됐는데도 최상위권이시라니... 정말  대단하십니다