[TIL_Carrotww] 31 - 22/10/17

μœ ν˜•μ„Β·2022λ…„ 10μ›” 18일
0

TIL

λͺ©λ‘ 보기
38/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 torch둜 opencv2 yolo λͺ¨λΈ μ‚¬μš©

πŸ” μ½”λ“œ μ˜ˆμ‹œλŠ” λ§Žμ§€λ§Œ λ„ˆλ¬΄ 이해가 μ•ˆλΌμ„œ ν•˜λ‚˜ν•˜λ‚˜ λœ―μ–΄λ³΄μ•˜λ‹€.

import torch
import cv2
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
# model λ³€μˆ˜μ— torchλ₯Ό ν•˜μš©ν•˜μ—¬ ultralytics의 yolov5 λ ˆν¬μ§€ν† λ¦¬μ˜ yolov5s λͺ¨λΈμ„ κ°€μ Έμ˜΄

img = cv2.imread('zidane.jpg')
# 지단 이미지λ₯Ό opencv2λ₯Ό μ΄μš©ν•˜μ—¬ 읽어와 img λ³€μˆ˜μ— μ €μž₯
results = model(img)
# results 에 yolov5 λͺ¨λΈμ„ μ΄μš©ν•˜μ—¬ 지단 이미지 인식
results.save()
# 컴퓨터 λ””μŠ€ν¬μ— μ €μž₯

result = results.pandas().xyxy[0].to_numpy()
# resultsλ₯Ό pandas xmin xmax ymin ymax μ’Œν‘œλ‘œ λ°”κΎΈμ–΄ μ€€ ν›„ 
# to_numpy() ν•¨μˆ˜λ‘œ ndarray ν˜•μ‹μœΌλ‘œ λ°”κΎΈμ–΄ 쀌
result = [item for item in result if item[6]=='person']
# 객체가 μ‚¬λžŒμΈ κ²ƒλ§Œ λ½‘μ•„μ˜΄

tmp_img = cv2.imread('zidane.jpg')
print(tmp_img.shape)
# shape λŠ” 이미지λ₯Ό ν–‰ μ—΄ μƒ‰μœΌλ‘œ μž˜λΌμ£ΌλŠ” 것
cropped = tmp_img[int(result[0][1]):int(result[0][3]), int(result[0][0]):int(result[0][2])]
# μ‚¬λžŒ 객체 -> result[0] 에 λ‹΄κ²¨μžˆκ³  [1] [3] [0] [2] x y x y μ’Œν‘œλ‘œ
# 사진을 잘라쀌
print(cropped.shape)
cv2.imwrite('zidane.png', cropped)
cv2.rectangle(tmp_img, (int(results.xyxy[0][0][0].item()), int(results.xyxy[0][0][1].item())), (int(results.xyxy[0][0][2].item()), int(results.xyxy[0][0][3].item())), (0,0,255))
# tmg_img에 μœ„ μ’Œν‘œλ‘œ λ„€λͺ¨ ν‘œμ‹œλ₯Ό ν•΄ μ€€λ‹€.
cv2.imwrite('zidane2.png', tmp_img)
# 이미지 zidane.png λΌλŠ” μ΄λ¦„μœΌλ‘œ μ €μž₯

zidane.jpg

results -> λ³€ν™˜λœ 이미지

zidane.png -> 첫 번째 객체λ₯Ό 자λ₯Έ 사진

zidane.png -> 첫 번째 객체에 rectangle ν•¨μˆ˜λ‘œ 그림을 κ·Έλ €μ€€ λͺ¨μŠ΄

🧲 내일 ν•΄μ•Όν•  것

πŸ” μ²˜μŒμ— λ„ˆλ¬΄ μ–΄λ €μ›Œ 이미지 ν•™μŠ΅μ„ λ‚΄κ°€ μ‹œν‚¬ 수 μžˆμ„κΉŒ λΌλŠ” 생각이 λ“€μ—ˆμ§€λ§Œ μ—­μ‹œ 계속 ν•΄λ³΄λ‹ˆ μ•ˆλ˜λŠ”κ±΄ μ—†λ‹€.
ν•œ 쀄 ν•œ 쀄 λ‹€ λœ―μ–΄λ³΄λ©΄μ„œ μΆ”μƒμ μœΌλ‘œλΌλ„ μ΄ν•΄ν•˜λ©΄μ„œ λ„˜μ–΄κ°€λ‹ˆ μ „μ²΄μ μœΌλ‘œ 이해가 되기 μ‹œμž‘ν–ˆλ‹€.
5μΌλ™μ•ˆ ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ μ£Όμš” κΈ°λŠ₯이 이미지에 물체λ₯Ό μΈμ‹ν•˜μ—¬ μΉ΄ν…Œκ³ λ¦¬μ— μΆ”κ°€ν•΄ μ£ΌλŠ” 것이닀.
막상 진행해 λ³΄λ‹ˆ ν•™μŠ΅λœ λͺ¨λΈμ„ 가져와 μ‚¬μš©ν•˜λŠ” 것은 쉬웠고 μ½”λ“œλ₯Ό ν•œμ€„ν•œμ€„ μ΄ν•΄ν•˜λ‹€ λ³΄λ‹ˆ λ‚΄κ°€ μ›ν•˜λŠ” μ‹μœΌλ‘œ λ°”κΎΈμ–΄ μ‚¬μš©ν•  수 있게 λ˜μ—ˆλ‹€.
내일은 yolo둜 이미지 ν•™μŠ΅λ„ μ‹œμΌœλ³΄κ³  λ‹€λ₯Έ ν•™μŠ΅λœ λͺ¨λΈλ„ μ‚¬μš©ν•΄ 보아야겠닀.
μ•Œκ³ λ¦¬μ¦˜λ„ ν’€μ–΄μ•Όν•˜λŠ”λ° 였늘 λͺ»ν’€μ—ˆλ‹€ γ… γ…  내일 두 문제 풀어야지 γ… γ… 

profile
Carrot_hyeong

0개의 λŒ“κΈ€