Project

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

천재단미 2025. 2. 20. 19:30
728x90
반응형

 

 

 

 

 

🏆 프로젝트 개요: AI가 파충류를 분류한다!

파충류와 양서류는 형태적으로 비슷한 종이 많아 초보 사육자들에게 정확한 구분이 어렵습니다. 이에 따라 Teachable MachineStreamlit을 활용하여 사용자가 직접 이미지를 업로드하면 AI가 즉시 파충류의 종을 판별하는 웹 애플리케이션을 개발하였습니다.

본 프로젝트는 이미지 분석을 통해 15종의 파충류를 분류하고, 병원 검색유튜브 영상 검색 기능을 추가하여 실질적인 활용도를 극대화하였습니다.

 

 


🎯 프로젝트 목표

  1. AI 기반 종 분류 기능 제공
    • 업로드한 이미지를 분석하여, 파충류 15종 중 어느 종에 속하는지 예측
    • 모델이 제공하는 신뢰도(%)를 함께 출력
  2. 병원 검색 기능
    • 사용자가 인식된 파충류를 치료할 수 있는 특수동물 병원 검색 가능
  3. 유튜브 학습 기능
    • 해당 종에 대한 사육법, 건강 관리법 등을 유튜브에서 자동 검색
    • 영상 클릭 시 유튜브로 연결

🛠 기술 스택

기술/라이브러리 역할

Teachable Machine AI 모델 학습 및 분류
Streamlit 웹 애플리케이션 UI
Pandas, NumPy 데이터 처리 및 관리
Matplotlib, Seaborn 데이터 시각화
YouTube API 파충류 관련 영상 검색
병원 검색 API 네이버/구글 병원 데이터 연계

 


🔍 AI 모델 개발 과정

1. 데이터 수집

  • Kaggle의 Reptiles and Amphibians Dataset을 기반으로 이미지 수집
  • 국내 애완 파충류 시장 정보(예: The Breeders)와 결합
  • 15종의 대표적인 파충류를 포함

2. AI 모델 학습

  • Google Teachable Machine을 활용하여 이미지 분류 모델 학습
  • 데이터 증강(Augmentation)을 통해 모델의 일반화 성능 향상
  • 학습 후 모델을 Export하여 Streamlit 앱에서 활용

3. Streamlit 웹 앱 개발

  • 사용자가 이미지를 업로드하면, AI가 자동으로 종을 분류
  • 병원 검색 및 유튜브 영상 검색 기능을 추가하여 사용자 편의성 강화

🖥 프로젝트 파일 구조

🔍 프로젝트 주요 기능

1️⃣ AI 기반 이미지 분석 (Teachable Machine 활용)

  • 사용자가 사진을 업로드하면 AI가 종을 판별하고 확률(%)을 표시
  • Kaggle의 "Reptiles and Amphibians Dataset"을 활용하여 초기 9종 → 15종으로 확장
  • 레오파드 게코, 볼파이톤 등 다양한 모프(morph) 분석 가능
  • 🏆 차별점:
    • 기존 앱(렙다이어리 등)과 달리, 모프 데이터 축적 및 유전자 예측 기능 제공
    • 종 분류 후 바로 병원 검색 & 유튜브 영상 추천 가능

📌 예제 코드 (Teachable Machine 활용)

import tensorflow.keras
from PIL import Image, ImageOps
import numpy as np

# AI 모델 불러오기
model = tensorflow.keras.models.load_model("model/teachable_machine_model.h5")

def classify_image(image_path):
    # 이미지 전처리
    image = Image.open(image_path).convert("RGB")
    image = ImageOps.fit(image, (224, 224), Image.ANTIALIAS)
    image_array = np.asarray(image) / 255.0
    image_array = np.expand_dims(image_array, axis=0)

    # 모델 예측
    prediction = model.predict(image_array)
    class_index = np.argmax(prediction)

    return class_index, prediction[0][class_index]

# 테스트 실행
image_path = "test_image/lizard1.jpg"
result, confidence = classify_image(image_path)
print(f"분류 결과: {result}, 확률: {confidence:.2f}")

설명:

  • 이미지를 224x224 픽셀로 변환하여 AI 모델이 예측하도록 합니다.
  • np.argmax(prediction)을 이용해 가장 높은 확률의 클래스를 선택합니다.
  • 출력된 숫자를 종 이름과 매핑하여 사용자에게 결과 제공!


2️⃣ 특수동물 병원 검색 기능

  • 파충류 전문 병원은 일반 동물병원보다 찾기 어려운 경우가 많습니다.
  • 따라서 네이버/구글 API를 이용해 주변 병원을 검색할 수 있도록 구현했습니다.
  • 🏥 네이버 검색 API 예제 코드
import requests

def search_hospital(query, location):
    client_id = "YOUR_NAVER_CLIENT_ID"
    client_secret = "YOUR_NAVER_SECRET"

    url = f"<https://openapi.naver.com/v1/search/local.json?query={query}&display=5&start=1&sort=random>"

    headers = {
        "X-Naver-Client-Id": client_id,
        "X-Naver-Client-Secret": client_secret
    }

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        return data["items"]
    else:
        return None

# 실행
hospital_list = search_hospital("파충류 병원", "서울")
for hospital in hospital_list:
    print(hospital["title"], hospital["address"])

설명:

  • 네이버 검색 API를 사용하여 사용자의 위치 기반으로 파충류 병원을 검색합니다.
  • 검색어를 "파충류 병원"으로 설정하여 불필요한 일반 병원은 필터링했습니다.
  • 출력된 병원 정보를 지도와 연결하여 바로 이동할 수 있도록 UI 제공!


3️⃣ 유튜브 영상 검색 기능 (파충류 관리 & 질병 예방)

  • AI가 분류한 종과 관련된 유튜브 영상을 자동으로 추천합니다.
  • 예를 들어, 볼파이톤이 판별되면 "볼파이톤 키우는 방법" 영상 자동 검색
  • 📺 유튜브 API 예제 코드
from googleapiclient.discovery import build

def search_youtube_video(query):
    api_key = "YOUR_YOUTUBE_API_KEY"
    youtube = build("youtube", "v3", developerKey=api_key)

    request = youtube.search().list(
        part="snippet",
        maxResults=5,
        q=query,
        type="video"
    )

    response = request.execute()

    return response["items"]

# 실행
videos = search_youtube_video("레오파드 게코 키우기")
for video in videos:
    print(f"영상 제목: {video['snippet']['title']}, URL: <https://www.youtube.com/watch?v={video['id']['videoId']}>")

설명:

  • 유튜브 API를 사용해 사용자가 키우는 파충류와 관련된 영상을 검색합니다.
  • 종 분류 후 자동 검색되어 유저가 즉시 영상을 시청할 수 있도록 함!
  • 학습 & 정보 제공 목적으로 활용할 수 있음.

🚀 프로젝트의 차별점

AI 모델을 이용한 실시간 이미지 분류

파충류 전문 병원 검색 기능 제공

유튜브 영상 검색을 통한 사육 정보 제공

모프(morph) 데이터 축적을 통한 교배 예측 기능 추가 가능

교육 및 연구 자료로 활용 가능 (학교, 박물관, 연구기관)

이 프로젝트는 단순한 애완동물 관리 도구를 넘어 실제 사육자, 브리더, 연구자 모두에게 유용한 데이터 기반 도구로 활용될 수 있습니다.

728x90
반응형
home top bottom
}