티스토리 뷰

728x90

이번에는 구글의 티처블 머신과 Python을 엮는 방법을 소개하겠습니다!


1. 티쳐블 머신 학습시키기

먼저 티처블 머신의 이미지 학습 페이지로 들어갑니다.

 

요렇게 이미지를 넣고 Train버튼을 누릅니다
빨->주->노 순서로 클릭해주세요!

 

다운로드 받은 파일을 작성할 코드와 같은 위치에 넣어주세요.

2. 파이썬 웹캡 or ipcam연결하기

2-1. 웹캡에 연결

import cv2
import tensorflow.keras
import numpy as np
import requests
from bs4 import BeautifulSoup

## 이미지 전처리
def preprocessing(frame):
    # 사이즈 조정
    size = (224, 224)
    frame_resized = cv2.resize(frame, size, interpolation=cv2.INTER_AREA)
    
    # 이미지 정규화
    frame_normalized = (frame_resized.astype(np.float32) / 127.0) - 1
    
    # 이미지 차원 재조정 - 예측을 위해 reshape 해줍니다.
    frame_reshaped = frame_normalized.reshape((1, 224, 224, 3))
    
    return frame_reshaped

## 학습된 모델 불러오기
model_filename = './converted_keras/keras_model.h5'
model = tensorflow.keras.models.load_model(model_filename)

# 카메라 캡쳐 객체, 0=내장 카메라
capture = cv2.VideoCapture(0)           #ipcam사용시 여기의 0을 바꿔주세요

# 캡쳐 프레임 사이즈 조절
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 160)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 120)


while True:
    
    ret, frame = capture.read()

    frame_fliped = cv2.flip(frame, 1)
    
    if cv2.waitKey(200) > 0: 
        break
    
    preprocessed = preprocessing(frame_fliped)
    
    prediction = model.predict(preprocessed)
    
    if prediction[0,1] < prediction[0,0] and prediction[0,2] < prediction[0,0]:
        cv2.putText(frame_fliped, 'Background', (10, 20), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 0))
        
    elif prediction[0,0] < prediction[0,1] and prediction[0,2] < prediction[0,1]:
        cv2.putText(frame_fliped, "Ball", (10, 20), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 0))
        
    elif prediction[0,0] < prediction[0,2] and prediction[0,1] < prediction[0,2]:
        cv2.putText(frame_fliped, 'Notebook', (10, 20), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 0))
        
    cv2.imshow("VideoFrame", frame_fliped)
capture.release() 

cv2.destroyAllWindows()

2-2. 핸드폰카메라(ipcam)에 연결

2-2-1. 플레이스토어에 ipcam검색해서 저 앱을 다운받습니다.

2-2-2. 실행해서 맨 아래 '서버시작'이라는 버튼을 클릭한 후에 저기 빨간색 네모 위치에 있는 주소를 기억합니다.

 

 

 

 

 

 

아까 위에있던 코드에서 26번줄의 '0'으로 설정되있던 부분을 아까 기억했던 주소(위의 빨간색 네모부분)로 바꿔넣고, 뒤에 /video를 붙여줍니다.

※주의사항: 핸드폰과 컴퓨터 모두 하나의 네트워크에 연결되어 있어야 합니다.(하나의 공유기)

3. 실행

3-1. IPcam으로 실행

 

좌측 상단에 인식된 결과가 표시됩니다!

 

3-2. 웹캠으로 실행

 

 

이미지 전처리 방식은 ai-creator님의 블로그를 참고했습니다!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함