Yacs 환경설정

Detectron2는 일반적인 표준 동작을 얻는 데 사용할 수 있는 키-밸류 기반 환경설정 시스템을 제공합니다.

이 시스템은 YAML 및 yacs 를 사용합니다. YAML은 제약이 많은 언어이므로 환경설정을 통해 detectron2의 모든 기능을 사용할 수는 없습니다. 만일 환경설정을 통해 필요한 기능이 제공되지 않는 경우, detectron2의 API를 사용하여 코드를 작성하십시오.

이보다 강력한 LazyConfig 시스템 이 도입되면서, 저희는 더 이상 Yacs/Yaml 기반 환경설정 시스템에 새로운 기능/키를 추가하지 않고 있습니다.

기본 사용법

CfgNode 객체의 기본적인 사용법은 다음과 같습니다. 자세한 내용은 문서 를 참조하십시오.

from detectron2.config import get_cfg
cfg = get_cfg()    # detectron2의 기본 환경설정을 불러옴
cfg.xxx = yyy      # 사용자가 정의한 새 환경변수에 대한 설정값 추가
cfg.merge_from_file("my_cfg.yaml")   # 파일에서 값 로드

cfg.merge_from_list(["MODEL.WEIGHTS", "weights.pth"])   # str list에서 값을 로드할 수도 있음
print(cfg.dump())  # 환경설정을 포매팅하여 출력
with open("output.yaml", "w") as f:
  f.write(cfg.dump())   # 파일에 환경설정 저장

기본 Yaml 구문 외에도 기본 환경설정 파일을 먼저 로드하도록 _BASE_: base.yaml 필드를 환경설정 파일에 정의할 수 있습니다. conflict가 발생할 경우, 하위 환경설정이 기본 환경설정의 밸류를 덮어씁니다. 표준 모델 아키텍처의 경우, 몇 가지 환경설정이 기본으로 제공됩니다.

detectron2의 많은 내장 도구는 커맨드라인 명령을 통한 덮어쓰기를 허용하며, 이 때 입력된 키-밸류 쌍은 환경설정 파일의 기존 밸류를 덮어씁니다. 예를 들어, 다음과 같이 demo.py 를 사용할 수 있습니다.

./demo.py --config-file config.yaml [--other-options] \
  --opts MODEL.WEIGHTS /path/to/weights INPUT.MIN_SIZE_TEST 1000

detectron2에서 사용 가능한 환경설정 목록과 그 의미는 환경설정 참고자료 에서 확인하십시오.

프로젝트 환경설정

detectron2 라이브러리 외부에 있는 프로젝트는 자체 환경설정을 정의할 수 있으며, 프로젝트가 동작하기 위해 이를 추가해야 할 수 있습니다. e.g.:

from detectron2.projects.point_rend import add_pointrend_config
cfg = get_cfg()    # detectron2의 기본 환경설정을 불러옴
add_pointrend_config(cfg)  # pointrend의 기본 환경설정을 추가
# ... ...

환경설정 잘하는 법

  1. “코드”라고 생각하고 작성하기: 환경설정을 복사/복제하지 말고 _BASE_ 를 사용하여 여러 환경설정 간 공통 부분을 공유하십시오.

  2. 복잡하지 않게 작성하기: 실험에 영향을 주지 않는 키를 포함하지 마십시오.