[63일차] ASAC 빅데이터 분석가 4기(DL-10)

2024. 3. 4. 09:48· ASAC 빅데이터 분석가 4기/Deep Learning
목차
  1. ⚙️ yolo-3
  2. 📌 기본 세팅
  3. 📌 이미지 처리
  4. 📌 모델에 이미지 적용
  5. 📌 기준 설정
  6. 📌 객체 영역 구분하기
  7. 📌 이미지에 객체 영역 표시하기

⚙️ yolo-3

📌 기본 세팅

import numpy as np
import pandas as pd
import cv2
import matplotlib.pyplot as plt
import time

names = open("/content/coco.names").read()
names = names.strip().split("\n")

weight_path = "/content/yolov3.weights"
conf_path = "/content/yolov3.cfg"

yolo_model = cv2.dnn.readNetFromDarknet(conf_path, weight_path, )
layers = yolo_model.getLayerNames()
output_layers = [layers[i-1] for i in yolo_model.getUnconnectedOutLayers()]

📌 이미지 처리

# 주의사항
# OpenCV 기반으로 yolo-3을 사용할 경우, 이미지 크기를 32의 배수로 세팅해야 한다.

image = cv2.imread("/content/dog.png")

blob = cv2.dnn.blobFromImage(image, 1/255., (416,416), swapRB = True, crop=False)

📌 모델에 이미지 적용

yolo_model.setInput(blob)
output_sample = yolo_model.forward()

📌 기준 설정

# 유효성 판별 기준
pro_min = 0.5

# 클래스 판별 기준
threshold = 0.3

📌 객체 영역 구분하기

classes = []
confidence = []
boxes = []

Height = image.shape[0]
Width  = image.shape[1]

for out in output_sample:
    for res in out:
        # 앞에 5개는 정보, 뒤에 6~85번째가 80개 클래스의 확률값
        scores = res[5:]
        class_current = np.argmax(scores)
        confidence_current = scores[class_current]

        # 가장 큰 확률값을 가지는 클래스의 유효성 체크
        if confidence_current > 0.5:
            box = res[0:4] * np.array([Width, Height, Width, Height])
            x, y, w, h = box.astype("int")
            x = int(x-(w/2))
            y = int(y-(h/2))

            boxes.append([x, y, int(w), int(h)])
            confidence.append(float(confidence_current)) # 박스의 신뢰도
            classes.append(class_current)
            

results = cv2.dnn.NMSBoxes(boxes, confidence, 0.5, 0.4)

📌 이미지에 객체 영역 표시하기

colorarea = np.random.randint(0, 255, size=(len(names), 3))
if len(results) > 0 :
    for i in results:
        x, y = boxes[i][0], boxes[i][1]
        width, height = boxes[i][2], boxes[i][3]
        colorarea_currnet = [int(j) for j in colorarea[ classes[i]]]
        
        cv2.rectangle(image, (x,y), (x+width, y+height), colorarea_currnet, 5)
        text_bar_current = "{}:{:.4f}".format(names[classes[i]], confidence[i])
        cv2.putText(image, text_bar_current, (x+2, y+2), cv2.FONT_HERSHEY_DUPLEX, 0.5, (0,0,0))

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

result

저작자표시 비영리 변경금지 (새창열림)
  1. ⚙️ yolo-3
  2. 📌 기본 세팅
  3. 📌 이미지 처리
  4. 📌 모델에 이미지 적용
  5. 📌 기준 설정
  6. 📌 객체 영역 구분하기
  7. 📌 이미지에 객체 영역 표시하기
'ASAC 빅데이터 분석가 4기/Deep Learning' 카테고리의 다른 글
  • [60일차] ASAC 빅데이터 분석가 4기(DL-9)
  • [56일차] ASAC 빅데이터 분석가 4기(DL-8)
  • [55일차] ASAC 빅데이터 분석가 4기(DL-7)
  • [54일차] ASAC 빅데이터 분석가 4기(DL-6)
zzzini
zzzini
종착지는 어디인지 모르지만
zzzini
나의 표류일지
zzzini
전체
오늘
어제
  • 분류 전체보기 (308)
    • ASAC 빅데이터 분석가 4기 (44)
      • Python기초 (6)
      • SQL (3)
      • Matplotlib & Seaborn (2)
      • Data Handling (6)
      • Web Crawling (3)
      • Machine Learning (9)
      • Deep Learning (10)
      • 데이터 분석 (1)
      • 기타 (2)
      • 수학 (2)
    • 코딩 테스트 준비 (168)
      • 5정한 (132)
      • 카카오 (14)
      • PCCP & PCCE (3)
      • 프로그래머스 (19)
    • 자격증 (35)
      • AWS CLF-C02 (18)
      • AWS SAA-C03 (1)
      • Tableau Desktop Specialist (5)
      • Tableau Certified Data Anal.. (11)
    • 독서 (17)
    • Tech (24)
      • Tableau (11)
      • AI (4)
      • Flask (1)
      • Node.js (2)
      • Cloud Computing (2)
      • Git & GitHub (1)
      • Notion API (1)
      • Linux (2)
    • Projects (2)
    • 알고리즘 공부 (6)
    • 🎵 (11)

블로그 메뉴

  • 글 쓰기
  • 홈
  • 방명록

공지사항

hELLO · Designed By 정상우.v4.2.1
zzzini
[63일차] ASAC 빅데이터 분석가 4기(DL-10)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.