Project

157. [Streamlit] [AI] :Teachable Machine을 활용한 파충류 분류 AI(2)

천재단미 2025. 2. 24. 09:05
728x90
반응형

 

 

 

 

 

 

 

Teachable Machine + Streamlit을 활용한 실전 프로젝트 개선 및 확장

🎯 프로젝트 발전 과정과 추가 기능

이 프로젝트는 이미지 분석을 통한 파충류 종 판별 및 특수동물 병원 검색, 유튜브 영상 추천 기능을 제공합니다.

하지만 1편에서 다룬 기본 기능을 실제 프로젝트에서 적용하다 보니 한계점과 개선해야 할 사항이 발견되었습니다.

따라서 2편에서는 다음과 같은 기능을 추가 및 개선하였습니다.

 


🛠 1. 실시간 바코드 스캔 기능 추가

🏷 배경 및 필요성

  • 애완동물 사료, 사육 용품 등을 구매할 때 바코드를 스캔하여 제품 정보를 빠르게 확인할 수 있도록 기능을 추가.
  • 제품의 유통기한, 성분 정보, 저장 방법(냉장/냉동 여부) 등을 한눈에 파악 가능.
  • 공공 데이터 API를 활용하여 실시간으로 제품 데이터를 불러오는 방식.

📌 바코드 검색 기능 코드 예제

import streamlit as st
from barcode_scanner import scan_barcode
from api_connector import get_product_info, is_refrigerated_or_frozen

def show_barcode_scanner():
    st.title("🏷️ 바코드 제품 검색")

    barcode = scan_barcode()

    if barcode:
        st.success(f"✅ 바코드 인식: {barcode}")
        product_info = get_product_info(barcode)

        if product_info:
            st.write("📦 제품 정보:")
            st.json(product_info)

            if is_refrigerated_or_frozen(product_info):
                st.warning("🚨 냉장/냉동 보관이 필요한 제품입니다.")
            else:
                st.success("✅ 상온 보관 가능 제품입니다.")
        else:
            st.error("❌ 해당 바코드에 대한 제품 정보를 찾을 수 없습니다.")

if __name__ == "__main__":
    show_barcode_scanner()

개선 사항

  • 기존 AI 기반 이미지 분석 기능과 함께 바코드 검색 기능을 추가하여 사용자 편의성 향상
  • 파충류 관련 사료 및 영양제 정보 제공
  • 냉장/냉동 제품인지 여부를 자동 판단하여 경고 메시지 출력

📊 2. 사용자 데이터 기반 AI 모델 개선

📌 기존 모델의 한계

  1. 초기 학습 데이터 부족 → 일부 종의 분류 정확도가 낮았음.
  2. 사용자 입력 데이터 반영 불가 → 사용자 피드백을 학습에 활용할 방법 필요.
  3. 특정 종 간 오인식 발생 → 유사한 패턴을 가진 종들이 혼동됨.

 

🔍 해결 방법

  • 사용자가 직접 학습 데이터를 추가할 수 있는 기능 구현
  • 기존 AI 모델을 Fine-Tuning하여 점진적으로 개선
  • 사용자 피드백을 수집하여 잘못된 예측을 보완

📌 사용자 피드백 기능 코드 예제

import streamlit as st
import pandas as pd

feedback_data = []

def collect_feedback(species, correct_species):
    feedback_data.append({"AI 예측": species, "사용자 수정": correct_species})
    st.success("✅ 피드백이 저장되었습니다. 향후 모델 개선에 반영됩니다.")

def show_feedback():
    st.title("📋 사용자 피드백 수집")

    if "analysis_complete" in st.session_state and st.session_state.analysis_complete:
        species = st.session_state.species
        correct_species = st.text_input(f"AI 예측 결과: {species} → 수정할 종 입력:")

        if st.button("📥 피드백 제출"):
            collect_feedback(species, correct_species)

    if feedback_data:
        st.write("📊 현재까지 수집된 피드백 데이터:")
        st.dataframe(pd.DataFrame(feedback_data))

if __name__ == "__main__":
    show_feedback()

개선 사항

  • 사용자가 AI 모델의 예측을 검토하고 직접 수정할 수 있도록 UI 추가
  • 수집된 피드백을 기반으로 추가 학습을 수행하여 모델 개선 가능
  • Fine-Tuning을 활용하여 점진적으로 정확도를 향상시킴

🎥 3. 유튜브 검색 기능 강화

📌 기존 한계

  • 사용자가 검색 키워드를 직접 입력해야 했음
  • AI가 추천해주는 콘텐츠의 정확성이 부족했음
  • 유튜브 API 사용 시 검색 범위를 더 세밀하게 설정할 필요가 있었음

🔍 개선 방법

  • AI가 자동으로 종과 관련된 키워드를 생성하여 유튜브 검색 수행
  • 유튜브 영상의 조회수, 좋아요 수, 최신 업로드 순으로 필터링하여 유용한 영상만 추천
  • 사용자가 영상을 직접 평가하여 좋아요/싫어요 버튼 추가

📌 유튜브 검색 개선 코드 예제

import streamlit as st
from youtube_page import search_youtube_video

def show_youtube_page():
    st.title("🎥 파충류 관련 유튜브 영상 추천")

    if "analysis_complete" in st.session_state and st.session_state.analysis_complete:
        species = st.session_state.species
        st.info(f"현재 검색 중인 종: {species} 관련 유튜브 영상")

        videos = search_youtube_video(f"{species} 키우기", sort_by="viewCount")
        if videos:
            for video in videos:
                st.write(f"🎬 [{video['snippet']['title']}]")
                st.write(f"🔗 [유튜브에서 보기](<https://www.youtube.com/watch?v={video['id']['videoId']}>)")

                # 좋아요 버튼 추가
                if st.button(f"👍 좋아요 {video['id']['videoId']}"):
                    st.success("✔ 좋아요가 반영되었습니다.")

                st.write("---")
        else:
            st.error("❌ 관련 유튜브 영상을 찾을 수 없습니다.")

if __name__ == "__main__":
    show_youtube_page()

개선 사항

  • AI가 자동으로 최적의 키워드를 생성하여 검색.
  • 유튜브 영상의 인기도(조회수, 좋아요 수)를 기준으로 정렬하여 신뢰할 수 있는 콘텐츠 추천.
  • 사용자가 직접 좋아요/싫어요 버튼을 클릭하여 피드백 제공.

🚀 최종 결론

  • *"[Streamlit] [AI] : Teachable Machine을 활용한 파충류 분류 AI (2)"**는 기존 프로젝트의 한계를 극복하고 실전 적용 가능성을 높이기 위한 개선 작업을 다루었습니다.

🏆 주요 개선 내용

실시간 바코드 스캔 기능 추가 (공공 데이터 API 활용)

사용자 피드백 수집 기능 추가 (AI 모델의 지속적인 개선 가능)

유튜브 검색 기능 강화 (AI 자동 추천 및 사용자 피드백 반영)

Fine-Tuning을 통해 AI 모델 성능 향상

📌 향후 계획

  • 커뮤니티 기능 추가 (사용자 경험 공유 및 데이터셋 보완)
  • 음성 인식 기능 추가 (음성으로 병원 검색 및 영상 추천)
  • 환경 보호 캠페인과 협업 (멸종위기종 감지 기능 개발)
728x90
반응형
home top bottom
}