관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

컴퓨터 비전 14 - YOLO v8 객체 탐지 3 - 플라스크 연동하여 홈페이지 정보 요청하고 가져오기 본문

인공지능/컴퓨터 비전

컴퓨터 비전 14 - YOLO v8 객체 탐지 3 - 플라스크 연동하여 홈페이지 정보 요청하고 가져오기

huenuri 2024. 11. 15. 04:33

이제 컴퓨터 비전의 마지막 수업만이 남아있다. 어제까지 이 수업을 다 듣고 마치고 싶었으나 저녁에 다 하지 못했다. 오늘 새벽에 30분은 더 일찍 일어나서 공부를 하고 싶었는데 2시 반에 알람이 울릴 때 일어나서 무척 아쉬웠다. 그래도 최소 5시간은 넘게 잠을 자야 건강을 유지할 수 있는 것 같다. 어제는 조금 피곤해서 이보다는 좀 더 취침했다.

이어서 남은 공부를 시작해보겠다.


 

 

 

 

YOLO v8 객체 탐지 실습 세 번째

 

 

Flask로 연동하기 위한 html 문서를 작성해 준다. 그리고 플라스크의 몇몇 도구를 import 한다.

 

 

 

 

하지만 이런 오류가 뜬다. NameError: name 'Flask' is not defined 오류는 Flask 모듈이 import 되지 않았기 때문에 발생한 것이다. Flask를 사용하려면 먼저 from flask import Flask와 같이 Flask 클래스를 import 해야 한다. 보니까 코드를 잘못 작성했었다.


 

 

코드 다시 작성하기

 

 

 

 

 

이런 식으로 웹페이지가 띄워진다. 여기 버튼이 2개 있는데 하나는 파일을 선택하는 것이고, 다른 하나는 선택한 파일로 yolo 모델을 사용해 예측하는 것이다. 지금은 not found라고 나온다.

이제 예측하기 기능을 만들어볼 것이다.


 

 

 

POST 방식으로 전송하기

 

전송 방식에는 get 방식과 post 방식이 있는데 여기서는 post 방식을 사용했다.

 

 

 

 

파일을 선택하고 예측하기를 눌러보면 아직은 설정이 안 되어 있다.

 

 

 

앞의 결과 화면을 보면 파일이 잘 전송되었음을 확인할 수 있다. 잘 전송된 것을 확인하면 print를 지워주고 다음의 코드를 작성한다.


 

 

파일명 출력하기

 

 

아래쪽에 파일이 잘 전송되었음을 확인할 수 있고 파일의 형태도 보인다.


 

 

 

파일이 비어있는지 여부 확인하기

어떤 파일이 들어있는지 아래쪽에 잘 보인다. 확장자가 온점을 기준으로 접근하도록 코드를 작성해 본다. 그리고 이것을 소문자로 변환한다.


 

 

파일 업로드할 수 있게 하기

 

 

upload 폴더에 이 파일이 만들어지지 않는 것 같아 한참 코드를 수정해 보았는데, 나중에 보니 있었다. 처음에 실행할 때는 예측하기를 누르지 않아서 그랬다. 여기서 확인할 때는 무조건 주소에 들어가서 파일을 하나 열고 예측을 수행해야 한다는 것도 알게 되었다.

이제 예측을 수행할 것이다.


 

 

 

예측 수행하기

 

예측을 잘 수행한 것을 볼 수 있다. 이제 반환하는 코드도 작성해 보자.


 

 

 

예측한 값 반환하기

 

 

이 코드는 좌표값을 딕셔너리 형태로 만드는 것이다. 사이트에 접속해서 들어간 후 예측하기를 클릭하면 다음과 같은 결과 화면을 볼 수 있다.

 

 

 

 

이렇게 예측 결과가 JSON 형태로 잘 출력되고 있다.

 


 

 

 

학습을 마치고

이렇게 해서 컴퓨터 비전에 관한 모든 수업을 다 듣고 학습일지로 정리했다. 이로써 9일간의 길고 길었던 컴퓨터 비전 기초 학습을 마친다. 나중에 1월 즈음에 심화된 학습을 진행할 예정이다. 

오늘 새벽에는 정리할 게 있어서 해보고, 본격적인 자바스크립트 공부는 늦은 아침부터 시작하게 될 것 같다. 그동안 수고가 많았다. 공부를 하면서 내가 한번 마음먹은 것은 무슨 일이 있어도 끝내는 집념의 사람이 되었음을 느끼게 되었다.

 

전에는 끝을 맺는 것을 잘 못했다. 하지만 요즘 몇 달 사이 8월부터 목표를 정해서 공부함으로 이런 습관이 형성되었다.