728x90
반응형
🏆 프로젝트 개요: AI가 파충류를 분류한다!
파충류와 양서류는 형태적으로 비슷한 종이 많아 초보 사육자들에게 정확한 구분이 어렵습니다. 이에 따라 Teachable Machine과 Streamlit을 활용하여 사용자가 직접 이미지를 업로드하면 AI가 즉시 파충류의 종을 판별하는 웹 애플리케이션을 개발하였습니다.
본 프로젝트는 이미지 분석을 통해 15종의 파충류를 분류하고, 병원 검색 및 유튜브 영상 검색 기능을 추가하여 실질적인 활용도를 극대화하였습니다.
🎯 프로젝트 목표
- AI 기반 종 분류 기능 제공
- 업로드한 이미지를 분석하여, 파충류 15종 중 어느 종에 속하는지 예측
- 모델이 제공하는 신뢰도(%)를 함께 출력
- 병원 검색 기능
- 사용자가 인식된 파충류를 치료할 수 있는 특수동물 병원 검색 가능
- 유튜브 학습 기능
- 해당 종에 대한 사육법, 건강 관리법 등을 유튜브에서 자동 검색
- 영상 클릭 시 유튜브로 연결
🛠 기술 스택
기술/라이브러리 역할
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
반응형
'Project' 카테고리의 다른 글
[CRM] [Project] 클러스터링으로 고객 생애 가치(LTV) 분석하기 (0) | 2025.03.20 |
---|---|
157. [Streamlit] [AI] :Teachable Machine을 활용한 파충류 분류 AI(2) (0) | 2025.02.24 |