Detectron 에서 config 파일 의 설명
3467 단어 딥 러 닝 관련(cs 231 n)
이 블 로 그 는 detectron 을 사용 하 는 과정 에서 겪 었 던 문제 들 을 정리 하고 상세 한 절차 지 도 를 하지 않 습 니 다.
1.Detectron 은 무엇 입 니까?detectron 은 페 이 스 북 AI 리 서 치 의 오픈 소스 프로젝트 다.주로 faster RCNN 시리즈 의 대신 들 이 마스크 RCNN,RetinaNet,Faster RCNN,RPN 등 알고리즘 을 한 프레임 에 모 아 연구자 들 이 편리 하 게 사용 할 수 있 도록 했다.그것 의 네트워크 는 caffe 2 에서 운행 된다.목표 탐지 임무 에 있어 서 는 의심 할 여지없이 이기 적 이다.Detectron 의 github 주소
2.왜 detectron 을 선 택 했 나 요?편 한 것 외 에 도 편 하 다.많은 초보 자 들 이 caffe 에서 시 작 했 지만 구조 가 복잡 한 네트워크 에 있어 caffe 의 prototxt 파일 은 번 거 로 워 보이 고 매개 변수 설정 도 직관 적 이지 않다.한편,caffe 2 는 네트워크 구 조 를 바 꾸 지 않 은 상황 에서 매개 변수 설정,데이터 세트 변경 등 은 yml 파일 에서 더욱 직관 적 이다.인터넷 을 바 꾸 는 상황 은 개인 이 아직 알 지 못 했 으 니 나중에 알 고 보충 하 자.
3.detectron 은 어떻게 사용 합 니까?github 에 영어 지도 가 있 습 니 다.여 기 는 전송 문 입 니 다.여 기 는 모두 설치 에 성공 했다 고 가정 하면 사용 할 때 입 니 다.
python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo
우 리 는 여기에 구체 적 인 몇 개의 매개 변수의 의미 만 설명 한다.1)cfg 는 설정 파일 로 configs 디 렉 터 리 에 존재 합 니 다.Model 에서:
MODEL:
TYPE: generalized_rcnn
CONV_BODY: FPN.add_fpn_ResNet50_conv5_body
NUM_CLASSES: 81
FASTER_RCNN: True
그 중 초보 자의 주의 가 필요 한 것 은 NUMCLASSES,customer 의 데이터 세트 에 있어 서 이 값 은 분류 수+1 이 므 로 coco 에 있어 80+1 은 Mask 네트워크 에 모델 부분 을 더 해 야 합 니 다.
MASK_ON: True
GPU 개수 설정:
NUM_GPUS: 1
SOLVER 설정:
SOLVER:
WEIGHT_DECAY: 0.0001
LR_POLICY: steps_with_decay
BASE_LR: 0.0025
GAMMA: 0.1
MAX_ITER: 60000
STEPS: [0, 30000, 40000]
우선,훈련 횟수 에 있어 데이터 세트 가 크 지 않 으 면 수천 번 으로 설정 할 수 있 습 니 다.만약 에 coco 와 같은 데이터 양 이 많 으 면 몇 만 번 이 필요 합 니 다.default 의 단일 GPU 아래 는 60000 회 입 니 다.여기 서 특히 다 중 GPU 아래 MAXITER 의 횟수 는 GPU 의 수량 과 반비례 한다.또 하 나 는 BASE 입 니 다.LR 의 초기 학습 율 은 인터넷 훈련 에 매우 중요 하 다.너무 많이 하면 인터넷 이 최소 치 로 수렴 되 기 쉽 지 않 고 너무 작 으 면 인터넷 을 너무 느리게 수렴 할 수 있다.앞서 블 로그 에서 말 했 듯 이 보통 e-3 에서 e-4 를 취 하 는 것 이 안전 하 다.여기 서 0.0025 의 수 치 는 작가 가 네트워크 와 데이터 에 따라 여러 번 실험 한 비교적 좋 은 설정 이 라 고 추측 합 니 다.다 중 GPU 에서 BASELR 의 수 치 는 GPU 와 정비례 한다.
FPN 과 FAST RCNN 설정:
FPN:
FPN_ON: True
MULTILEVEL_ROIS: True
MULTILEVEL_RPN: True
FAST_RCNN:
ROI_BOX_HEAD: fast_rcnn_heads.add_roi_2mlp_head
ROI_XFORM_METHOD: RoIAlign
ROI_XFORM_RESOLUTION: 7
ROI_XFORM_SAMPLING_RATIO: 2
FPN 을 바 꾸 려 고 시 도 했 지만 모델 도 바 꿔 야 합 니 다.정상 적 인 상황 에서 이 두 가 지 는 customer 데이터 세트 에서 바 꿀 필요 가 없습니다.
Train 설정:
TRAIN:
WEIGHTS: https://s3-us-west-2.amazonaws.com/detectron/ImageNetPretrained/MSRA/R-50.pkl
DATASETS: ('coco_2014_train',)
SCALES: (500,)
MAX_SIZE: 833
BATCH_SIZE_PER_IM: 256
RPN_PRE_NMS_TOP_N: 2000 # Per FPN level
여기 서 주의해 야 할 것 은 DATASETS 에서 자신의 데이터 세트 는 datasetcatalog.py 에 서 는 데이터 세트 생 성 방식 github 에 도 상세 한 설명 이 있 습 니 다.
Test 설정:
TEST:
DATASETS: ('coco_2014_minival',)
SCALE: 500
MAX_SIZE: 833
NMS: 0.5
RPN_PRE_NMS_TOP_N: 1000 # Per FPN level
RPN_POST_NMS_TOP_N: 1000
그 중에서 주의해 야 할 것 은'SCALE 와 MAX'입 니 다.SIZE,다른 사람 에 게 서 경험 을 얻 고 inference 에서 정확 도 를 높이 려 는 방법 중 하 나 는 고해상도 로 바 꾸 는 것 입 니 다.그러면 이 두 가지 매개 변 수 는 바 꿔 야 합 니 다.또한 NMS 설정 은 비 밀집 장면 에서 중복 되 는 box 를 줄 일 수 있 습 니 다.