yolo 환경세팅
conda create -n yolo_env python=3.12
conda activate yolo_env
pip install ipykernel
python -m ipykernel install --user --name yolo_env
pip install jupyterlab
# 필수 라이브러리 설치
pip install -U ipywidgets
pip install inference-sdk==0.9.0
Roboflow
- 컴퓨터비전 모델을 개발, 훈련 및 배포하는 데 도움을 주는 플랫폼
- 객체탐지, 분류, 세분화 작업에 유용한 도구와 서비스를 제공
- 데이터 준비, 모델 훈련, 성능 평가, 배포 등 컴퓨터 비전 워크플로우의 모든 단계를 지원
주요 특징
- 데이터셋 관리 (데이터셋 업로드,데이터 레이블링, 데이터 증강)
- 다양한 형식의 이미지 데이터를 쉽게 업로드 할 수 있음
- 이미지에 라벨을 추가하거나 수정할 수 있는 인터페이스 제공
- 데이터 증강 기법을 사용하여 훈련 데이터를 늘리고 모델의 일반화 성능 향상
- 모델 훈련 (자동 모델 빌더, 커스텀 모델 훈련, 프리빌트 모델 사용)
- 사용자가 선택한 데이터셋을 기반으로 최적의 모델을 자동으로 설정하고 훈련
- 사용자가 원하는 설정과 파라미터로 모델을 훈련
- 사전 훈련된 모델을 사용하여 빠르게 시작
- 모델 배포 (웹 인터페이스, API, 엣지 디바이스 배포)
- 모델을 웹 애플리케이션으로 배포하여 실시간 추론 수행
- REST API를 통해 모델을 쉽게 통합하고 사용
- Raspberry Pi와 같은 뎃지 디바이스에 모델 배포 가능
- 성능 평가 (평가 도구, 시각화)
- 모델의 성능을 평가하고, 정밀도, 재현율, F1 점수 등 확인
- 모델의 예측결과를 시각화하여 분석
- 협업 기능
- 팀 단위로 협업하여 데이터셋과 모델을 관리
- 여러 프로젝트를 관리하고, 각 프로젝트별로 진행 상황을 추적
- 통합 및 호환성
- COCO, Pascal VOC, YOLO 등 다양한 데이터셋 포맷을 지원
- TensorFlow, PyTorch 등 기존의 AI 프레임워크와 쉽게 통합할 수 있음
실습
- Roboflow 활용
- 회원가입 후 API key 발급
- 데이터 Annotation(Labeling)
- project 탭에서 New project
- 필요한 값 설정 ex) project name, annotation group, licences, visibility, project type 등
- upload file/folder
- 원하는 object 입력
- 출력
- 이미지 bounding 학습 후 예측 모델 만들기
- New project 선택
- 파일/폴더 업로드
- 일정 비율의 이미지 직접 annotation 후 labeling
- dataset으로 설정 후 내보내기
- 데이터 전처리 및 증강
- train set, valid set, test set 비율 설정
- 모델을 가져와서 예측하기
from inference_sdk import InferenceHTTPClient
from pprint import pprint
client = InferenceHTTPClient(
api_url='http://detect.roboflow.com',
api_key='api key'
)
# 예측할 데이터
filename = './images/number2.jpg'
result = client.infer(
filename,
model_id='numbers-doqnw/3' # roboflow에서 제공하는 모델 경로
)
print(result)
- object detection fine-tuning
import cv2
img=cv2.imread(filename)
for pred in result['predictions']:
x, y=pred['x'], pred['y']
width, height = pred['width'], pred['height']
# confidence score : 0~1 사이 값
conf = pred['confidence']
cls = pred['class']
x1, y1 = int(x - width/2), int(y - height/2)
x2, y2 = int(x + width/2), int(y + height/2)
cv2.rectangle(img, (x1, y1), (x2, y2), (0,0,255), 2)
cv2.putText(img, f'{cls} {conf:.4f}', (x1, y1), cv2.FONT_HERSHEY_PLAIN, 1, (0,0,255))
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
inference-sdk 최신버전
환경세팅
pip uninstall inference-sdk == 0.9.0
pip install inference-sdk
이미지 예측 수행
# Name : inference-sdk==0.62.2
from inference_sdk import InferenceHTTPClient
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="apikey"
)
person_img= './images/people2.jpg'
result = client.run_workflow(
workspace_name="myproject1-rgby3",
workflow_id="find-tvs-and-people",
images={
"image": person_img
},
use_cache=True # cache workflow definition for 15 minutes
)
동영상 실시간 수행
import cv2
# 1) 이미지 로드
filename = "./images/people2.jpg"
img = cv2.imread(filename)
# 2) 결과에서 바운딩박스 그리기
# === 바운딩 박스 목록 ===
pred_list = result[0]["predictions"]["predictions"]
print(pred_list)
# === 바운딩 박스 그리기 ===
for pred in pred_list:
x = pred["x"]
y = pred["y"]
w = pred["width"]
h = pred["height"]
conf = pred["confidence"]
cls_id = pred["class_id"]
# 중심좌표 → x1,y1,x2,y2 변환
x1 = int(x - w/2)
y1 = int(y - h/2)
x2 = int(x + w/2)
y2 = int(y + h/2)
# BOX 그리기
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# TEXT 표현하기
cv2.putText(
img,
f"{cls_id} {conf:.2f}",
(x1, y1 - 8),
cv2.FONT_HERSHEY_SIMPLEX,
0.6,
(0, 255, 0),
2
)
# === 결과 저장 ===
cv2.imwrite("./outputs/output_people.jpg", img)
print("✔ output_people.jpg 생성 완료")
# 창으로 보고 싶으면
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

'삼정KPMG Future Academy > 머신러닝&딥러닝' 카테고리의 다른 글
| Mediapipe (0) | 2025.12.08 |
|---|---|
| CNN (0) | 2025.12.05 |
| 다중분류 문제 해결, CNN (-ing) (0) | 2025.12.04 |
| 딥러닝 기초 (Numpy, Tensorflow) (0) | 2025.12.03 |
| 비지도학습 K-Means (0) | 2025.12.02 |