首页 > 编程语言 >目标检测0:layman学习Faster-RCNN算法(基于VOC数据进行训练)

目标检测0:layman学习Faster-RCNN算法(基于VOC数据进行训练)

时间:2024-06-23 15:57:58浏览次数:3  
标签:Faster VOC 检测 模型 layman 目标 RCNN 输入

分享:

Bubbliiiing的学习小课堂博主的专栏《睿智的目标检测》中对Faster-RCNN有较为详细的描述。
CSDN  链接 :睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台
源代码下载   :https://github.com/bubbliiiing/faster-rcnn-pytorch
B站讲解链接:配置Tensorflow+Keras环境,搭建自己的Faster-RCNN目标检测平台
                        科普:什么是Faster-RCNN目标检测算法_哔哩哔哩_bilibili

VOA数据集:The PASCAL Visual Object Classes Challenge 2007 (VOC2007)

注:下面的交流内容会结合上面提到的源代码。

交流:

一、 略缩词

  1. RCNN:Region-based Convolutional Neural Network
  2. VOC: Visual Object Classes
  3. RPN:Region Proposal Network
  4. ROI:Regions of Interest
  5. IoU:  Intersection over Union
  6. NMS: Non-Maximum Suppression

 二、基本常识

1. 使用Faster-RCNN进行目标检测任务的具体执行过程

        这里放一张睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台里面的图片,以方便对以下文字内容的理解。

  • 输入图像:
    接收一张待检测的图像作为输入。
  • 特征提取:
    将整个图像缩放到固定大小(由于后续网络中有全连接层),然后输入到卷积神经网络(CNN)中进行特征提取,得到特征图((K×K)维×N层)。常用的Backbone网络有VGG、ResNet等。
  • 候选区域提取:
    构建区域建议网络(Region Proposal Network, RPN)对特征图假设为N×N×3)和预先设定的先验框假设每层特征图的每个维度有9个先验框)进行处理,生成一系列候选区域,即建议框/候选框。RPN网络会输出每个候选框的得分(表示该候选框是否包含目标物体的可能性)以及边界框的坐标信息。
  • 感兴趣区域(ROI)池化:
    将RPN网络生成的候选区域投影到特征图上,得到对应的特征矩阵。通过ROI池化层,将这些不同大小的特征矩阵缩放到统一大小(例如14x14),以便于后续的全连接层处理。
  • 目标分类和边界框回归:
    构建分类回归网络(classifier),将经过ROI池化后得到的特征向量输入到全连接层中,进行分类边界框回归。分类部分使用SoftMax分类器,判断每个候选区域所属的类别(包括背景类别)。边界框回归部分则用于微调候选区域的边界框,使其更准确地贴合目标物体的真实边界,即预测框
  • 非极大值抑制(NMS):
    在得到所有候选区域的类别和边界框后,使用非极大值抑制算法去除重叠度较高的候选区域,保留得分最高的候选区域作为最终的检测结果。
  • 输出结果:
    输出最终的检测结果,包括每个目标物体的类别、边界框坐标以及得分。

        总结:Faster-RCNN目标检测过程中需要构建的网络主要有ResNet50网络、RPN网络、classifier网络。并结合ROI池化层和非极大值抑制算法等技术手段,来实现目标检测。

2. Model.train_on_batch(input,label)

         model_all.train_on_batch 是深度学习框架(如 TensorFlow 的 Keras API)中的一个方法,用于在一个批次(batch)的数据上进行模型训练。当你调用这个方法时,它会根据提供的输入数据和对应的标签来更新模型的权重。以下是使用该方法的简要概述:

  • 输入数据:输入数据通常是一个列表,其中每个元素都是一个 numpy 数组或类似的数据结构(如 TensorFlow 张量)。在这个列表中,每个元素对应模型的一个输入分支。例如,在目标检测任务中,可能有一个输入分支用于整个图像,另一个输入分支用于特定区域的图像(ROI)。
  • 标签数据:标签数据也是一个列表,其中每个元素对应于模型的一个输出分支。这些标签通常是 numpy 数组或 TensorFlow 张量,包含用于监督学习的目标值。在目标检测中,这可能包括边界框坐标、类别标签等。
  • 前向传播:当 train_on_batch 被调用时,模型首先进行前向传播。输入数据通过模型的各个层进行传递,最终产生预测输出。这些预测输出与真实的标签数据进行比较,以计算损失。
  • 计算损失:对于模型的每个输出分支,都会有一个与之对应的损失函数。损失函数衡量了模型预测与真实标签之间的差异。所有输出分支的损失值通常会被组合成一个总的损失值,这通常是通过加权求和来完成的。
  • 反向传播:一旦损失被计算出来,模型就会进行反向传播。这个过程中,损失值通过模型的各个层反向传递,计算出每个权重对损失函数的梯度。
  • 更新权重:使用优化器(如 SGD、Adam 等)根据计算出的梯度来更新模型的权重。优化器决定了权重更新的方式和步长(学习率)。
  • 返回结果:train_on_batch 通常返回一个列表,其中包含每个输出分支的损失值(如果有多个输出分支)。在某些情况下,它还可能返回其他指标,如准确率等。

        需要注意的是,train_on_batch 只在一个批次的数据上进行训练,因此它通常被包含在一个更大的训练循环中,用于迭代整个数据集或多个epoch。此外,为了监控训练进度和防止过拟合,通常还会在训练过程中使用验证集,并在每个epoch结束时评估模型的性能。

3. 待进一步完善………………

标签:Faster,VOC,检测,模型,layman,目标,RCNN,输入
From: https://blog.csdn.net/weixin_42250170/article/details/139898835

相关文章

  • 【转载备份】目标检测两种常用的数据集COCO和VOC
     背景:今天跟着我们算法工程师学了几分钟的算法模型训练,她讲到目标检测常用的数据集是COCO和VOC,我不知道啥是数据集,更加不知道这两个是什么,它们有什么用,于是我简单了解了一下子~要解决的问题: 什么是数据集?COCO和VOC是什么?它们分别是什么格式?问题1:什么是数据集?数据集......
  • 水性木器涂料VOC检测 溶剂型涂料苯系物含量检测
    标准详情:GB18581-2020新标准规定了木器涂料中对人体和环境有害的物质容许限量的术语和定义、产品分类、要求、测试方法、检验规则、包装标志等,适用于除特殊功能性涂料以外的直接在现场涂装、在工厂涂装,对木制产品表面进行装饰和防护的各类木器涂料,包括腻子、底漆和面漆。替代......
  • 目标检测数据集 - PCB板表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」
    数据集介绍:PCB板表面缺陷检测数据集,真实采集高质量PCB板表面含缺陷图片数据,数据集含多款不同PCB板高清表面图片数据,包括俯拍正拍、旋转拍摄姿态。数据标注标签包括missing_hole、mouse_bite、open_circuit、short、spur、spurious_copper六个缺陷类别;适用实际项目应用:P......
  • fasterxml ToStringSerializerBase报错
    ToStringSerializerBase报错报错内容整合dubbo时报错Causedby:java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase atcom.fasterxml.jackson.datatype.jsr310.JavaTimeModule.<init>(JavaTimeModule.java:158)~[jackson-dataty......
  • [目标检测数据集]变电站缺陷检测数据集8307张17类别VOC和YOLO格式
    数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):8307标注数量(xml文件个数):8307标注数量(txt文件个数):8307标注类别数:17标注类别名称:[“bj_bpmh”,“bj_bpps”,“bj_wkps”,......
  • VOC数据格式转YOLO(xml转txt)
            近日想训练yolov8模型,在网上找了很久公开数据集,好多都没有数据标注,好不容易找到一篇好的数据集,但是都是xml格式的,因此得想办法把xml格式转为yolo格式。    首先观察xml数据集格式:我圈出来比较重要的几条filename:就是xml标签所对应的图片的名字wid......
  • A Simple Framework for Open-Vocabulary Segmentation and Detection
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFInternationalConferenceonComputerVision.2023. Abstract  1.Introduction 2.RelatedWork 3.Method3.1.BasicLossFormulation 3.2.BridgeTaskGap:Decou......
  • coco数据集转voc数据集
    前言在模型训练的学习中voc和coco是最常见的两种格式,并且经常需要互相转换,本篇提供coco数据集转voc数据集的方法。coco格式分析COCO的全称是CommonObjectsinCOntext,是微软团队提供的一个可以用来进行图像识别的数据集。MSCOCO数据集中的图像分为训练、验证和测试集。......
  • 用javax.ws.rs.client.Invocation queryParam 执行url中带参数的请求
    来自于百度AI,为了实际需要,改成我自己的环境。importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importorg.apache.commons.lang3.StringUtils;importorg.glassfish.jersey.client.ClientConfig;importorg.glassfish.jersey.client......
  • IceRPC之调用管道Invocation pipeline与传出请求Outgoing request->快乐的RPC
    作者引言.Net8.0下的新RPC很高兴啊,我们来到了IceRPC之调用管道Invocationpipeline与传出请求Outgoingrequest->快乐的RPC,基础引导,让自已不在迷茫,快乐的畅游世界。调用管道Invocationpipeline了解如何发送请求requests和接收响应responses。定义发送请求并接收......