YOLOv5가 공개되었습니다

2020-07-24 22:08:19


YOLOv5가 웬 말이냐

딥러닝을 접해보거나 프로젝트를 해보신 분들은 YOLO라는 것을 한 번쯤은 들어보셨을 겁니다. YOLO를 영어로 풀면 ‘YOU Only Look Once’인데 AI 엔지니어들이 가장 많이 찾는 알고리즘 중 하나입니다. 그것은 항상 실시간 객체 탐지에 대해서 가장 인기가 많은 알고리즘으로 알려져 있습니다. YOLO는 첫 출시 이후 지금까지 계속해서 버전업이 되어오고 있습니다. YOLO 이전 버전에 대해 간단히 논의해보고 바로 학습을 시키는 부분으로 넘어가자. 이전 YOLO 릴리스를 한번 살펴보겠습니다. YOLO v1은 조셉 레드몬이 2016년 5월 “유 온리 룩 원스: 통합, 실시간 객체 감지”라는 논문을 들고 선보인 바 있습니다. 이것은 실시간 물체 감지에서 가장 큰 혁신 중에 하나가 되었었습니다. 요셉은 2017년 12월 논문 “yolo9000: 더 낫고, 더 빠르며, 더 강하다”와 함께 또 다른 버전의 YOLO 9000을 선보였습니다. 2018년 4월에는 1년 만에 가장 인기 있고 안정적인 YOLO 버전을 선보였습니다. 요셉은 이번에 파트너가 있었는데 그들은 YOLOv3을 논문 “YOLOv3: 증분 개선”과 함께 출시했습니다. 마침내 2020년 4월 알렉세이 보흐 코프스키가 논문 “YOLOv4: Optimal Speed and Accuracy of Object Detection”으로 YOLOv4를 소개하면서 알렉시는 이전 버전의 YOLO에서 공식 저자가 아니지만 요셉과 알리는 누군가 시대를 감당해야 하는 YOLO에서 한발 물러서기로 했습니다. YOLOv4는 놀라운 새로운 몇 가지를 도입하여 높은 마진으로 YOLOv3을 능가하였으며 또한 Efficient Family와 비교했을 때 평균 정밀도가 상당히 높았습니다. 불과 나흘 전인 2020년 6월 9일 며칠 후, 또 다른 비공식 작가 글렌 조셔는 YOLOv5를 발표했습니다. (저는 이때 YOLOv4를 테스트해보는 중이었기에 상당히 당황했습니다.) 그도 그럴 것이 ‘YOLOv5’라는 이름 선정을 놓고 논란이 많습니다.. 글렌은 PyTorch 기반 버전의 YOLOv5를 도입하여 탁월한 개선점을 제공하였습니다. 하지만 그는 아직 공식 논문을 발표하지 않고 있습니다.. 이 버전은 꽤 놀랍고 이전 버전보다 월등히 뛰어났으며 FPS가 더 높은 EfficientDet 정확도에 근접했습니다. 해당 페이지의 그래프에서 그것을 알 수 있습니다. 사용자 지정 데이터 집합에서 YOLOv5 학습시키는 방법을 알아보겠습니다. 이 파트는 아래 나열된 여러 단계로 구성됩니다. 데이터 집합 준비 환경 설정 파일 및 디렉터리 구조 구성/수정 이 필요하며 트레이닝 예측 결과와 튜토리얼의 코드는 이 깃허브 저장소에서 찾을 수 있습니다. 데이터 집합 준비를 해봅시다. YOLO 형식으로 라벨이 표시된 데이터 세트를 준비하면 바로 이용이 가능합니다. 이 튜토리얼에서는 오픈 이미지 데이터 세트에서 코끼리 감지 데이터 세트를 사용할 것입니다. 레이블이 지정된 데이터 집합을 가져오려면 오픈 소스 데이터 집합을 검색하거나 웹에서 이미지를 스크랩하고 LabelImg와 같은 도구를 사용하여 라벨링을 할 수 있습니다. 참고: 라벨의 형식은 YOLO 형식이어야 합니다. 라벨과 이미지를 동일한 디렉터리에 보관해야 합니다. 그런 다음 이미지 파일을 복사하고 경로를 txt 파일에 붙여 넣으려면 train, test 및 validation txt 파일을 생성해야 합니다. 가장 좋은 비율은 교육 세트에 70%, 검증 세트에 20%, 테스트 세트에 10%의 데이터를 확보하는 것입니다. 이 튜토리얼은 학습, 테스트, 유효성 검사 txt 파일을 사용할 것입니다. 또한 여기에 라벨이 붙은 데이터 집합을 추가했는데, 이미지 디렉터리는 모든 이미지를 포함하고 txt 디렉터리는 모든 라벨링 데이터를 포함하고 있습니다. 다음으로 환경 설정이 필요합니다. 중요한 것은 파이 토치 버전 1.5 이상, 파이썬 버전 3.7, 그리고 CUDA 버전 10.2가 필요합니다. 아래의 나머지 종속성은 pip이나 요구조건을 이용하여 쉽게 설치할 수 있습니다. txt 파일을 참고하시기 바랍니다. 이 튜토리얼에서는 ubuntu 16.04를 사용해 보았습니다. 모든 종속성을 성공적으로 설치하면 이제 다음으로 나아갈 준비가 완료된 것입니다. 다음은 파일 및 디렉터리 구조 구성/수정 단계입니다. YOLOv5 모델을 교육하려면 몇 가지 단계를 수행해야 합니다. 먼저 YOLOv5의 깃허브에 있는 저장소를 복제해와야 합니다. 이 튜토리얼을 따르면 여기서 복제할 수 있습니다. 여기서는 공식적인 저장소에서 복제도 할 수 있습니다. 둘째, 데이터 집합 매개 변수를 설명하기 위해 YAML 파일을 추가해야 하는 경우 수정해야 합니다. 다음 YAML 파일을 참조하고 필요에 따라 수정하시면 됩니다. 우리는 나중에 이 파일을 사용하여 모델을 훈련시킬 것입니다. 이제 트레이닝을 시켜봅시다. YOLOv5를 훈련시키기 위해 Glenn은 4가지 버전을 제안했습니다. 작은 버전인 YOLOv5-s 중간 버전인 YOLOv5-m 큰 버전인 YOLOv5-l 초대형 버전인 YOLOv5-x 이것들의 차이점은 페이지를 통해 확인이 가능합니다. 교육하는 동안 YAML 파일을 통과하여 이러한 모델 중 하나를 선택할 수 있습니다. 모든 YAML 파일은 여기에 있습니다. 이제 모든 것이 준비되었고 우리는 YOLOv5 모델을 훈련시킬 준비가 완료되었습니다. 디렉터리로 이동하여 다음 명령을 사용하여 교육을 시작하면 됩니다. img는 입력 이미지의 크기입니다. 배치는 배치 크기입니다. epochs는 epochs 수입니다. 데이터는 3단계에서 생성된 YAML 파일 경로입니다. cfg는 모델 선택 YAML 파일입니다. 저는 이 튜토리얼에서는 “s”를 선택했습니다. 가중치는 전송 학습을 적용하기 위한 가중치 파일입니다. 이것은 깃허브 페이지에서 찾을 수 있습니다. device는 교육용 기기, GPU의 경우 “0” 및 CPU의 경우 “cpu”를 입력하면 됩니다. 그리고 명령을 실행하면 즉시 모델 훈련을 시작하게 됩니다. 저는 그 모델을 30 에폭 동안 훈련시키기로 결정했습니다. 훈련이 완료되면 모델은 weights 디렉터리에 저장되며, 결과 매트릭스 그래프는 깃헙에 있는 것과 동일하게 생성되므로 참고하시면 됩니다.

Leave a Comment