데이콘을 제대로 해보는 것은 처음인 것 같다. python을 선호하지 않기도 하고, 공모전에 집중할 시간이 없었던 것 같다. 무튼 생육환경 최적화를 진행해보았다.
생육 환경 최적화 경진대회 - DACON
KIST강릉분원 | Vision | 시계열 | 생육데이터 | NMAE

경진대회 파악하기
우선 경진대회를 파악해보자. 주제는 2가지로 나누어져 있는데, 주요 주제는 하루 뒤의 잎면적 예측 인 것 같다.

평가 기준은 NMAE라는 지수인 것 같다.

이상자료 파악
이상자료 목록은 아래와 같이 생각된다. 또한 다른 참가자분 포스팅을 보니 무게의 측정에는 죽은잎(노란색)은 고려되지 않는다고 한다.

참고한 분은 K-means를 활용하여 청경채 이미지를 추출한 것 같다.
Foreground/background segmentation using imager

청경채 이미지 추출
예전에 민들레 추출에서 색강조와 HSV를 통한 이미지 추출을 해본 적이 있는데 효과가 좋았었던 기억이나서 적용하였다.
# 색 강조
def img_Contrast(img,clipLimit=3.0,tileGridSize=(8,8)):
lab=cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l,a,b=cv2.split(lab)
clahe=cv2.createCLAHE(clipLimit=clipLimit,
tileGridSize=tileGridSize)
cl=clahe.apply(l)
limg=cv2.merge((cl,a,b))
final = cv2.cvtColor(limg,cv2.COLOR_LAB2RGB)
return final
# 특정범위 색 추출
def img_extract(img,lower=(0,0,0), upper=(110,255,200)):
img_hsv=cv2.cvtColor(final, cv2.COLOR_RGB2HSV)
img_mask=cv2.inRange(img_hsv, lower, upper)
img_result= cv2.bitwise_and(img, img, mask=img_mask)
return img_result
# 파일 목록
def file_list(directory):
def find_files(directory):
return([f"{directory}/{i}" \
for i in os.listdir(directory) if re.compile('png$|jpg$').findall(i)])
out=list()
if type(directory)==str:
out=find_files(directory)
elif type(directory)==list:
for folder in range(len(directory)):
[out.append(file) for file in find_files(directory[folder])]
return(
sorted(out))
추출은 아래와 같이 몹시 잘 되는 것으로 보인다.

무게의 추정
우선 무게 추정은 픽셀의 합을 특정 상수를 나누어 주어 계산하였는데, HSV에 Upper 바운더리를 최적으로 찾은 뒤 고민해봐야겠다. 베이스라인 코드에서는 Simple CNN을 제시하여 주었는데 한번 적용해보는 것도 괜찮아 보인다.
[Baseline] Simple CNN
생육 환경 최적화 경진대회

참고
[영상처리] Histogram Noramlize(정규화), Equalization(평탄화), CLAHE (OpenCV-Python)
[영상처리] Histogram Noramlize(정규화), Equalization(평탄화), CLAHE(opencv-python) Normalization(정규화) 정의 영상에서 특정 부분에 몰려 있는 값을 전체 영역으로 골고루 분포하게 하도록 만드는 방법을 N..

데이콘(생육 환경 최적화 경진대회) : Outlier1
데이콘(생육 환경 최적화 경진대회) : 생육 환경 관련 데이터에서 이상치를 찾아보자.
