Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

덕배의 블로그

인공지능(AI) 딥러닝 YOLOv7 설치 및 커스텀 (아나콘다 환경) 학습해보기 본문

인공지능

인공지능(AI) 딥러닝 YOLOv7 설치 및 커스텀 (아나콘다 환경) 학습해보기

김덕배_KDB 2023. 7. 8. 13:42
반응형

YOLOv7 커스텀 학습을 하기 전에

커스텀 학습을 하기 위해서는 3개의 데이터 셋이 필요하다.

Train, Valid, Test 이 데이터 셋이 있어야 하고 저 3개의 폴더 안에는 Image와 label의 파일명이 일치해야 한다.

 

 

Labeling 하는 방법과 Roboflow의 사용법이 궁금하다면 밑에서 배우길 추천한다.

 

https://rkdtmdqja98.tistory.com/2

 

인공지능 딥러닝 공부의 필요한 roboflow으로 라벨링, 증강, 전처리, 학습 사용법

Roboflow란? 인공지능을 돌리기 위한 Labeling, 학습을 도와주는 툴이다. 무료와 유로로 이용이 가능하다. https://roboflow.com/ Roboflow: Give your software the power to see objects in images and video With just a few dozen exam

rkdtmdqja98.tistory.com

 

 

 그리고 YOLOv7이라는 모델을 이용하기 위해선 가상환경이 필요하다. 

예를 들어 파이썬도 필요하고 CUDA도 설치해야 하고 cuDNN, pytorch 등등 필요한 것들이 매우 많다. 

심지어 이런 것들이 있어도 버전이 일치해야 한다. 매우 복잡한 것을 해결해 줄 가상환경을 알아야 한다.

아나콘다 가상환경을 알고 싶다면 밑에 사이트를 추천한다.

 

https://rkdtmdqja98.tistory.com/3

 

인공지능 딥러닝 YOLOv8 설치 및 커스텀 학습(파이썬 아나콘다 환경)

아나콘다 가상 환경 생성 아나콘다란? 아나콘다는 파이썬을 포함한 데이터 과학에 필요한 다양한 언어 및 패키지의 배포 장점은 프로젝트마다 다른 환경을 만드는데 편리하고 환경마다 필요한

rkdtmdqja98.tistory.com

 

 

이렇게 데이터셋이 준비가 되어있고 또 가상환경을 만들었다면 이제 가상환경에서 학습할 시간만 남았다.

 

 

위에 사이트에선 YOLOv8 설치 방법만 있기에 YOLOv7 설치 방법은 밑에

github 사이트에 들어가서

https://github.com/WongKinYiu/yolov7

 

GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time

Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors - GitHub - WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of...

github.com

 

 

yolov7
coda 버튼을 누르게 되면 https 밑에 https://github.com/WongKinYiu/yolov7.git 이 주소를 복사한다.

 

밑에 따라 하게 되면 yolov7 설치가 완료된 것이다.

 

(base) C:\Windows\system32>git clone https://github.com/WongKinYiu/yolov7.git
Cloning into 'yolov7'...
remote: Enumerating objects: 1191, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1191 (delta 2), reused 5 (delta 2), pack-reused 1185
Receiving objects:  99% (1180/1191), 71.79 MiB | 11.12 MiB/s
Receiving objects: 100% (1191/1191), 74.23 MiB | 11.04 MiB/s, done.
Resolving deltas: 100% (514/514), done.

(base) C:\Windows\system32>cd yolov7

(base) C:\Windows\System32\yolov7>dir

 C:\Windows\System32\yolov7 디렉터리

2023-07-08  오후 01:30    <DIR>          .
2023-07-08  오후 01:30    <DIR>          ..
2023-07-08  오후 01:30             4,325 .gitignore
2023-07-08  오후 01:30    <DIR>          cfg
2023-07-08  오후 01:30    <DIR>          data
2023-07-08  오후 01:30    <DIR>          deploy
2023-07-08  오후 01:30             9,523 detect.py
2023-07-08  오후 01:30             9,367 export.py
2023-07-08  오후 01:30    <DIR>          figure
2023-07-08  오후 01:30             3,680 hubconf.py
2023-07-08  오후 01:30    <DIR>          inference
2023-07-08  오후 01:30            35,823 LICENSE.md
2023-07-08  오후 01:30    <DIR>          models
2023-07-08  오후 01:30    <DIR>          paper
2023-07-08  오후 01:30            14,976 README.md
2023-07-08  오후 01:30               997 requirements.txt
2023-07-08  오후 01:30    <DIR>          scripts
2023-07-08  오후 01:30            17,634 test.py
2023-07-08  오후 01:30    <DIR>          tools
2023-07-08  오후 01:30            38,738 train.py
2023-07-08  오후 01:30            38,134 train_aux.py
2023-07-08  오후 01:30    <DIR>          utils
              10개 파일             173,197 바이트
              12개 디렉터리  626,242,895,872 바이트 남음

Yolov7은 위에 코드블록에 있듯이 train.py가 있기에 따로 만들지 않아도 된다.

이제 커스텀 학습을 해보겠다.

 

!python train.py --device 0 --batch-size 16 --epochs 100 --img 640 640 --data data/custom_data.yaml 
--hyp data/hyp.scratch.custom.yaml --cfg cfg/training/yolov7x-custom.yaml 
--weights yolov7x.pt --name yolov7x-custom

 

! python train.py  : 현재 폴더에 있는 train.py를 실행시킨다.

  • -device 0 : 현재 설정된 하드웨어를 설정한다.
  • -batch-size 16 : 한번 학습 시 진행되는 batch사이즈를 설정한다. 크면 클수록 빨리 학습할 수 있지만 너무 크면 중간에 메모리가 부족하여 학습이 중단될 수 있다.
  • -epochs 100 : 전체 데이터를 반복하는 횟수를 나타낸다. 클수록 좋지만 일정 수준이상으로 진행되면 과적합이 생겨 좋아지지 않는다.
  • -img 640 640 : 네트워크 모델에서 설정된 이미지의 크기를 나타낸다. 위 표의 test size를 참고하여 설정
  • -data data/custom_data.yaml : data가 들어있는 위치, 클래스, 이름에 대한 정보가 있는 yaml의 위치를 설정한다.
  • -hyp data/hyp.scratch.custom.yaml : 하이퍼파라미터가 들어간 yaml의 위치를 설정한다.
  • -cfg cfg/training/yolov7 x-custom.yaml : 모델의 구조가 들어간 yaml의 위치를 설정한다.
  • -weights yolov7x.pt : 초기 훈련 가중치가 들어간 위치를 설정한다.
  • -name yolov7 x-custom : 훈련뒤 만들어지는 데이터를 저장할 폴더의 이름을 설정한다.

 

python train.py --device 0 --batch-size 16 --epochs 100 --img 640 640 --data

python detect.py —weight best.pt —conf 0.9 —img-size 640 —source 0

  • conf = 정확도, source 그래픽 카드가 1개이므로 0번

data/custom_data.yaml --weights yolov7.pt --name yolov7_custom

 

 

 

 

Yolov7에 대해 알아보았다. 좋은 자료가 되었으면 좋겠다는 마음으로 작성해 보았다.