[객체인식 & Depth Estimation 프로젝트] 3. yolo v3 tiny model 학습

happy_quokka·2024년 1월 18일
0

자율주행 프로젝트

목록 보기
9/15

1. container 생성

$ docker run -it --gpus all --ipc=host -v ${PWD}/yolov3:/yolov3 --name
 yolov3-pytorch -p 8888:8888 nvcr.io/nvidia/pytorch:21.12-py3 /bin/bash

2. 환경 설정

# git clone https://github.com/2damin/yolov3-pytorch.git
# cd yolov3-pytorch && git checkout onnx-1.6
# pip install -r requirements.txt
# pip install --upgrade numpy==1.23.0
# pip install opencv-python==4.5.5.64
# pip install opencv-python-headless==4.5.5.64
# pip install protobuf==3.20.0

opencv-python와 opencv-python-headless 버전을 맞춰주지 않으면 cv 에러가 발생한다

  • ImportError: cannot import name '_registerMatType' from 'cv2.cv2' (/opt/conda/lib/python3.8/site-packages/cv2/cv2.cpython-38-x86_64-linux-gnu.so)

3. yolov3-pytorch 코드 수정

  1. yolov3-pytorch/dataloader/yolodata.py 수정

    • 데이터 경로
    • class_str를 class에 맞게 수정
  2. yolov3-pytorch/yolov3-tiny_tstl_416.cfg에서 class 수를 9로 변경하고 yolo layer전의 layer filter값을 42로 변경

  1. yolov3-pytorch/train/trainer.py에서 loss가 작을 경우에만 .pth를 저장하도록 수정

4. train (yolov3-pytorch) 실행

  1. yolov3-pytorch 폴더 안에서 main.py 실행
# nohup python main.py --mode train --gpus 0 --cfg yolov3-tiny_tstl_416.cfg --pretrained model_epoch250.weights &

nohup [명령] &

  • 백그라운드에서 명령을 실행한다
  • 실행 결과 nohup.out 파일이 생성된다
  • chmod 777 nohup.out을 하면 파일 내부를 볼 수 있다 (아니면 cat nohup.out으로 확인가능)
  • nohup 실행 중 즉, 백그라운드에서 실행중인 명령어를 확인하려면 ps -ef 명령어 사용
  • nohup을 종료하려면 kill -9 [PID값] 명령어 사용 (PID값은 ps -ef를 했을 때 확인 가능)
  1. 실행 결과로 output 폴더가 생성되고 그 안에 best_epoth.pth 파일이 생성된다

5. eval, demo

# python main.py --mode eval --cfg yolov3-tiny_tstl_416.cfg --gpus 0 --checkpoint ./output/best_epoch.pth 

# python main.py --mode demo --cfg yolov3-tiny_tstl_416.cfg --gpus 0 --checkpoint ./output/best_epoch.pth
  • demo.py 파일에서 thres 값을 변경해주면 여러 box가 검출된다

0개의 댓글