본문으로 바로가기

머신러닝 특강을 듣고 실습을 했다. 필요한 모듈설치를 한 후 기본적인 장고 yolo를 활용해서 컴퓨터가 사진을 어떻게 인식하게 만드는지,  어떤 결과를 보여주는지 확인 할 수 있었다. 사실 정말 기본적인 것만 해서 정확히는 뭘 했는지 자세히 설명을 하지는 못하지만 특강이후에 roboflow 홈페이지에 들어가서 만들어진 데이터 셋으로 구글코랩에서 실습을 하다보니 어떤식으로 구동이 되는지 어떤식으로 사용이 될 것인지 알게 되었다.

최양임 매니저님에게 지금 공부를 진행하는 과정이 맞는것인지 괜찮은지 그리고 앞으로 해야할게 무엇인지 물어보고 이야기를 나누었다. 이야기의 자세한 내용은 적지 못하지만 결과적으로 장고와 파이썬이 기본이기 때문에 머신러닝을 지금 하는 것 보다는 복습을 하면서 기초를 탄탄하게 하는 시간을 가져야겠다고 생각했다. 지금 가서 이야기를 나눈 것은 큰 도움이 되었다.

 

내배캠을 시작하면서 새벽수영을 함께 시작했는데 이번주 부터 마음이 해이해졌다는게 느껴졌고 오늘 처음으로 수영에 빠지게 되었다. 안갔을때 편안함보다 갔다왔을때의 편안함이 더 크다는 걸 느꼈다. 제일 뼈저리게 느낀것은 수영을 안가니까 더 피곤하고 활력이 없어졌다. 수영을 갔다오면 하루가 즐거워진다. 좋은 하루를 위해서라도 정신차려서 내일부터는 초심을 되찾고 또 열심히 달릴 것이다!!

 

머신러닝 실습

import torch
import cv2

model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
imgs = ['https://ultralytics.com/images/zidane.jpg']  # batch of images

results = model(imgs)
results.save()
  • yolov5s.pt 파일이 만들어졌다면 이제 이미지 파일에 적용할 함수를 다시 입력한다.

import torch
import cv2
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
imgs = ['https://ultralytics.com/images/zidane.jpg']  # batch of images

results = model(imgs)

print(results.xyxy[0], results.xyxy[0][0][0].item())  # img1 predictions (tensor)
print(results.pandas().xyxy[0])  # img1 predictions (pandas)

tmp_img = cv2.imread('zidane.jpg')
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())), (255,255,255))
cv2.imwrite('result.png', tmp_img)
  • 터미널에 값이 나오고 result.png 값이 나온다

  • 라벨링을 하고 사람을 인식하게 해주었다. 
  • 다시 조금 더 발전한 코드를 입력하고 실행해준다.
import torch
import cv2
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

img = cv2.imread('zidane.jpg')
results = model(img)
results.save()

result = results.pandas().xyxy[0].to_numpy()
result = [item for item in result if item[6]=='person']

tmp_img = cv2.imread('zidane.jpg')
print(tmp_img.shape)
cropped = tmp_img[int(result[0][1]):int(result[0][3]), int(result[0][0]):int(result[0][2])]
print(cropped.shape)
cv2.imwrite('result2.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())), (255,255,255))
cv2.imwrite('result.png', tmp_img)

실행하면 사람부분만 잘려서 결과로 저장이 된다.

안첼로티의 레알...