vision_classify · 분류기 모델¶
분류기 화면에서 가르친 모델로 이미지를 분류합니다.
Class:
TeachableMachine
CustomClassifier
TensorFlow 를 쓰지 않습니다. 이미지 모델은 TFLite 런타임(LiteRT / tflite_runtime)으로, 손·얼굴·포즈 모델은 MediaPipe 로 돌립니다.
- class openpibo.vision_classify.TeachableMachine[소스]¶
기반 클래스:
object파이보의 카메라 Teachable Machine 기능을 사용합니다.
이미지 프로젝트의표준 이미지 모델을 사용합니다.Teachable Machine에서 학습한 모델을 적용하여 추론할 수 있습니다.학습한 모델은
Tensorflow Lite형태로 다운로드 해주세요.
example:
from openpibo.vision_classify import TeachableMachine tm = TeachableMachine() # 아래의 모든 예제 이전에 위 코드를 먼저 사용합니다.
- class openpibo.vision_classify.CustomClassifier[소스]¶
기반 클래스:
objectFunctions:
load()predict()draw()파이보의 분류기(classifier) 화면에서 학습한 모델을 사용합니다.
이미지 · 손 · 얼굴 · 포즈 네 가지로 가르칠 수 있습니다.
분류기 화면에서 저장하면
/home/pi/mymodel/<모델 이름>/폴더가 생깁니다. 그 폴더 이름(또는 경로)을load에 넘기면 됩니다.예전 분류기의 keras 모델(
model.keras)은 더 이상 쓸 수 없습니다. 다시 학습해 저장하세요.
example:
from openpibo.vision_classify import CustomClassifier cf = CustomClassifier() # 아래의 모든 예제 이전에 위 코드를 먼저 사용합니다.
- load(model_path)[소스]¶
분류기 화면에서 저장한 모델을 불러옵니다. 종류 이름은 모델 폴더 안에 들어 있습니다.
example:
cf.load('/home/pi/mymodel/과일') cf.load('과일') # /home/pi/mymodel/과일 과 같습니다
- 매개변수:
model_path (str) – 모델 폴더 (
/home/pi/mymodel/<모델 이름>) 또는 모델 이름
- predict(img, threshold=0.0, draw=False)[소스]¶
불러온 모델로 분류합니다.
example:
cm = Camera() img = cm.read() name, probs = cf.predict(img) print(name) # 사과 print(dict(zip(cf.classes, probs))) # {'사과': 0.97, '바나나': 0.03}
- 매개변수:
img (numpy.ndarray) – 이미지 객체 (카메라 이미지, BGR)
threshold (float) – 가장 높은 확률이 이 값보다 낮으면 이름 대신
None을 돌려줍니다 (0~1)draw (bool) –
True면 분류하면서img에 바로 그립니다(draw()와 같음). 손·포즈는 점과 뼈대, 얼굴은 점, 그리고 모든 모델은 종류 이름과 확률
- 반환:
(종류 이름, 종류별 확률)손·얼굴·포즈 모델은 화면에 손·얼굴·몸이 안 보이면
(None, None)을 돌려줍니다.
- draw(img, label=True)[소스]¶
바로 전
predict()가 본 것을 이미지에 그립니다.img를 바로 고치고 그대로 돌려줍니다.손 — 손마다 점 21개와 뼈대 · 포즈 — 점 33개와 뼈대 · 얼굴 — 얼굴 점
label=True면 종류 이름과 확률도 씁니다(이미지 모델은 이것만 그립니다)손·얼굴·몸이 안 보였으면 아무것도 그리지 않습니다
example:
img = cm.read() name, probs = cf.predict(img) cf.draw(img) cm.imwrite('/home/pi/result.jpg', img) name, probs = cf.predict(img, draw=True) # 분류하면서 바로 그리기
- 매개변수:
img (numpy.ndarray) –
predict()에 넣었던 이미지(크기가 같아야 점이 제자리에 찍힌다)label (bool) – 종류 이름·확률을 쓸지
- 반환:
img