YOLOv5를 활용한 컨테이너 객체 탐지 및 실시간 추적 구현

다음은 CPU 환경에서 실행한 결과 예시입니다. 사용된 시스템 사양: Windows 10 운영체제

최종 결과 이미지


실제 구현 절차


  1. Anaconda 및 PyCharm 설치
    설치가 어려운 경우 검색을 통해 참고하세요.
  2. Anaconda 실행
    애플리케이션을 시작합니다.
  3. 가상 환경 생성
    아래 명령어로 Python 3.9 기반의 가상 환경을 생성합니다.
    conda create -n yolov5_env python=3.9
  4. 가상 환경 활성화
    conda activate yolov5_env
  5. PyTorch 설치
    CPU 전용 버전을 설치합니다.
    conda install pytorch torchvision cpuonly -c pytorch
  6. YOLOv5 소스 코드 다운로드
    공식 저장소에서 다운로드: https://github.com/ultralytics/yolov5
    로컬 디렉터리에 저장합니다.
  7. 프로젝트 설정 및 환경 구성
    다운로드한 yolov5 폴더를 PyCharm 프로젝트 폴더에 압축 해제합니다.
    PyCharm은 자동으로 프로젝트를 인식하고 로드합니다.

    설정 확인:
    File → Settings → Project → Python Interpreter
    생성한 yolov5_env 환경을 선택합니다.

    터미널에서 다음 명령어로 의존성 설치:
    pip install -r requirements.txt

    이후, 공식 릴리스 페이지에서 yolov5s.pt 파일을 다운로드하여 프로젝트 루트 폴더에 복사합니다.

    detect.py를 실행하면 data/images 폴더 내 이미지를 분석하고 결과는 runs/detect/exp 경로에 저장됩니다.
  8. 모듈 오류 해결 팁
    Pillow 관련 에러 발생 시, 다음과 같이 버전 조정:
    pip uninstall pillow
    pip install pillow==8.4

    OpenCV 오류 발생 시, 낮은 버전 설치:
    pip uninstall opencv-python
    pip install opencv-python==3.8.0

컨테이너 데이터셋 준비 및 학습


  1. 학습용 데이터 폴더 구조 생성
    train_data 폴더 생성 후, 하위에 images, labels 폴더 생성.
    각각의 폴더 내부에 train 폴더를 추가하고, 수집한 이미지(스마트폰 촬영 또는 공개 데이터셋 활용)를 train_data/images/train에 배치합니다.
    train_data/labels/train 폴더는 비어 있어야 합니다.
  2. 이미지 레이블링 도구 사용
    온라인 레이블링 도구: https://www.makesense.ai/
    Get Started 클릭 후, 대상 이미지를 업로드하고 태그를 정의합니다.
    레이블링 주의사항: 먼저 사각형 영역을 그린 후, 형식에 맞게 저장해야 합니다.
  3. 레이블 데이터 처리
    레이블링 완료 후 내보낸 파일을 train_data/labels/train 폴더에 압축 해제합니다.
  4. 데이터셋 설정 파일 수정
    coco128.yaml 파일을 열고, 자신의 객체 클래스(예: 컨테이너)에 맞게 설정을 변경합니다.
  5. 모델 학습 실행
    train.py 스크립트를 실행합니다.
    권장 설정: epochs=150
  6. 학습 결과 위치
    학습 완료 후 모델은 runs/train/exp12 경로에 저장됩니다.

자신의 영상에 대해 탐지 실행


학습된 모델을 사용해 실시간 영상에서 컨테이너를 탐지하려면 detect.py 파일을 수정합니다.

parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'runs/train/exp12/weights/best.pt', help='model path or triton URL')
parser.add_argument('--source', type=str, default=ROOT / 'rtsp://user@10.5.31.33:554/video1', help='file/dir/URL/glob/screen/0(webcam)')

또는 직접 변수로 지정:

source = "rtsp://user@10.5.31.33:554/video1"

이렇게 설정하면 실시간 스트리밍 영상에서 컨테이너를 탐지할 수 있습니다.

GPU 환경 설정 시 주의사항


  • GPU 사용 시, 드라이버, CUDA, cuDNN, PyTorch 버전 간 호환성을 반드시 확인하세요.
  • 특히, 알리바바나 토르 카페 등 공개 미러를 통한 설치 시, PyTorch가 자동으로 CPU 버전으로 설치될 수 있습니다.
  • torch.cuda.is_available()false 반환되는 경우, 다음 해결 방법을 적용하세요:
    해결 방법 안내
  • 학습 중 오류 발생 시, cmd.py 파일에 아래 코드를 추가하세요:
    os.environ['GIT_PYTHON_REFRESH'] = 'quiet'

GPU 기반 학습 성능 비교


태그: YOLOv5 object detection real-time tracking container detection PyTorch

7월 1일 05:18에 게시됨