-
[TIL] 내일 배움 캠프 46일 10/13 - ItisFuture내일배움캠프/TIL 2022. 10. 13. 20:41
한 것
pytorch를 활용한 이미지 처리
머신러닝 예제 공부
사이드 프로젝트 계획
간단한 알고리즘
회고
pytorch의 yolov5모델을 가지고 이미지를 강의에서 설명해 주신 것 외로 하나 변형을 하여 만들어봤습니다.
계획했던 심화문법이나 DRF 진도를 못 나가서 아쉽지만 대신 코드를 활용을 해본것과 사이드 프로젝트를 머신러닝에 관련하여 계획한 수확이 있었습니다.
공통 코드
import torch import cv2 model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True) img = cv2.imread('people.jpeg') tmp_img = cv2.imread('people.jpeg') results = model(img) results.save() #---------세로 x 가로------------# print(results) # 837x1024 #------------------------------#
기존 코드
result = results.pandas().xyxy[0].to_numpy() result = [ item for item in result if item[6] == 'person'] for idx,r in enumerate(result): xmin,ymin,xmax,ymax = map(int, r) cropped = img[ ymin:ymax , xmin:xmax ] cv2.imwrite(f'people{idx+1}.png', cropped) cv2.rectangle(tmp_img, (xmin, ymin), (xmax, ymax), (255,255,255)) cv2.imwrite('result1.png', tmp_img)
바꿔본 코드
cnt=1 for i in results.crop(save=False): if 'person' in i['label']: xmin,ymin,xmax,ymax = map(lambda x : int(x.item()), i['box']) cropped = tmp_img[ ymin:ymax , xmin:xmax ] cv2.imwrite(f'people_v2_{cnt}.png', cropped) cnt+=1 cv2.rectangle(tmp_img, (xmin, ymin), (xmax, ymax), (255,255,255)) cv2.imwrite('result1.png', tmp_img)
개인적으로 가독성은 둘 다 비슷해 보이지만, 모델을 돌린 결과값에서 데이터프레임으로 바꾼 것을 numpy의 ndarray로 다시 바꿔주는 행위를 안 함으로써 바꾼 코드가 좀 더 마음에 듭니다.
내일 할 것
DRF 강의
파이썬 문법
간단한 알고리즘
'내일배움캠프 > TIL' 카테고리의 다른 글
[TIL] 내일 배움 캠프 47일차 10/14 - ItisFuture (0) 2022.10.14 [TIL] 내일 배움 캠프 45일차 10/12 - ItisFuture (0) 2022.10.12 [TIL] 내일 배움 캠프 44일차 10/11 - ItisFuture (0) 2022.10.11 [TIL] 내일 배움 캠프 41일차 10/8 - ItisFuture (0) 2022.10.08 [TIL] 내일 배움 캠프 40일차 10/7 - ItisFuture (0) 2022.10.07