1. CNN检测和定位方法
    密集采样(滑窗)支持
    对于一个训练好的CNN来说,CNN的结构(如CNN的层数、每一层feature map的个数,卷积层的kernel size等等)是固定的,但是,每一层的feature map的大小是可以改变的。
    1)当测试样本和训练样本大小相同时,CNN最后一层的每一个节点分别输出一个0~1的实数,代表测试样本属于某一类的概率;

    2)当测试样本比训练样本大时,CNN最后一层每一个节点的输出为一个矩阵,矩阵中的每一个元素表示对应的图像块属于某一类的概率,其结果相当于通过滑窗从图像中进行采样,然后分别对采样到的图像块进行操作:

    如上图所示,当输入图像为16x16时,output层的每一个节点输出为一个2x2的矩阵,相当于在原图像上的四个角分别采样了一个14x14的图像块,然后分别对每一个图像块进行处理。

2 多尺度支持
传统的检测/定位算法是固定输入图像不变,采用不同大小的滑窗来支持不同尺度的物体。对于CNN来说,滑窗的大小就是训练时输入图像的大小,是不可以改变的。
那么,CNN支持多尺度的办法就是,固定滑窗的大小,改变输入图像的大小。具体来说,对于一幅给定的待处理的图像,将图像分别resize到对应的尺度上,然后,在每一个尺度上执行上述的密集采样的算法,最后,将所有尺度上的结果combine起来,得到最终的结果。
然而,对于上面所述的密集采样算法来说,采样的间隔(也就是滑窗的stride)等于执行所有卷积和pooling操作后图像缩小的倍数,也就是所有卷积层和pooling层的stride的乘积。如果这个值较大的话,采样就显得sparse,图像中的某些位置就无法采样得到。这时,或者减小卷积层和pooling层的stride,或者干脆去掉某个pooling层,或者采用某种方法替代某个pooling层。

3 分类问题测试过程
训练一个CNN并确定图像的六个尺度。给定一幅待识别的图像,先将图像resize到这六个不同的尺度,然后,将这六种尺度的图像以及对它们进行水平翻转后的图像(总共12幅图像)送到CNN中,产生12个CNN输出的结果。然后,对每一个CNN输出的结果进行空间域的非极大值抑制。(例如,对于一个类别数为1000的CNN来说,其输出为1000个矩阵。第m个矩阵的位于(x, y)位置的元素表示点(x, y)对应的图像块属于类别m的概率。对这个输出结果进行非极大值抑制,即对矩阵中所有元素求最大值。)然后,对于所有的非极大值抑制的结果(总共12个)按类别求平均值,然后取均值的Top-1或者Top-5。

4 定位问题的模型和测试过程
定位问题的模型也是一个CNN,1-5层作为特征提取层和分类问题完全一样,后面接两个全连接层,组成regressor network。
训练时,前面5层的参数由classification network给定,只需要训练后面的两个全连接层。这个regressor network的输出就是一个bounding box,也就是说,如果将一幅图像或者一个图像块送到这个regressornet work中,那么,这个regressor network输出一个相对于这个图像或者图像块的区域,这个区域中包含感兴趣的物体。这个regressor network的最后一层是class specific的,也就是说,对于每一个class,都需要训练单独最后一层。这样,假设类别数有1000,则这个regressor network输出1000个bounding box,每一个bounding box对应一类。

对于定位问题,测试时,在每一个尺度上同时运行classification network和regressor network。这样,对于每一个尺度来说,classification network给出了图像块的类别的概率分布,regressor network进一步为每一类给出了一个bounding box,这样,对于每一个bounding box,就有一个置信度与之对应。最后,综合这些信息,给出定位结果。

转载:https://blog.csdn.net/LK274857347/article/details/76881151

【目标检测】CNN的训练图像与测试图像不一致的多尺度问题相关推荐

  1. 视频教程-Windows版YOLOv4目标检测实战:训练自己的数据集-计算机视觉

    Windows版YOLOv4目标检测实战:训练自己的数据集 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多 ...

  2. 【camera】YOLOV7实现实例分割+目标检测任务(训练、测试、量化、部署)

    [camera]YOLOV7实现实例分割+目标检测任务 代码下载地址 训练.测试.量化.部署代码 训练 For training, quite simple, same as detectron2: ...

  3. 目标检测模型从训练到部署!

    Datawhale干货 作者:张强,Datawhale成员 训练目标检测模型并部署到你的嵌入式设备,让边缘设备长"眼睛". 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定 ...

  4. 目标检测模型从训练到部署,其实如此简单

    目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一.目标检测已应用到诸多领域,比如如安防.无人销售.自动驾驶和军事等. 在许多情况下,运行目标检测 ...

  5. 超详细目标检测,yolo3训练自己的数据集

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 本文介绍如何制作数据集.修改代码.不加载预权重从头跑自己的训练数据. 本文相关代码 项目获取方 ...

  6. 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)

    目录 0    前言 1.从githab上克隆yolov5代码 1.1 yolov5网络project克隆 1.2 项目代码结构的整体介绍 1.3 深度学习环境的配置和安装yolov5所需要的库 2. ...

  7. 基于深度学习的目标检测:数据增强(一)图像翻转、图像旋转、图像放缩

    1.数据增强简介 数据增强(data augmentation),又名数据增广或数据扩充,其本质是通过使用图像处理方法,基于有限的数据产生更多的数据,以此增加训练样本的数量以及多样性,进而提升模型的泛 ...

  8. ssd测试软件cy,目标检测实践_tensorflow版SSD模型测试

    致谢声明 本文在学习<Tensorflow object detection API 搭建属于自己的物体识别模型(2)--训练并使用自己的模型>的基础上优化并总结,此博客链接:https: ...

  9. Tensorflow目标检测之yolov3训练自己的模型

    0 背景 Tensorflow官方目标检测给出了SSD.Faster rcnn等预训练模型,但没有给yolov3的预训练模型,但有热心的人已经实现了基于tensorflow来复现yolov3的算法,本 ...

  10. [数据集][VOC][目标检测]河道垃圾水面漂浮物数据集目标检测可用yolo训练-1304张介绍

    数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1304 标注数量(xml文件个数):130 ...

最新文章

  1. idea provided和compile区别
  2. 如果你陷入职业迷茫,就看看这些建议!
  3. idea编辑springboot,如何打成war包
  4. 转: RSA原理 阮一峰的博客
  5. Snabbdom(虚拟dom)
  6. Windows10 VS2017 C++ Json解析(使用jsoncpp库)
  7. linux rescue u盘,linux 0-rescue
  8. Python函数嵌套/递归(七)-----详细
  9. uniapp-mixpanel用户行为分析埋点统计插件
  10. 最新亲测仿悬赏猫牛帮任务平台源码完美运营+支持封装APP
  11. 谷歌商店上架APP被拒绝
  12. AngularJS 表达式
  13. 永恒之蓝ms17_010漏洞
  14. 夺命雷公狗—玩转SEO---52---浅谈人工智能在SEO中的应用之机器学习,内链布局篇...
  15. 机器视觉工程师(实习岗)面经
  16. 如何一键拼图?不妨试试这三个一键拼图软件
  17. 如何将png图片转为heif格式
  18. 纽约比加州时间早3个小时
  19. pcb天线和纯铜天线_陶瓷天线和PCB天线以及IPEX天线三者间区别
  20. 2018年全国心理测试技术研究、应用及专业人员培养研讨会活动简报

热门文章

  1. ENVI软件中决策树分类和监督分类算法比较
  2. php app()路由,谷歌云应用引擎app.yaml php72与路由问题
  3. linux删除进程文件,Linux如何查找或删除正在使用某文件的进程
  4. 实习踩坑之路:一个ElasticSearchJava客户端的批量处理操作bulkIndexAsync引发的内存泄漏的血案
  5. 详细解读二叉树基本操作
  6. Flutter BuildOwner之inactive Elements浅析
  7. 社区活动 | Apache RocketMQ × Apache Flink Meetup · 上海站
  8. Android TV开发总结【焦点】
  9. java rbac 开源_java web快速开源开发框架RoubSite-admin
  10. ug建模文本怎么竖着_UG软件见解分析一二,设计必备软件,UG新手福音