본문 바로가기
AI/딥러닝 프로젝트

[02 Object Detection] - MMdetection 설치 및 기본사용법

by AI-BT 2024. 10. 26.
728x90
반응형

MMDetection이란?

MMDetection은 OpenMMLab에서 개발한 오픈 소스 딥러닝 객체 탐지 라이브러리입니다. 다양한 최신 객체 탐지 알고리즘을 구현하고 있어, 연구 및 실험을 위한 최적의 환경을 제공합니다. 이 라이브러리는 COCO, VOC, ADE20K 등 다양한 데이터셋을 지원하며, 사용자 친화적인 API와 확장성이 뛰어난 구조로 되어 있습니다. MMDetection은 연구자와 개발자들이 효율적으로 딥러닝 모델을 구축하고 학습할 수 있도록 도와줍니다.


 

1. MMDetection 설치 과정

1) MMdection 클론하기

MMDetection을 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 설치 과정은 다음과 같습니다.

우선, MMDetection의 소스 코드를 GitHub에서 클론해야 합니다. 터미널을 열고 다음 명령어를 입력하세요:

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection

 

2) 패키지 설치하기

이제 MMDetection 폴더 내에서 필요한 패키지를 설치합니다. 다음 명령어를 실행하세요:

pip install -v -e .

 

pip install -v -e . 명령어는 현재 디렉토리(여기서는 mmdetection 디렉토리)에 있는 패키지를 설치한 것입니다.

즉, git clone 명령어로 GitHub에서 mmdetection 프로젝트를 클론한 후, 그 디렉토리 안에 들어가서 해당 명령어를 실행했기 때문에, mmdetection 프로젝트를 설치한 것입니다.

  • -e 옵션으로 인해 편집 가능한 모드로 설치되었으며, 이를 통해 mmdetection 소스 코드를 수정하면 바로 그 변경 사항이 반영됩니다.
  • -v 옵션은 설치 과정을 더 자세하게 출력하도록 한 것입니다.

결론적으로, mmdetection이라는 딥러닝 객체 탐지 라이브러리를 설치한 것입니다.

 


 

2. MMCV 버전을 업데이트 필요

최신 버전의 MMCV를 사용하는 것은 여러 면에서 중요합니다. 최신 버전을 통해 최신 모델, 기능, 버그 수정 및 성능 향상을 활용할 수 있습니다. 또한, 지속적으로 업데이트되는 라이브러리와 API를 통해 최신 연구 결과를 쉽게 적용할 수 있습니다.

 

우선 아래 명령어로 버전을 확인해보자.

pip show mmcv

 

버전이 2.1.0 으로 확인이 된다.

그렇지만 실제 .py 파일을 만들어서 실행하면 버전이 다를 수도 있다.

 

만약 확인한 버전이 다르다면,

기존의 설치된 mmcv 를 삭제하고

내가 원하는 버전의 mmcv 를 설치 할 수 있습니다.

 

설치하는데 조금 시간이 걸릴 수도 있다.

pip uninstall mmcv
pip install mmcv==2.1.0

 


 

3. 원하는 학습 구성하기

딥러닝 모델을 학습시키기 위해서는 기본 설정 파일을 로드하고, 모델 정의 및 데이터 전처리 파이프라인을 설정하는 과정이 필요합니다. 이번 포스팅에서는 YOLO 모델을 위한 학습 설정을 구성하는 방법에 대해 설명하겠습니다.

 

1) 모델 선택 및 설정

먼저, 원하는 모델을 설정하는 방법을 알아보겠습니다. _base_ 부분에서 사용할 모델을 지정할 수 있습니다. 이 예시에서는 YOLO 모델을 선택하였습니다. 아래와 같은 방식으로 YOLO 모델의 기본 설정 파일을 로드합니다.

_base_ = './configs/yolo/yolov3_d53_8xb8-320-273e_coco.py'

 

mmdection/configs 파일을 보면 수 많은 모델을 볼 수 있습니다.

그 중에 내가 원하는 모델을 가지고 와서 학습을 진행 할 수 있습니다.

 

 

2) 훈련 스크립트 작성하기

YOLO 모델을 훈련시키기 위한 코드를 작성하고, 이를 별도의 Python 파일로 저장합니다.
파일 이름을 yolo_train.py로 설정합니다. 이 파일에는 앞서 설정한 모델과 데이터 파이프라인, 훈련 설정 등을 포함합니다.

# 기본 설정 파일 로드
_base_ = './configs/yolo/yolov3_d53_8xb8-320-273e_coco.py'

# 모델 정의
model = dict(
    data_preprocessor=dict(
        # 객체 탐지 사용을 위한 설정
        pad_mask=False,  # mask 사용 false
        batch_augments=None  # 배치 단위 증강 none
    )
)

# class 변경
metainfo = {
    'classes': ("General trash", "Paper", "Paper pack", "Metal", "Glass",
                "Plastic", "Styrofoam", "Plastic bag", "Battery", "Clothing"),
}

train_pipeline = [
    dict(type='LoadImageFromFile', backend_args=_base_.backend_args),  # 파일로부터 이미지를 로드
    dict(type='LoadAnnotations', with_bbox=True, with_mask=False),  # 바운딩 박스 정보를 포함한 어노테이션 로드, mask 는 false
    dict(type='PackDetInputs')  # 모델에 입력하기 위해 데이터를 포장
]

data_root = '../dataset'  # dataset root

# train data
train_dataloader = dict(
    dataset=dict(
        _delete_=True,
        metainfo=metainfo,  # 클래스 정보와 팔레트 설정
        type=_base_.dataset_type,  # 사용할 데이터셋의 유형, 기본 설정에서 정의된 dataset_type 사용
        data_root=data_root,  # dataset root
        ann_file='train.json',  # 학습에 사용할 어노테이션
        data_prefix=dict(img=data_root),  # 이미지 파일이 위치한 경로
        filter_cfg=dict(filter_empty_gt=False, min_size=32),  # 필터 설정
        pipeline=train_pipeline,  # augmentation
        backend_args=_base_.backend_args),  # 데이터 로드 방식 정의
    batch_size=2  # 배치사이즈 설정
)

# 훈련 설정 추가
train_cfg = dict(
    type='EpochBasedTrainLoop',  # 에폭 기반 훈련 루프 사용
    max_epochs=50,  # 설정할 에폭 수
)

# validation, test 없음
val_dataloader = None
val_cfg = None
val_evaluator = None
test_dataloader = None
test_cfg = None
test_evaluator = None

work_dir = './work_dirs/yolo'  # 저장할 workdir

 

 

3. 훈련 실행하기

이제 MMDetection 폴더에서 YOLO 모델 훈련을 시작할 준비가 되었습니다.
터미널을 열고, 다음 명령어를 입력하여 훈련을 시작합니다:

python tools/train.py yolo_train.py

 

위의 사진 처럼 학습이 진행 되는 것을 볼 수 있습니다.

 

이제 남은 mmdection 모델 사용법은

1. train/val 나눠서 학습 진행하는 방법

2. 학습된 파일을 tensorborad 에 적용하는 방법

3. 최신 SOTA 모델을 어떻게 검색하고 적용하는 방법

4. 내가 만든 모델을 추론하고, csv 파일로 만드는 방법

 

위의 4가지 방법도 다음 블로그에서 작성하겠습니다.

 

감사합니다.

 

728x90
반응형

댓글