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의 기본 환경설정을 추가
# ... ...
환경설정 잘하는 법¶
“코드”라고 생각하고 작성하기: 환경설정을 복사/복제하지 말고
_BASE_
를 사용하여 여러 환경설정 간 공통 부분을 공유하십시오.복잡하지 않게 작성하기: 실험에 영향을 주지 않는 키를 포함하지 마십시오.