on
모델링 - 케일 엽수 증가 모델 with AIHub
모델링 - 지난 글
목차
AiHub 데이터 구득
AIHub란 지능정보산업 인프라 조성사업으로 추진한 AI 학습용 데이터(6개 분야)와 국내외 기관/기업에서 보유한 AI 학습용 데이터를 공개하는 플랫폼이다. AIHub는 여러 분야에서 구축한 AI 데이터를 일반 사용자에게 제공하며, 간단한 가입만으로 사용이 가능하다.
케일 PBM 모델 구축을 위해 자료를 찾아보던 중 농축수산 이미지 데이터인 지능형 수직농장 통합 데이터(엽채류)
를 발견하였다.
Link: https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=595
해당 데이터는 4종의 엽채류 이미지 및 환경 메타 데이터 10만건을 제공하는 데이터셋이며, 라벨 및 메타 데이터는 json 형식으로 제공한다.
AIHub 데이터 파싱
내가 원하는 데이터는 이미지가 아닌 환경 및 생육 데이터이다. 따라서 json 파일을 파싱하여 해당 데이터가 있는 부분을 추출하여 csv 형태로 저장하였다.
환경데이터의 경우 파싱시 다음과 같다.
환경 데이터
farm_id
: 농장코드
receive_date
: 수집일자
id
: 센서 번호
ti_value
: 내부 온도
hi_value
: 내부 습도
ci_value
: 내부 CO2
ir_value
: 광량
tl_value
: 양액온도
ei_value
: 양액 EC
pl_value
: 양액 PH
fname
: 이미지의 이름
image_id
: 이미지 식별자
생육 데이터의 경우 파싱시 다음과 같다.
생육 데이터
crops_id
: 작물개체코드
measured_date
: 측정일
stem_length
: 초장
leaf_cnt
: 엽수
leaf_width
: 엽폭
leaf_length
: 엽장
fr_weight
: 착 (과중)
petiole_length
: 엽병장
leaf_index
: 엽형지수
spad
: 엽록소 함량
fname
: 이미지의 이름
데이터 전처리
케일 엽수 증가 모델 제작을 위해서 필요한 데이터는 다음과 같다. 케일 엽수 증가 모델 feature
date
: 날짜
DAP
: 정식 후 날짜
fname
: 이미지의 이름
ti_value
: 내부 온도
leaf_cnt
: 엽수
엽수 증가식
배추의 엽수 증가식은 다음과 같다.
참고 문헌: Beta 함수 기반 기온에 따른 양파의 잎 수 증가 예측 (Lee et al.(2022))
r (leafRate)
: 엽수 증가율
Rmax (Rxleaf)
: maximum rate of leaf number accumulation
Tmax (Txleaf)
: critical temperature for leaf number accumulation
Topt (Toleaf)
: optimum temperature at Rxleaf
T (Ta)
: air temperature
배추모델에서 해당 식은 stage.py
에 있으며, 코드는 다음과 같다.
## 엽수증가식 -> 정식초기(earlyRateLN), 중기(midRateLN), 무름증 후(0.0)로 구분해서 계산
## 정식초기는 평균 정식 후 14일간, 입력받아 조정 가능함(daysRoot)
def midRateLN(self, Ta):
# calculation leaf number
if (Ta > 0.0) and (Ta < Txleaf):
leafRate = Rxleaf *((Txleaf-Ta)/(Txleaf-Toleaf))*(Ta/Toleaf)**(Toleaf/(Txleaf-Toleaf))
leafRate = leafRate * conv
else:
leafRate = 0.0
# print(leafRate)
return leafRate
def earlyRateLN(self, Ta):
return self.midRateLN(Ta)*0.05
배추 모델의 경우 파라미터 값은 다음과 같다.
Rmax (Rxleaf)
: 1.838
Tmax (Txleaf)
: 34.7
Topt (Toleaf)
: 20.57
daysRoot
: 정식 후 활착 기간 14
pLeafForm
: 일엽생성속도 장해 계수(0~1) 0.69
케일 엽수 증가 모델
케일의 엽수 증가 모델을 만들기 위해서 위에서 제시한 엽수 증가식을 엑셀에서 구현하였다.
우선 전처리한 AIHub 데이터를 살펴면, DAP에 따른 엽수를 산점도로 추출한 결과는 다음과 같다.
DAP가 증가할 수록 엽수 또한 증가하는 양상의 그래프이다.
GDD가 증가할 수록 엽수 증가율 또한 증가하는 양상이다.
다음으로 3개의 온도 분포 (18°C, 21°C, 24°C)를 각각 그려 양상을 확인해 보았다.
그래프를 그려본 결과 분산이 크며 중간중간 조사되지 않은 부분이 존재하였으나, 크게 문제가 될 것이라 생각하지 않았기 때문에 그대로 진행하였다.
모델 피팅
위에서 본 엽수 증가식 파라미터의 경우 배추모델은 배추에 적합한 값으로 피팅이 되어있기 때문에 케일에 맞는 값을 찾는 과정이 필요하였다. 따라서 엑셀에 엽수 증가식을 옮긴 후 온도에 따른 그래프를 보며 파라미터의 값을 추정하고자 하였다.
다음과 같이 엑셀에 수식을 옮겨 적고 결과 값을 확인하였다. feature는 DAP
, Ta
, midRateLN
, earlyRateLN
, leafRate
, LN
, LN 실측값
을 사용하였다.
엽수 증가식
DAP
: 정식 후 일자
Ta
: 공기중 온도
midRateLN
: 정식후 중기
earlyRateLN
: 정식후 초기
leafRate
: 엽수 증가율
LN
: 엽수 (엽수 증가율 누적 합)
LN 실측값
: AIHub 데이터 DAP 별 조사값 평균
엑셀 수식
midRateLN
: = IF(AND(Ta > 0, Ta<Txleaf), Rxleaf ((Txleaf-Ta)/(Txleaf-Toleaf))(Ta/Toleaf)^(Toleaf/(Txleaf-Toleaf)),0)
earlyRateLN
: = midRateLN * 0.05
leafRate
: = IF(DAP < daysRoot, earlyRateLN, midRateLN * pLeafForm)
수식에 사용된 파라미터는 다음과 같다.
Rmax (Rxleaf)
: 0.4
Tmax (Txleaf)
: 34.7
Topt (Toleaf)
: 24.1
daysRoot
: 4
pLeafForm
: 0.8
위 파라미터로 피팅한 결과는 다음과 같으며, 실측 평균에는 비교적 잘 맞았다.
하지만 18°C의 경우 예측 모델이 초반 케일의 생장 속도를 따라가지 못했다. 따라서 엽수 증가식을 일부 수정하였다.
변경한 수식
midRateLN
: = IF(AND(Ta > 0, Ta<Txleaf), Rxleaf * 모수 / LeafNumber
((Txleaf-Ta)/(Txleaf-Toleaf))(Ta/Toleaf)^(Toleaf/(Txleaf-Toleaf)),0)
모수
: 9
Rmax (Rxleaf)
에 모수 / LeafNumber
를 곱해 주어 초반 생장속도를 증가시키는 곡선 그래프를 만들었다.
결과는 다음과 같다.
기존 엽수 증가식에서 맞지 않았던 초반 엽수를 지나가는 그래프를 도출하였다.
결론
-
AIHub에서
지능형 수직농장 통합 데이터(엽채류)
데이터를 다운받아 이미지 메타 데이터인 환경, 생육 데이터를 추출하였다. -
추출한 데이터를 전처리하여 DAP별 엽 갯수 데이터로 정리하였다.
-
Beta 함수 기반 기온에 따른 양파의 잎 수 증가 예측 (Lee et al.(2022))의 엽수 증가식을 엑셀에서 구현하여 케일에 맞는 파라미터를 추정하여 시각화 하였다.
-
기존 엽수 증가식으로 피팅한 결과 실측 평균에는 비교적 잘 맞았으나, 초반 케일의 생장속도를 따라가지 못했다.
-
기존 엽수 증가식을 일부 수정하여 초반 엽수를 따라가는 그래프를 구현하였다.
-
하지만, 데이터 자체에 대한 신뢰도 부족과 적은 온도 분포로 인하여, 직접 실험을 통해 다양한 온도 조건에서의 반응을 적용할 필요가 있다.
분석 파일: 드라이브