Faster R-CNN 기반 표적 탐지

1. 저자 소개

Yang Jinpeng, 남, 2022 대학원생, Xi'an Polytechnic University 전자 정보 학부
연구 방향: Machine Vision and Artificial Intelligence
Email: [email protected]

Lu Zhidong, 남, School of Electronic Information, Xi'an Polytechnic University, 2022 대학원생, Zhang Hongwei의 인공 지능 연구 그룹
연구 방향: 머신 비전 및 인공 지능
이메일: [email protected]

2. Faster RCNN의 기본 프레임워크

여기에 이미지 설명 삽입
더 빠른 RCNN 탐지 부분은 주로 네 가지 모듈로 나눌 수 있습니다:
(1) conv 레이어. 즉, 특징 추출 네트워크를 사용하여 특징을 추출합니다. 이미지의 특징 맵은 후속 RPN 레이어 및 제안을 위해 일련의 conv+relu+pooling 레이어를 통해 추출됩니다.
(2) RPN(지역 제안 네트워크). 즉, 이전 RCNN 버전의 선택적 검색을 대체하고 후보 상자를 생성하는 데 사용되는 지역 후보 네트워크입니다. 여기서 작업에는 두 부분이 있는데, 하나는 분류입니다: 모든 사전 설정 앵커가 양수인지 음수인지 판단(즉, 앵커에 대상이 있는지 여부, 두 가지 분류) 경계 상자 회귀도 있습니다. 보다 정확한 제안을 받을 수 있습니다. 따라서 RPN 네트워크는 탐지의 일부, 즉 대상이 있는지 여부를 판단하고(여기서는 특정 범주를 판단하지 않음) 프레임을 더 정확하게 만들기 위해 앵커를 수정하는 것과 같습니다.
(3) RoI 풀링. 즉, RPN에 의해 ​​생성된 Proposal(각 상자의 좌표)을 수집하여 (1)의 특징 맵에서 추출(해당 위치에서 차감)하는 데 사용되는 관심 영역 풀링(SPP net의 공간 피라미드 풀링), 제안 기능 맵을 생성하고 후속 완전 연결 계층으로 보내 분류(특히 어떤 카테고리) 및 ​​회귀를 계속합니다.
(4) 분류 및 회귀. 제안 기능 맵을 사용하여 특정 범주를 계산하고 또 다른 경계 상자 회귀를 수행하여 감지 프레임의 최종 정확한 위치를 얻습니다.
여기에 이미지 설명 삽입

3. 모델 교육 및 테스트

3.1 데이터세트

훈련을 하기 전에 데이터 세트를 만들고 데이터 준비를 해야 합니다. 유선 수신 및 급전 장치를 사용하여 실시간으로 사진을 수집하고 이미지 크기는 1536*1280이며 표시하고 최종적으로 네트워크로 전송하여 학습합니다. 감지의 전계 효과를 시뮬레이션하기 위해 실의 네 가지 일반적인 결함인 루프, 헤어볼, 포크 및 헤어 결함을 구분하고 데이터 세트를 마킹 소프트웨어로 표시합니다. 주석 파일은 VOC2007/Annotations에, 이미지 파일은 VOC2007/JPEGImages 디렉토리에, ImageSet\Main에 4개의 txt 파일, 즉 trainval.txt(훈련 및 검증 세트의 합계), train.txt가 생성됩니다. (훈련 세트) , val.txt(검증 세트), test.txt(테스트 세트), 훈련 세트/검증 세트/테스트 세트의 비율은 6:2:2입니다.
여기에 이미지 설명 삽입

3.2 환경 구성

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

3.3 훈련 매개변수

(1) lib/datasets/pascal_voc.py를 수정하고 범주를 자신의 범주로 변경합니다. 여기서 한 가지 주의할 점은 여기의 카테고리와 이전 카테고리 이름은 모두 소문자로 하는 것이 가장 좋다는 것입니다. 대문자인 경우 keyError 오류가 보고됩니다. (2) 실제 요구 사항 및 하드웨어에 따라 코드에서 관련 매개변수를 설정합니다
여기에 이미지 설명 삽입
. –num-classes, –data-path 및 –weights-path 및 기타 매개변수를 수정해야 하는 조건, 훈련 프로세스가 그림에 표시됩니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
예상 결과는 그림에 표시됩니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

3.4 훈련 매개변수

PicoDet 테스트
훈련 과정과 예측 결과를 보여주는 사진
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
YOLOv3 테스트
훈련 과정과 예측 결과를 보여주는 사진
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

3.5 코드 표시

import os
import time
import torch
import torchvision.transforms as transforms
import torchvision
from PIL import Image
from matplotlib import pyplot as plt

# 获取当前路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")


# classes_coco类别信息
COCO_INSTANCE_CATEGORY_NAMES = [
    '__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
    'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign',
    'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
    'elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A', 'N/A',
    'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
    'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket',
    'bottle', 'N/A', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl',
    'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
    'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'N/A', 'dining table',
    'N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
    'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'N/A', 'book',
    'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush'
]


if __name__ == "__main__":

    # 检测图片路径
    path_img = os.path.join(BASE_DIR, "bear.jpg")

    # 预处理
    preprocess = transforms.Compose([
        transforms.ToTensor(),
    ])

    input_image = Image.open(path_img).convert("RGB")
    img_chw = preprocess(input_image)

    # 加载预训练模型
    model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
    model.eval()

    # if torch.cuda.is_available():
    #     img_chw = img_chw.to('cuda')
    #     model.to('cuda')

    # 前向传播
    input_list = [img_chw]
    with torch.no_grad():
        tic = time.time()
        print("input img tensor shape:{}".format(input_list[0].shape))
        output_list = mode

3.6 문제 및 분석

학습 매개변수 디버깅 및 환경 구성
학습 전에 필요한 환경을 잘 구성해야 함과 동시에 호출된 라이브러리 버전이 요구 사항을 충족하는지 여부와 각 버전 간에 일대일 대응이 있는 경우도 있음 도서관. 훈련 중 매개변수의 디버깅은 매우 중요하며 모델의 탐지 효과에 매우 중요한 영향을 미치므로 다양한 매개변수가 모델에 미치는 영향을 탐색하기 위해 더 많은 실험을 시도하고 수행해야 합니다.
데이터 세트 준비
데이터 세트 수집 과정에서 가능한 한 외부 간섭을 피하고 동시에 조명 방법 및 밝기 등에 주의하여 물체 및 결함이 있는지 확인해야 합니다. 명확하게 수집할 수 있습니다. 전체 프로젝트에서 데이터 세트가 그다지 중요하지 않은 것처럼 보이지만 데이터 세트가 명확하게 수집되고 올바르게 표시되었는지 여부는 탐지 결과에 큰 영향을 미칩니다.

참조(참조할 수 있는 링크 및 인용)

1. 링크: [http://t.csdn.cn/JrWZ1]
2. 링크: [http://t.csdn.cn/TjQov]

Supongo que te gusta

Origin blog.csdn.net/m0_37758063/article/details/130976850
Recomendado
Clasificación