mmcv?

ad_official·2025년 2월 4일
0

딥러닝 기초

목록 보기
2/5

1. mmcv가 뭔가?

  • mmcv라는 이름은
    • OpenMMLab 생태계 내의 다른 라이브러리들(예: MMDetection, MMSegmentation 등)과의 일관성을 유지하기 위해 붙여진 접두어 "MM"과,
    • Computer Vision의 약자인 "CV"를 결합한 것
  • 더불어 "MM"은 OpenMMLab 팀이 만든 다양한 프로젝트와 도구들에서 공통적으로 사용하는 명칭으로, 해당 생태계의 통합성과 브랜드 아이덴티티를 강화하기 위한 목적도 있습니다.

1.0. 결론

  • 구성 관리, 데이터 처리, 학습 루프 관리, 모듈 등록, 고성능 연산 지원 등 여러 기능을 통해
    • MMDetection, MMSegmentation, MMPose 등 OpenMMLab의 다양한 프로젝트의 기반을 이루고 있음,


1.1. 구성(Configuration) 관리

  • 유연한 설정 시스템:
    mmcv는 모델 구조, 데이터셋, 학습 스케줄 등 다양한 실험 설정을 YAML 또는 Python 스크립트 형태의 구성 파일로 관리할 수 있게 해줍니다.
    • 이를 통해 복잡한 모델 구성 요소들을 손쉽게 정의, 수정 및 재사용할 수 있습니다.


1.2. 데이터 입출력 및 전처리

  • 파일 I/O 및 데이터 처리:
    이미지와 비디오 데이터를 읽고 쓰거나 전처리하는 다양한 함수를 제공
    예를 들어,
    • 이미지 읽기/쓰기, 색상 공간 변환, 리사이즈, 회전, 크롭 등의 기능이 포함


1.3. 모델 학습 및 평가 도구

  • PyTorch 러너와 Hook 시스템:
    mmcv는 PyTorch 기반의 학습 루프를 보다 체계적으로 관리할 수 있도록 러너(Runner)Hook 메커니즘을 제공
    이를 통해 학습 과정 중 다양한 이벤트(예: 에포크 시작/종료, 배치 처리 등)에 대해 커스텀 동작을 삽입할 수 있습니다.
  • 다양한 CNN 구성 요소 및 초기화:
    • 여러 신경망 레이어 및 모델 구성요소들을 구현해두어,
    • 연구자가 자신의 모델을 쉽게 구성하고, 고품질의 초기화 기법 등을 적용할 수 있도록 돕습니다.


1.4. 모듈화 및 확장성 (Registry 시스템)

  • Registry 기능:
    • mmcv의 Registry 시스템모델, 데이터셋, 손실 함수 등 다양한 모듈들문자열 키로 등록하고 관리할 수 있게 해줌
    • 이를 통해 코드의 모듈화와 재사용성이 크게 향상되며,
    • 설정 파일만으로도 손쉽게 원하는 모듈을 호출하고 인스턴스화할 수 있습니다.
  • 커스터마이징 용이:
    • 사용자는 기존 Registry를 확장하거나 자신만의 모듈을 등록하여,
    • 특정 연구 목적에 맞는 커스텀 기능을 손쉽게 구현할 수 있음


1.5. 고성능 연산 지원

  • CUDA 연산 최적화:
    • mmcv는 CPU와 CUDA에서 효율적으로 동작하는 다양한 연산(op)을 제공
    • 특히, 컴퓨터 비전 작업에서 자주 사용되는 연산들을 최적화하여, 모델 학습과 추론 시 성능을 크게 향상시킬 수 있도록 설계
  • 다양한 플랫폼 지원:
    • Linux, Windows, macOS 등 다양한 운영체제에서 사용 가능하며, CUDA 지원이 가능한 환경에서는 더욱 빠른 연산을 경험할 수 있습니다.


2. 설치?

설치

mmcv에는 두 가지 버전이 있습니다:

  • mmcv (full version):
    모든 기능과 다양한 CUDA 연산을 기본적으로 제공하는 종합 버전입니다. 빌드에 시간이 더 걸릴 수 있습니다.
  • mmcv-lite:
    CUDA 연산 없이 다른 기능들은 모두 제공하는 경량 버전으로, mmcv<1.0.0과 유사합니다. CUDA 연산이 필요 없는 경우에 유용합니다.

주의:
동일한 환경에 두 버전을 모두 설치하면 ModuleNotFound와 같은 오류가 발생할 수 있습니다. 한 버전을 제거한 후 다른 버전을 설치해야 합니다. CUDA 사용이 가능한 경우에는 전체 기능을 제공하는 full version을 설치하는 것이 권장됩니다.


mmcv 설치

mmcv를 설치하기 전에, PyTorch가 PyTorch 공식 설치 가이드를 따라 성공적으로 설치되었는지 확인하세요. 아래 명령어를 실행하여 확인할 수 있습니다:

python -c 'import torch;print(torch.__version__)'

버전 정보가 출력되면 PyTorch가 설치된 것입니다.


mim을 사용하여 설치 (권장)

mim은 OpenMMLab 프로젝트의 패키지 관리 도구로, mmcv 설치를 쉽게 만들어줍니다.

  1. 먼저 mim을 설치합니다.

    pip install -U openmim
  2. mim을 사용하여 mmcv를 설치합니다.

    mim install mmcv

만약 위의 설치 명령이 .whl 파일 대신 .tar.gz 형식의 소스 패키지를 사용한다면, 이는 사용 중인 PyTorch, CUDA, 또는 mmcv 버전에 해당하는 미리 빌드된 패키지가 없기 때문입니다. 이 경우 소스에서 mmcv를 빌드할 수 있습니다.


미리 빌드된 패키지를 이용한 설치 로그

미리 빌드된 패키지를 이용한 설치 로그와 소스 패키지를 이용한 설치 로그는 따로 제공됩니다.

예를 들어, mmcv 버전 2.0.0을 설치하려면 다음 명령어를 사용할 수 있습니다:

mim install mmcv==2.0.0

참고:
만약 최소 컨테이너 환경이나 GUI가 없는 서버에서 opencv-python 대신 opencv-python-headless를 사용하고 싶다면, mmcv를 설치하기 전에 opencv-python-headless를 먼저 설치하여 opencv-python의 설치를 건너뛸 수 있습니다.

또한, 의존성 라이브러리 설치 시간이 너무 오래 걸린다면 아래와 같이 pypi 소스를 지정할 수 있습니다:

mim install mmcv -i https://pypi.tuna.tsinghua.edu.cn/simple

설치가 완료된 후 check_installation.py를 실행하여 mmcv-full 설치 상태를 확인할 수 있습니다.


pip을 사용하여 설치

CUDA와 PyTorch 버전을 확인하려면 아래 명령어를 실행하세요:

python -c 'import torch;print(torch.__version__);print(torch.version.cuda)'

시스템 유형, CUDA 버전, PyTorch 버전 및 mmcv 버전에 따라 적절한 설치 명령어를 선택합니다.

예시 (Linux, CUDA 12.1, PyTorch 2.4.x, mmcv 2.2.0):

pip install mmcv==2.2.0 -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.4/index.html

만약 위 드롭다운 목록에서 해당하는 버전을 찾지 못하면, 미리 빌드된 패키지가 없는 것이므로 소스에서 mmcv를 빌드할 수 있습니다.

참고:
mmcv는 PyTorch 1.x.0에서만 컴파일됩니다. 호환성은 보통 1.x.0과 1.x.1 사이에서 유지되므로, 예를 들어 PyTorch 버전이 1.8.1인 경우, PyTorch 1.x.0으로 컴파일된 mmcv를 설치해도 잘 작동합니다.

참고:
만약 최소 컨테이너 환경이나 GUI가 없는 서버에서 opencv-python-headless를 사용하고자 한다면, mmcv를 설치하기 전에 이를 먼저 설치하면 opencv-python의 설치를 건너뛸 수 있습니다.

또한, 의존성 라이브러리 설치 시간이 너무 오래 걸린다면 아래와 같이 pypi 소스를 지정할 수 있습니다:

mim install mmcv -i https://pypi.tuna.tsinghua.edu.cn/simple

설치 후 check_installation.py를 실행하여 mmcv 설치를 확인할 수 있습니다.


Docker와 함께 mmcv 사용하기

로컬 저장소를 사용하여 빌드하는 경우:

git clone https://github.com/open-mmlab/mmcv.git && cd mmcv
docker build -t mmcv -f docker/release/Dockerfile .

원격 저장소를 사용하여 빌드하는 경우:

docker build -t mmcv https://github.com/open-mmlab/mmcv.git#main:docker/release

기본적으로 Dockerfile은 mmcv-full의 최신 릴리즈 버전을 설치하지만, 원하는 mmcv 버전을 지정할 수 있습니다.

예를 들어, mmcv 버전을 2.0.0으로 지정하여 빌드하려면:

docker image build -t mmcv -f docker/release/Dockerfile --build-arg MMCV=2.0.0 .

PyTorch와 CUDA의 다른 버전을 사용하려면 해당 옵션들도 함께 전달할 수 있습니다. 예를 들어, PyTorch 1.11과 CUDA 11.3으로 빌드하려면:

docker build -t mmcv -f docker/release/Dockerfile \
    --build-arg PYTORCH=1.11.0 \
    --build-arg CUDA=11.3 \
    --build-arg CUDNN=8 \
    --build-arg MMCV=2.0.0 .

더 많은 PyTorch와 CUDA 버전은 dockerhub/pytorch에서 확인할 수 있습니다.


mmcv-lite 설치

PyTorch 관련 모듈을 사용해야 한다면, PyTorch가 성공적으로 설치되었는지 PyTorch 공식 설치 가이드를 참고하여 확인한 후, mmcv-lite를 설치합니다.

pip install mmcv-lite

profile
ad_official

0개의 댓글