>  기사  >  기술 주변기기  >  GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

WBOY
WBOY앞으로
2023-04-09 18:41:101162검색

객체 감지는 컴퓨터 비전 분야의 기본 작업입니다. 좋은 Model Zoo 없이 어떻게 할 수 있나요?

오늘은 간단하고 사용하기 쉬운 표적 탐지 알고리즘 모델 라이브러리 miemiedetection을 소개하겠습니다. 현재 GitHub

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

코드 링크: https://github.com/miemie2013/miemiedetection에서 별 130개 이상을 얻었습니다.

miemiedetection YOLOX를 기반으로 개발된 개인 탐지 라이브러리로, PPYOLO, PPYOLOv2, PPYOLOE, FCOS 등의 알고리즘도 지원합니다.

YOLOX의 우수한 아키텍처 덕분에 miemiedection의 알고리즘 훈련 속도는 매우 빠르며 데이터 읽기는 더 이상 훈련 속도의 병목 현상이 아닙니다.

코드 개발에 사용되는 딥 러닝 프레임워크는 변형 가능한 컨볼루션 DCNv2, Matrix NMS 및 기타 어려운 연산자를 구현하고 단일 머신 단일 카드, 단일 머신 멀티 카드 및 다중 머신 멀티 카드를 지원하는 pyTorch입니다. 훈련 모드(Linux 시스템을 사용하는 멀티 카드 훈련 모드 권장)는 Windows 및 Linux 시스템을 지원합니다.

그리고 miemiedetection은 설치가 필요 없는 탐지 라이브러리이기 때문에 사용자가 직접 코드를 변경하여 실행 로직을 변경할 수 있어 라이브러리에 새로운 알고리즘을 추가하는 것도 쉽습니다.

저자는 앞으로 더 많은 알고리즘 지원(및 여성 의류)이 추가될 것이라고 밝혔습니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

알고리즘은 복제가 보장됩니다

. 가장 중요한 것은 정확도가 기본적으로 원본과 동일해야 한다는 것입니다.

먼저 PPYOLO, PPYOLOv2, PPYOLOE의 세 가지 모델을 살펴보겠습니다. 저자는 모두 손실 정렬과 그래디언트 정렬에 대한 실험을 거쳤습니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

증거 보존을 위해 소스 코드에서 *.npz 부분을 주석 처리하여 읽고 쓰는 모습도 볼 수 있는데, 이는 모두 정렬 실험에서 남은 코드입니다.

그리고 저자는 연주 정렬 과정도 자세히 기록했습니다. 초보자에게는 이 경로를 따르는 것도 좋은 학습 과정입니다!

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

모든 훈련 로그도 기록되어 창고에 보관되는데, 이는 PPYOLO 시리즈 알고리즘 재현의 정확성을 입증하기에 충분합니다!

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

최종 훈련 결과는 재현된 PPYOLO 알고리즘이 원래 창고와 동일한 손실 및 기울기를 갖는 것으로 나타났습니다.

또한 저자는 원본 창고 및 miemiedection 전이 학습 voc2012 데이터 세트를 사용하려고 시도했으며 동일한 정확도를 얻었습니다(동일한 하이퍼 매개 변수 사용).

원래 구현과 동일, 동일한 학습률, 동일한 학습률 감소 전략 Warm_piecewisedecay(PPYOLO 및 PPYOLOv2에서 사용) 및 Warm_cosinedecay(PPYOLOE에서 사용), 동일한 지수 이동 평균 EMA, 동일한 데이터 전처리 동일한 매개변수 L2 가중치 감쇠, 동일한 손실, 동일한 기울기 및 동일한 사전 훈련된 모델을 사용하여 전이 학습은 동일한 정확도를 달성했습니다.

모두가 멋진 경험을 할 수 있도록 충분한 실험과 테스트를 거쳤습니다!

No 998, no 98, 별표를 클릭하고 모든 표적 탐지 알고리즘을 무료로 집에 가져가세요!

모델 다운로드 및 변환

모델을 실행하려면 매개변수가 매우 중요합니다. 저자는 Baidu Netdisk를 통해 직접 다운로드할 수 있는 변환된 사전 훈련 pth 가중치 파일을 제공합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

링크: https://pan.baidu.com/s/1ehEqnNYKb9Nz0XNeqAcwDw

추출 코드: qe3i

또는 아래 단계에 따라 다운로드하세요.

1단계, 웨이트 파일을 다운로드하세요. , 프로젝트 루트 디렉터리에서 실행합니다(즉, 파일을 다운로드합니다. Windows 사용자는 Thunder 또는 브라우저를 사용하여 wget 뒤의 링크를 다운로드할 수 있습니다. 아름다움을 보여주기 위해 ppyoloe_crn_l_300e_coco만 예로 사용됩니다):

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

pretrained라는 단어가 있는 모델은 ImageNet에서 사전 학습된 백본 네트워크입니다. PPYOLO, PPYOLOv2 및 PPYOLOE는 COCO 데이터 세트를 학습하기 위해 이러한 가중치를 로드합니다. 나머지는 COCO에서 사전 훈련된 모델입니다.

두 번째 단계에서는 가중치를 변환하고 프로젝트 루트 디렉터리에서 실행합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

각 매개변수의 의미는 다음과 같습니다.

- -f는 사용된 구성 파일을 나타냅니다.

- -c는 읽은 소스 가중치 파일을 나타냅니다. (저장됨) pytorch 가중치 파일;

- -nc는 데이터 세트의 범주 수를 나타냅니다.

- --only_backbone은 True인 경우에만 백본 네트워크의 가중치를 변환하는 것을 의미합니다. 실행 후 변환된 *.pth 가중치 파일은 프로젝트 루트 디렉터리에 저장됩니다.

단계별 튜토리얼

다음 명령에서는 대부분 모델의 구성 파일을 사용하므로 처음에 구성 파일에 대해 자세히 설명해야 합니다.

mmdet.exp.base_exp.BaseExp는 구성 파일 기본 클래스입니다. 모델을 얻는 방법을 나타내는 get_model(), 얻는 방법을 나타내는 get_data_loader()와 같은 여러 추상 메서드를 선언하는 추상 클래스입니다. 훈련된 데이터로더인 get_optimizer()는 최적화 프로그램을 얻는 방법 등을 나타냅니다.

mmdet.exp.datasets.coco_base.COCOBaseExp는 데이터 세트의 구성이며 BaseExp를 상속합니다. 데이터 세트의 구성만 제공합니다. 이 웨어하우스는 COCO 주석 형식의 데이터 세트 교육만 지원합니다!

다른 주석 형식의 데이터 세트는 훈련 전에 COCO 주석 형식으로 변환해야 합니다(너무 많은 주석 형식이 지원되면 작업량이 너무 커집니다). 맞춤형 데이터 세트는 miemieLabels를 통해 COCO 라벨 형식으로 변환될 수 있습니다. 모든 감지 알고리즘 구성 클래스는 COCOBaseExp를 상속합니다. 이는 모든 감지 알고리즘이 동일한 데이터 세트 구성을 공유한다는 것을 의미합니다.

COCOBaseExp의 구성 항목은 다음과 같습니다.

그중

- self.num_classes는 데이터 세트의 범주 수를 나타냅니다. GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

- self.data_dir은 숫자를 나타냅니다. 데이터 세트 루트 디렉토리의 카테고리

- self.cls_names는 데이터 세트의 카테고리 이름 파일 경로를 나타내며, 한 줄은 카테고리 이름을 나타냅니다. 사용자 정의 데이터 세트인 경우 새 txt 파일을 생성하고 카테고리 이름을 편집한 다음 이를 가리키도록 self.cls_names를 수정해야 합니다.

- self.ann_folder는 주석 파일의 루트 디렉터리를 나타냅니다. 데이터 세트는 self.data_dir 디렉토리에 있어야 합니다.

- self.train_ann은 self.ann_folder 디렉토리에 있어야 하는 데이터 세트의 훈련 세트의 주석 파일 이름을 나타냅니다.

- self.val_ann은 데이터 세트의 검증 세트에 대한 주석을 나타냅니다. 파일 이름은 self.ann_folder 디렉토리에 있어야 합니다.

- self.train_image_folder는 데이터 세트의 훈련 세트의 이미지 폴더 이름을 나타냅니다. 데이터 세트이며 self.data_dir 디렉토리에 있어야 합니다.

- self.val_image_folder는 self.data_dir 디렉토리에 있어야 하는 데이터 세트의 검증 세트의 이미지 폴더 이름입니다.

VOC 2012 데이터 세트의 경우 데이터 세트 구성을 다음과 같이 수정해야 합니다.

또한 다음에서 self.num_classes 및 self.data_dir의 구성을 수정할 수도 있습니다. exps/ppyoloe/ppyoloe_crn_l_voc2012.py와 같은 서브클래스이므로 COCOBaseExp의 구성을 덮어쓰게 됩니다(잘못됨).

앞서 언급한 모델을 다운로드한 후 VOC2012 데이터 세트의 self.data_dir 디렉터리에 새로운 폴더 annotes2를 생성하고 이 폴더에 voc2012_train.json 및 voc2012_val.json을 넣습니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

마지막으로 COCO 데이터 세트, VOC2012 데이터 세트 및 이 프로젝트의 배치 위치는 다음과 같아야 합니다.

데이터 세트의 루트 디렉터리와 miemiedetection-master는 동일한 레벨 디렉터리입니다. . 저는 개인적으로 miemiedetection-master에 데이터 세트를 넣는 것을 권장하지 않습니다. 그렇지 않으면 PyCharm을 열 때 용량이 커질 것입니다. 게다가 여러 프로젝트(예: mmDetection, PaddleDetection, AdelaiDet)가 데이터 세트를 공유하는 경우 데이터 세트 경로와 프로젝트를 설정할 수 있습니다. 이름은 중요하지 않습니다.

mmdet.exp.ppyolo.ppyolo_method_base.PPYOLO_Method_Exp는 특정 알고리즘의 모든 추상 메소드를 구현하는 클래스입니다. 모든 추상 메소드를 구현하는 COCOBaseExp를 상속합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

exp.ppyolo.ppyolo_r50vd_2x.Exp는 PPYOLO_Method_Exp를 상속하는 PPYOLO 알고리즘의 Resnet50Vd 모델의 최종 구성 클래스입니다.

PPYOLOE의 구성 파일도 이 구조와 유사합니다.

Prediction

먼저 입력 데이터가 그림이면 프로젝트 루트 디렉터리에서 실행합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

각 매개 변수의 의미는 다음과 같습니다.

- -f는 사용되는 내용을 의미합니다. 구성 파일 ;

- -c는 읽은 가중치 파일을 나타냅니다.

- --path는 이미지의 경로를 나타냅니다.

- --conf는 점수 임계값을 나타냅니다. 이보다 높은 예측 상자만 그립니다.

- --tsize는 예측 중에 이미지 크기를 --tsize로 조정하는 해상도를 나타냅니다.

예측이 완료된 후 콘솔은 결과 이미지의 저장 경로를 인쇄하고 사용자는 그것을 보세요. 예측을 위해 훈련 사용자 정의 데이터 세트에 저장된 모델을 사용하는 경우 -c를 모델 경로로 수정하면 됩니다.

폴더의 모든 사진을 예측하는 경우 프로젝트 루트 디렉터리에서 실행하세요.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

Change --path를 해당 사진 폴더의 경로로 변경하세요.

Training COCO2017 데이터 세트

ImageNet 사전 교육 백본 네트워크 교육 COCO 데이터 세트를 읽는 경우 프로젝트 루트 디렉터리에서 실행하세요.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

한 명령으로 단일 머신 8- 물론, 전제는 실제로 독립형 8카드 슈퍼컴퓨터를 가지고 있다는 것입니다.

각 매개변수의 의미는 다음과 같습니다.

-f는 사용된 구성 파일을 나타냅니다.

-d는 그래픽 카드 수를 나타냅니다.

-b는 훈련 중 배치를 나타냅니다. 모든 카드);

-eb는 평가 중 배치 크기를 나타냅니다(모든 카드에 대해).

-c는 읽기 가중치 파일을 나타냅니다.

--fp16, 자동 혼합 정밀도 훈련; --num_machines, 단일 머신에서 여러 카드를 사용하여 훈련하는 것이 좋습니다.

--resume은 복구 훈련인지 여부를 나타냅니다.

맞춤 데이터 세트 훈련

권장 자료 수렴이 빠르기 때문에 사전 훈련된 COCO 가중치를 훈련에 사용합니다.

위의 VOC2012 데이터 세트를 예로 들어 보겠습니다. ppyolo_r50vd 모델의 경우 머신 1개와 카드 1개인 경우 다음 명령을 입력하여 학습을 시작합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.일부 학습이 중단되는 경우 이전에 저장한 모델의 학습을 재개하려면 모델을 읽으려는 경로에 -c를 수정하고 --resume 매개변수를 추가하면 됩니다.

머신이 2대이고 카드가 2개인 경우, 즉 각 머신에 카드가 1장인 경우 머신 0에 다음 명령을 입력하세요.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다. 머신 1에 다음 명령을 입력하세요.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다. 위 두 명령의 192.168.0.107을 머신 0의 LAN IP로 변경하면 됩니다.

머신 1개와 카드 2개인 경우 다음 명령을 입력하여 훈련을 시작합니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다. 전이 학습 VOC2012 데이터 세트, ppyolo_r50vd_2x(0.50:0.95)의 측정된 AP는 0.59+에 도달할 수 있습니다. AP(0.50)는 0.82+에 도달할 수 있고, AP(소형)는 0.18+에 도달할 수 있습니다. 단일 카드이든 여러 장의 카드이든 관계없이 이 결과를 얻을 수 있습니다.

전이 학습 중에는 PaddleDetection과 동일한 정확도와 수렴 속도를 갖습니다. 두 가지의 훈련 로그는 train_ppyolo_in_voc2012 폴더에 있습니다.

ppyoloe_l 모델인 경우 단일 머신에서 다음 명령을 입력하여 학습을 시작합니다(백본 네트워크 동결)

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다. 전송 학습 VOC2012 데이터 세트, ppyoloe_l의 측정된 AP(0.50:0.95 )는 0.66+에 도달할 수 있고, AP(0.50)는 0.85+에 도달할 수 있으며, AP(소)는 0.28+에 도달할 수 있습니다.

평가

명령어 및 구체적인 매개변수는 다음과 같습니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

프로젝트 루트 디렉터리에서 실행한 결과는 다음과 같습니다.

GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.

가중치 변환 후 약 0.4% 정도 정확도가 약간 손실됩니다.

위 내용은 GitHub 오픈 소스 130+Stars: PPYOLO 시리즈를 기반으로 표적 탐지 알고리즘을 재현하는 방법을 단계별로 가르쳐줍니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제