Skip to content

dahyun24/plant-assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌱 Multimodal RAG for Plant Assistant (Text + Image + Sensor)

1. Motivation

식물 관리 및 진단에는 텍스트 정보(사용자 설명), 이미지(잎의 상태), 환경 센서 데이터가 동시에 중요합니다. 하지만 기존의 식물 관리 서비스는 단순 질병 판별이나 물주기 알림에 그치며, "왜 내 식물이 시들었는지", "어떤 환경이 최적인지"에 대한 근거 있는 설명을 제공하지 못합니다.

본 프로젝트는 멀티모달 RAG(Retrieval-Augmented Generation) 와 성과 기반 비교 분석(Performance-Based Reasoning) 을 결합하여, 사용자의 식물 상태를 진단하고 근거 기반의 성장 가이드를 제공하는 웹 시스템을 구현하는 것을 목표로 합니다.


2. Related Works

본 연구 설계는 최신 연구들을 참고하여 이루어졌습니다.


3. Our Approach

(1) Embedding 전략

  • 이미지 데이터 → Gemini API로 캡션 생성 후 텍스트 임베딩
  • Combined Vector → [사용자 질문 + 이미지 캡션] 을 하나의 텍스트로 결합하여 임베딩
  • 센서 데이터 → 환경 데이터(온도, 습도, 조도 등)는 별도의 벡터/메타데이터로 저장하여 사후 성과 분석(Reasoning) 에 활용

(2) 저장소 구조

  • Combined Vector Store: 텍스트 + 이미지 요약을 같은 공간에 저장
  • Multi-Vector Store: 문서 단위로 Combined Store 임베딩과 센서 벡터를 연결

(3) Performance-Based Reasoning (성과 기반 추론)

  • 단순히 유사한 사례만 찾아주는 것이 아니라, "성장 결과의 차이" 를 분석

    1. Similar Group (유사 그룹): 검색을 통해 찾은 사용자의 현재 상태와 가장 비슷한 사례들. (사용자의 현재 환경 대변)
    2. High Group (우수 성장): 동일 식물 종 내에서 생육 상태가 'High' 인 사례들. (목표 환경)
    3. Low Group (저조 성장): 동일 식물 종 내에서 생육 상태가 'Low' 인 사례들. (회피 환경)

👉 Reasoning Logic: [Similar Group] 의 센서 평균값이 [High Group] 과 얼마나 차이나는지, 혹은 [Low Group] 과 얼마나 유사한지를 비교 분석하여 구체적인 환경 개선점(예: "현재 습도가 유사 그룹 평균 40%인데, 잘 자란 그룹은 60%입니다")을 도출


4. System Architecture

RAG 구조

image


전체 시스템 구조

image

5. Expected Outcome

  • 근거 기반 설명 (Explainable AI): "물을 주세요"가 아닌, "현재 유사한 식물들(습도 30%)에 비해 잘 자란 식물들(습도 60%)은 습도가 훨씬 높습니다"와 같은 데이터 비교 조언 제공.
  • 멀티모달 통합: 이미지의 시각적 증상과 센서의 환경 수치를 유기적으로 연결.
  • 정교한 진단: 사용자의 상태(Similar)를 High/Low 지표와 대조하여 객관적 위치 파악.

6. Dataset Description

📦 Dataset Name

원예식물 화분류 물주기·수분공급 주기 생육데이터
출처: AI Hub (원예식물(화분류) 물주기(수분공급 주기) 생육 데이터)

🧩 Overview

이 데이터셋은 일반 가정 환경(거실, 베란다 등) 에서 다양한 물주기 조건(건조 / 일반 / 과습) 하에 15종의 원예식물을 대상으로 촬영한 이미지 + 센서 + 메타데이터로 구성되어 있습니다. 스마트 식물재배 및 물주기 최적화 시스템 개발을 위해 구축된 학습용 데이터입니다.

🌿 Composition

구성 요소 설명 형식 개수
이미지 데이터 식물의 잎·줄기·뿌리 사진 .jpg 495,359장
센서 데이터 온도, 습도, CO₂, 일사량, 토양상/하단 환경 등 .json 495,359건
폴리곤 라벨 잎 부위(상엽, 하엽, 좌엽, 우엽) annotation[].plant_polygon 각 이미지별
메타정보 장소, 식물명, 생육단계, 환경(건조/습한흙 등) JSON key-value 포함

🪴 Plant Species (15종)

몬스테라, 보스턴고사리, 홍콩야자, 스파티필럼, 테이블야자, 호접란, 부레옥잠, 선인장, 스투키, 금전수, 벵갈고무나무, 디펜바키아, 관음죽, 오렌지자스민, 올리브나무.

🌡 Sensor Fields Example

각 식물 JSON에는 다음과 같은 환경변수가 포함됩니다:

변수명 설명 단위
AirTemperature 대기 온도 °C
AirHumidity 대기 습도 %
Co2 CO₂ 농도 ppm
Quantum 일사량 μmol/m²/s
SupplyEC, SupplyPH 급수의 전기전도도, pH dS/m, pH
HighSoilTemp/Humi/EC/PH 흙 상단 온도·습도·영양분 °C, %, dS/m, pH
LowSoilTemp/Humi/EC/PH 흙 하단 온도·습도·영양분 °C, %, dS/m, pH

🖼 Example Data (JSON)

{
  "info": {"ResultOfGrowthLevel": "Low", "Place": "베란다(B)"},
  "plant": {"PlantName": "선인장", "PlantClass": "건생식물"},
  "sensor": {"AirTemperature": "31.2", "AirHumidity": "41.9", "Co2": "1500"},
  "watering": {"IrrigationState": "관수중", "AmtIrrigation": "65"}
}

🧠 Usage in This Project

  • 텍스트 필드: 식물명, 생육단계, 환경 → 임베딩
  • 이미지: Gemini API로 캡션 추출 후 텍스트화 → 텍스트 임베딩과 결합
  • 센서: sensor 키의 수치값들 그대로 벡터화
  • 멀티벡터 구조: Combined Vector + Sensor Vector

7. Pipeline

사용자 입력 (이미지 + 텍스트)
        │
        ▼
1️⃣ 이미지 캡션 생성 (Gemini API)
   └─ 이미지에서 식물의 상태를 자연어로 요약
      (예: "잎 끝이 갈색이고 잎이 처져 있음")
        │
        ▼
2️⃣ 쿼리 구성
   ├─ 사용자 텍스트 + 이미지 캡션 결합
   └─  예: "보스턴고사리 잎이 말라가요. (이미지: 잎 끝이 갈색이고 처져 있음)"
        │
        ▼
3️⃣ Milvus 검색
   ├─ Step1: 같은 식물 중 “유사한 환경(문장 유사도)” 상위 K개  
   ├─ Step2: 같은 식물 중 “High 성장” 사례 K개  
   ├─ Step3: 같은 식물 중 “Low/DIE 성장” 사례 K개  
        │
        ▼
4️⃣ 환경 평균 계산
   - 각 그룹의 `sensor_vector` 평균 계산  
   - 출력: `current_avg`, `high_avg`, `low_avg`
        │
        ▼
5️⃣ Reasoning (LLM)
   LLM 입력 구성 요소:
   ① 사용자 입력 텍스트  
   ② 이미지 캡션(Gemini)  
   ③ 세 그룹의 센서 평균표 (`current_avg`, `high_avg`, `low_avg`)
        │
        ▼
6️⃣ LLM 출력
   🌿 “현재 상태 요약 + 더 잘 자란/못 자란 환경 비교 + 개선 조언” 생성

8. 최종 구현 UI

image image image image

About

2025-2 컴퓨터공학과 졸업프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published