[학회] 효율적인 작물 재배를 위한 LSTM 기반 작물 잎 중량 예측 모델

📌 프로젝트 개요

☐ 주관 : 2022 동덕여자대학교 정보통계학과 과동아리 OUTLIER 프로젝트
2023 한국정보처리학회 학부생 논문 경진대회 - 빅데이터 분야 (우수상 수상)
프로젝트 명 : 효율적인 작물 재배를 위한 LSTM 기반 작물 잎 중량 예측 모델
프로젝트 기간 : 22년 10월 ~ 23년 1월 / 23년 4월 ~ 23년 5월
☐ 인원 : 3명 (동덕여자대학교 정보통계학과 3명)
☐ 활용 Tool : Python, Notion, 미리캔버스
☐ 프로젝트 개요 : 지구온난화와 농업 활동 감소로 인해 농작물 생산량이 줄어듦에 따라, 시간대별 최적 환경을 파악하여 최적의 생육 환경을 조성에 도모
☐ 본인이 맡은 역할 :
  • 자료 수집 및 전처리 :
    • 선형 보간법, MinMaxScaler를 통한 데이터 전처리
  • 모델 최적화
  • PPT, 논문 총괄 제작
  • 발표
☐ 성과/의의 :
  • 작물 시간대별 최적 생육 환경 예측 완료
  • AI 예측 모델을 통해 효율적인 작물 재배를 기대
 

📑 프로젝트 내용


❓주제 선정 배경

지구온난화, 농가 인구/농가 수/토지 면적 감소 등의 원인으로 농작물 생산량이 감소하고 있고, 농업 분야에서도 인공지능 기술이 사용되고 있는 추세입니다.
이를 바탕으로, 다음 목표를 세웠습니다.
  1. 작물의 수확량을 최고로 끌어올릴 수 있는 시간대별 최적 환경 파악
  1. 작물의 일별 잎 중량을 예측하는 AI 예측 모델 생성

🔗 데이터 수집

토글을 펼치면 활용 데이터 목록을 확인할 수 있습니다.
데이터
시점
출처
데이터 설명 및 목적
train_input
2022.11
KIST-코리아디지탈(주)-주식회사 파모스 연구를 통해 도출된 데이터
총 28개 상추 케이스 존재 (시간 단위)
→ 학습_인풋 데이터
train_target
2022.11
KIST-코리아디지탈(주)-주식회사 파모스 연구를 통해 도출된 데이터
총 28개의 상추 케이스 존재 (시간 단위)
→ 학습_아웃풋 데이터
test_input
2022.11
KIST-코리아디지탈(주)-주식회사 파모스 연구를 통해 도출된 데이터
총 5개 상추 케이스 (일별 단위)
→ 테스트_인풋 데이터
test_input
2022.11
KIST-코리아디지탈(주)-주식회사 파모스 연구를 통해 도출된 데이터
총 5개 상추 케이스 (일별 단위)
→ 테스트_아웃풋 데이터
활용한 모든 데이터는, 프로젝트 진행 당시 기준 최신 데이터로 수집하였습니다.
 

🙋🏻‍♀️ 본인이 맡은 역할


⓵ 선형 보간법, MinMaxScaler를 통한 데이터 전처리

총 4종류의 데이터를 제공받았으나, input과 target의 데이터 구조가 맞지 않아 선형 보간법과 MinMaxScaler를 통해 데이터 단위를 맞춰주었습니다.
선형 보간법
  • 정의 : input(시간 단위) 데이터와 target(일 단위) 데이터의 구조가 맞지 않아, target(일 단위) 데이터를 input(시간 단위) 데이터 형식으로 변경
    • ⭐️ input(시간 단위) 데이터를 target(일 단위) 데이터 형식으로 바꾸지 않은 이유는, 데이터 손실과 시계열의 특성 미반영 문제가 일어나기 때문입니다.
  • 계산 : target(일 단위) 데이터를 input(시간 단위) 데이터 형식에 맞추어, 시간 단위 데이터로 변경
    • data = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/상추/data/scale_train_x.csv', header=0, index_col=0) # MinMaxScaler + 사용할 변수들로만 구성된 데이터 data = data[['DAT', 'obs_time']] data['predicted_weight_g'] = np.nan data['predicted_weight_g'].interpolate(method = 'linear', inplace = True)
MinMaxScaler
  • 정의 : 모든 데이터의 변수가 0 ~ 1 사이의 값을 갖도록 변경
  • 계산 : interpolate 함수를 이용하여, 모든 데이터의 변수 단위를 맞춤
    • data = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/상추/data/train_x.csv', header=0, index_col=0) # 데이터 [train input] 28일치를 합쳐 놓은 데이터 df = data.loc[:, ('DAT', 'obs_time')] scaler = preprocessing.MinMaxScaler(feature_range=(0, 1)) values = scaler.fit_transform(data.loc[:, ('내부온도관측치', '내부습도관측치', 'co2관측치', 'ec관측치', '시간당총광량')]) df2 = pd.DataFrame(values, columns = ['내부온도관측치', '내부습도관측치', 'co2관측치', 'ec관측치', '시간당총광량'])

⓶ 모델 생성 및 최적화

여러 번의 시도 끝에, 작물의 일별 잎 중량을 예측하는 AI 예측 모델을 최적화하여 생성하였습니다.
from keras.callbacks import ModelCheckpoint, EarlyStopping checkpoint = ModelCheckpoint("/content/drive/MyDrive/Colab Notebooks/상추/model.h5", monitor='val_loss', verbose=1, save_best_only=True, mode='min' ) earlystopping = EarlyStopping(monitor='val_loss', patience=15, ) model = Sequential() model.add(LSTM(400, activation='tanh', dropout=0.2, input_shape=(x_train.shape[1], x_train.shape[2]), kernel_regularizer=regularizers.l2(0.01))) model.add(Dense(100)) model.add(Dense(1)) model.compile(loss='mae', optimizer='adam', metrics=['mae']) history = model.fit(x_train, y_train, epochs=400, batch_size=24+28, validation_data=(x_val, y_val), verbose=2, shuffle=False, callbacks=[checkpoint, earlystopping]) model = tf.keras.models.load_model("/content/drive/MyDrive/Colab Notebooks/상추/model.h5") score = model.evaluate(x_val, y_val, verbose=0) print('Test loss:', score[0]) print('Test MAE:', score[1])
 

💡성과/의의


📍결론

상추의 일별 잎 중량을 예측하는 AI 예측 모델을 생성하여 작물의 수확량을 최대로 끌어올릴 수 있는 시간대별 최적 환경을 예측하였습니다.
💡
최종 모델 설정 값
  • 활성화 함수 = tanh
  • drop out = 0.2
  • L2 규제
  • batch size = 24*28
  • 은닉층 = 100
  • loss = mae
  • optimizer = adam

📍프로젝트 의의

작물의 수확량을 최대로 끌어올릴 수 있는 시간대별 최적 환경을 예측한 의의는 다음과 같습니다.
  1. 상추의 일별 잎 중량을 예측하는 AI 모델 생성
    1. 스마트팜의 여러 잎채소들에 모델을 적용할 수 있습니다.
  1. 생육 변수와 환경 변수 둘 다 고려
    1. 잎 중량 예측에서부터 생산량 예측까지 연구가 확장될 수 있습니다.

💬 회고


➕ 보완할 점

  • 짧은 관측 기관, 중복되는 변수들로 인해 예측 오차가 높은 편이라, 기상 데이터와 작물에 관한 연구를 바탕으로 정확한 프로젝트를 실시하면 오차가 줄어들 것이라 예상합니다.
  • 최종 모델을 기반으로 한 예측 모델을 이용해서 생성 모델을 만든 후, 상추의 일별 잎 중량 예측값을 기반으로 하여 상추가 자랄 수 있는 최적의 생육 환경 조성 수치를 예측하면 효율적인 작물 재배로 농작물 생산량을 증가시킬 수 있을 것이라 예상합니다.

🚶🏻‍♀️‍➡️ 성장한 점

  • 데이터 구조가 다른 여러가지 데이터를을 일관되게 정리할 수 있었습니다.
  • 모델 최적화를 위한 다양한 최적화 방법을 적용해보는 시간이 되었습니다.