본문 바로가기
삼정KPMG Future Academy/머신러닝&딥러닝

인공지능 플랫폼을 활용한 비전 객체탐지

by _이유 2025. 12. 9.

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)
    1. project 탭에서 New project
    2. 필요한 값 설정 ex) project name, annotation group, licences, visibility, project type 등
    3. upload file/folder
    4. 원하는 object 입력
    5. 출력
  • 이미지 bounding 학습 후 예측 모델 만들기
    1. New project 선택
    2. 파일/폴더 업로드
    3. 일정 비율의 이미지 직접 annotation 후 labeling
    4. dataset으로 설정 후 내보내기
    5. 데이터 전처리 및 증강
    6. 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