티스토리 뷰
728x90
이번에는 구글의 티처블 머신과 Python을 엮는 방법을 소개하겠습니다!
1. 티쳐블 머신 학습시키기
먼저 티처블 머신의 이미지 학습 페이지로 들어갑니다.
다운로드 받은 파일을 작성할 코드와 같은 위치에 넣어주세요.
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님의 블로그를 참고했습니다!
'프로그래밍 > python' 카테고리의 다른 글
[python] notion api로 캘린더 만들기 (0) | 2022.02.06 |
---|---|
[Python] 구글 이메일로 이미지 보내기 (2) | 2020.10.23 |
[Python] 최근 기사 자동화 하기 (2) | 2020.10.23 |
[Python] zoom 자동으로 들어가서 채팅치기 (0) | 2020.09.14 |
[Python]공유기 사용자에게 패킷 보내고 받기 (0) | 2020.09.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- promise반환
- 바닐라 javascript
- 티처블 머신
- 1252
- Anaconda
- 사칙연산
- pygame
- 코드설명
- 도전
- 컨트롤타임
- 1253
- notion api
- Python
- 꿈두레
- 크롤링
- 문제풀이
- 1251
- 주석
- localstorage
- 아나콘다
- 2022.02.05
- JavaScript
- Codeup
- SMTP
- django
- 1254
- 1255
- 코드업
- 바닐라 js
- 타이탄의도구들
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함