본문 바로가기
AI & Data/AI&ML Examples

[AI | Object Detection] YOLOv5 #01: Image Detecting

by Henry Cho 2022. 1. 19.
728x90

YOLOv5 #01: Image Detecting


포스트 난이도: HOO_Senior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


 

# yoloV5

yoloV5 라이브러리는 Machine learning 중에서 object detection에 특화된 라이브러리이다.

이미 이전 욜로 버전들도 object detection 분야에서 대중적으로 많이 사용되어 왔지만 이번 yoloV5를 통해 보다 더 업데이트된 라이브러리 사용이 가능해졌다.

(물론 V5에 대한 시시비비가 있지만 필자에게는 그저 감사할 따름이다.)

yoloV5 라이브러리를 통해 특정 이미지를 Detecting 해보자.

yoloV5 라이브러리는 기존에 다른 yolo 방식과 다소 차이가 있을 수 있다.

예를 들면 이미지를 불러오거나 저장 방식이 다소 다를 수 있다.

또한 yoloV5 자체도 업데이트가 지속적으로 이루어지다 보니 필자가 올려놓은 예제와 바뀐 버전의 라이브러리가 일치하지 않을 수도 있다.

포스팅이 되고 나서는 한동안 예제 코드를 참고하는데 문제가 없을 수 있지만 혹시라도 조금이라도 바뀌어서 예제 코드를 참고하기 어렵다면 꼭 알려주길 바란다.

예를 들면, 기존에 yoloV5 폴더 구조가 달라져 있어 예제 코드를 참고하는데 어려움을 느낄 수가 있다.

필자의 모든 포스트는 필요에 따라 또는 주기적으로 수정을 통한 업데이트가 이루어지기 때문에 변화된 라이브러리에 맞춰서 예제 코드도 수정할 예정이다.

 

# Example Codes

이번 포스팅 예제 코드는 Colab에서 실행하였으며, yoloV5 라이브러리를 사용하였다.

또한 yoloV5 예제를 다루는 입장에서 matplotlib을 사용하면 보다 더 쉽게 이미지 디텍팅 여부를 확인할 수 있다.

requirments를 통해서 기본적인 세팅은 install이 가능하다.

해당 예제 코드는 yolov5에서 이미지 디텍팅 하는 기본적인 방식이며 기본이 되는 코드이기 때문에 프로젝트를 시작할 때마다 입력하기 귀찮다면 복붙 하는 것도 좋다.

 

git hub에서 yoloV5를 가져온다.

!git clone https://github.com/ultralytics/yolov5.git

cd를 통해 yoloV5 위치를 입력해준다.

이미 되어 있다면 굳이 안 해줘도 된다.

혹시나 위치 변경 및 입력이 어려울 경우 image를 실행시켜주고 detecting 과정을 거쳐도 된다.

이번 예제는 yolov5 라이브러리를 사용해보는 게 주요 목적이기에 이후 포스트에서 detail 한 부분을 다루어보도록 하자.

%cd yolov5/

requirements를 통해 yolov5에서 필요한 packages(패키지)들을 한 번에 설치가 가능하다.

이 역시도 이미 설치가 이루어져 있는 경우에는 이미 있다고 메시지가 나올 것이다.

예를 들면 "Requirement already satisfied" 요런 식으로 말이다.

!pip install -U -r requirements.txt

Image detecting

이미지는 임의로 변경하여 사용하면 된다.

!python detect.py --source /data/images/HOO.jpg --weights yolov5s.pt --conf 0.4

 

현재 configuration 기준을 0.4로 잡았지만 상황과 조건에 따라서 달리 변경하면 된다.

참고로 낮아질수록 detecting 되는 것이 많아지지만 그만큼 정확도가 떨어질 수밖에 없다.

필자의 사진으로 person detecting을 했을 때 잘 잡히는 걸 알 수 있다.

피사체가 크고 정확하기 때문에 detecting 잘 된다.

 

<Fig.01> 출처: https://whoishoo.tistory.com/

 

<Fig.02> 출처: https://whoishoo.tistory.com/

 

반면에 object가 애매하거나 다른 object와 비슷한 경우 잘 잡히지가 않는다.

이럴 경우 configuration을 바꿔보는 게 제일 맘 편한 방법이지만 웬만해서 이걸로는 detecting이 되지 않는다.

<Fig.03> 출처: https://whoishoo.tistory.com/

 

cof. 를 0.1로 낮출 경우 비슷하게 생겼다 싶은 것들은 detecting 되는 걸 알 수 있다.

결과적으로 customizing을 통해서 보다 더 정확한 디텍팅이 이루어져야 한다.

<Fig. 05 https://whoishoo.tistory.com/>

 


 

728x90

댓글