模式识别课程:目标检测③基于深度学习的检测算法

2023-11-10


title : 目标检测③基于深度学习的检测算法

目标检测实验报告
检测所用软硬件+云服务器:
硬件:macOS或者windows电脑
软件:pycharm+生成的测试集
云服务器:滴滴云(https://www.didiyun.com/activity.html)输入博主的大师码:8996 ,只需⑨折,便不用体验搭环境的痛苦,安心训练自己的模型
在这里插入图片描述

在2012年之前,在目标检测领域还是以传统手工特征的检测算法为主,但是随着卷积神经网络(CNN)在2012年的兴起,目标检测开始了在深度学习下的暴力美学。在深度学习下,目标检测的效果比传统手工特征效果好太多。直至今日,基于深度学习的检测算法依然是目标检测的主流。

物体检测的两个步骤可以概括为:
步骤一:检测目标位置(生成矩形框)
步骤二:对目标物体进行分类
物体检测主流的算法框架大致分为one-stage与two-stage。two-stage算法代表有R-CNN系列,one-stage算法代表有Yolo系列。可以说,two-stage算法将步骤一与步骤二分开执行,输入图像先经过候选框生成网络(例如faster rcnn中的RPN网络),再经过分类网络;one-stage算法将步骤一与步骤二同时执行,输入图像只经过一个网络,生成的结果中同时包含位置与类别信息。two-stage与one-stage相比,精度高,但是计算量更大,所以运算较慢。

我们这里介绍的两种深度学习算法,都是one-stage算法。
基于回归方法的深度学习目标检测算法,他们一步到位,其基本步骤是: 给定一张图像, 通过设定合理的输出向量,使用回归的方式输出这个目标的边框和类别,一步到位。这种算法的优点是速度快,但是对于密集的小样本来说检测比较困难。比如 YOLO、SSD 等。

2.3.1 YOLO

2.3.1.1YOLO介绍
YOLO系列论文提出了一个新的物体检测的方法:You Only Look Once(YOLO)

YOLO 的核心思想就是把目标检测转变成一个回归问题,利用整张图作为网络的输入,仅仅经过一个神经网络,得到bounding box(边界框) 的位置及其所属的类别。

2.3.1.2 YOLOv1
论文:https://arxiv.org/pdf/1506.02640.pdf
YOLOv1是最早版本的YOLO,以下从概念上简单介绍v1的原理
1)网络结构
在这里插入图片描述

输入:4484483的彩色图片
中间层:若干卷积层和最大池化层
全连接层:2个全连接层,用来预测位置和类别概率值

2)实现细节
分类器的输出是一个one-hot vector,而检测器的输出是一个框(Bounding Box)。框,该怎么表示?
在这里插入图片描述

bounding box
总的来说,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C) 的张量。
在这里插入图片描述

在实际过程中,YOLOv1把一张图片划分为了7×7个网格,并且每个网格预测2个Box(Box1和Box2),20个类别。所以实际上,S=7,B=2,C=20。那么网络输出的shape也就是:7×7×30。

3)损失函数和优化器
神经网络结构确定之后,训练效果好坏,由Loss函数和优化器决定。Yolo v1使用普通的梯度下降法作为优化器。这里重点解读一下Yolo v1使用的Loss函数:
在这里插入图片描述

损失是三部分:坐标预测损失、置信度预测损失、类别预测损失的加和

思考:对于x和y用差平方,而对于宽和高为什么进行开根处理?
——假设宽和高使用与x,y相同处理方式(直接差平方),当预测值与真实值图像偏移相同大小时,我们依此法计算出的误差是固定的,然而这与实际不符。实际对于图像框尺度大小不同的区域,相同偏移量下,小尺度图像效果是很差的,而较大尺度图像则效果不错。因此,此损失函数的设计细节是作者为使实验结果更加准确而设计的。
置信度预测损失:是正负样本求平方加和
类别预测损失:预测值减去真实值求平方

4)优缺点

优点:更快更准迁移能力强
缺点:对相互靠近的物体,以及很小的群体检测效果不好;对不常见的角度的目标泛化性能偏弱

升级版 YOLOv2
YOLOv2论文:https://arxiv.org/abs/1612.08242

为提高物体定位精准性和召回率,YOLO作者提出了 “YOLO9000: Better, Faster, Stronger” (Joseph Redmon, Ali Farhadi, CVPR 2017, Best Paper Honorable Mention),相比YOLOv1 提高了训练图像的分辨率;引入了faster rcnn中anchor box的思想,对网络结构的设计进行了改进,输出层使用卷积层替代YOLO的全连接层,联合使用coco物体检测标注数据和imagenet物体分类标注数据训练物体检测模型。相比YOLO,YOLO9000在识别种类、精度、速度、和定位准确性等方面都有大大提升。

2.3.2 SSD
YOlO和SSD算法作为“一步到位”算法的代表,他们的主要区别就是yolo只利用了末端特征图的信息,而SSD利用了最后几层特征图的信息,所以,从理论上说,SSD算法较yolo(起码是yolov1)来说,精确度必然更高。

卷积神经网络各层特征信息主要有如下区别:
1、低层卷积可以捕捉到更多的细节信息,高层卷积可以捕捉到更多的抽象信息。
2、低层特性更关心“在哪里”,但分类准确度不高,而高层特性更关心“是什么”,但丢失了物体的位置信息。
——《Visualizing and Understanding Convolutional Networks》.(可视化理解卷积神经网络)2014

SSD正是利用不同尺度检测图片中不同大小和类别的目标物体,获得了很好的效果。
在这里插入图片描述

VGG-16网络

对于每个特征图来说,SSD引入初始框的概念。对于不同的特征图,SSD总的尺度设计原则就是:随着网络层数加深(特征图的变小),初始框的尺度线性增加。最小的初始框尺度为0.2,最大的初始框尺度为0.9。

在这里插入图片描述

3.实例解析
3.1YOLO实例说明
以下对YOLOv3进行介绍,代码部分来自
tf2.0yolov3——malin9402,yunyang1994
https://github.com/malin9402/tf20/tree/master/4-Object_Detection/YOLOV3

pytorch :
https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch

3.1.1网络结构
随着CNN的发展和大量研究人员的努力,产生了数篇影响深远的论文,解决了在实际应用的诸多问题。yolov3借鉴了许多论文和思路,完善了yolo网络架构。
本节从原理和代码上介绍yolov3的网络架构,并深入探讨其网络架构上的进步和优点。

yolov3用darknet53作为基础网络架构

Darknet53

命名来源于它有53层卷积层= 2 + 12+1 +22+1 +82+1 +82+1 +4*2+1

未完待续——下一篇我会说一下YOLOV3相对于之前的网络架构的提升,相比之下,算力要求也会随之提升,所以我们需要借助滴滴云DAI平台来跑我们的代码项目
输入我的AI大师码:8996,享受⑨折优惠,让自己的算法检测像扫码一样简单

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模式识别课程:目标检测③基于深度学习的检测算法 的相关文章

随机推荐

  • CSS的clip-path属性使用

    前言 clip path CSS 属性使用裁剪方式创建元素的可显示区域 区域内的部分显示 区域外的隐藏 基本语法 clip path clip source basic shape geometry box none 属性说明 clip s
  • iterm2跳板机自动登录脚本

    前言 现在要想访问公司服务器都必须通过跳板机再跳到目标服务器 这么做是运维人员为了安全性考虑和可以高效管理公司庞大的服务器集群 但是我们都知道安全性提高后必定降低我们日常工作的效率 必须先登录到跳板机 再选目标服务器 每次访问服务器都增加了
  • 前端面试题-url、href、src

    一 URL的概念 统一资源定位符 或称统一资源定位器 定位地址 URL地址等 英语 Uniform Resource Locator 常缩写为URL 有时也被俗称为 网页地址 网址 如同在网络上的门牌 是因特网上标准的资源的地址 Addre
  • Python模块学习 ---- atexit

    atexit模块很简单 只定义了一个register函数用于注册程序退出时的回调函数 我们可以在这个回调函数中做一些资源清理的操作 注 如果程序是非正常crash 或者通过os exit 退出 注册的回调函数将不会被调用 我们也可以通过sy
  • 一篇文章让你搞定所有redis面试题

    Redis是什么 Redis是C语言开发的一个开源的 遵从BSD协议 高性能键值对 key value 的内存数据库 可以用作数据库 缓存 消息中间件等 它是一种NoSQL not only sql 泛指非关系型数据库 的数据库 redis
  • Arduino酸度计(PH计)

    在本项目中 我们将通过将模拟pH传感器与Arduino接口来设计pH计 介绍 在化学中 pH是用于指定水基溶液的酸性或碱性的标度 酸性溶液的pH值较低 而碱性溶液的pH值较高 因此 Ph传感器具有确定任何溶液的Ph的能力 即可以判断该物质本
  • JAVA运行时类存在,但是报错:NoClassDefFoundError: Could not initialize class

    我们在部署代码时 明明类存在 但是发现报错 NoClassDefFoundError Could not initialize class 这类问题是由静态成员或静态初始化语句块引起 我们先看下面个类 import org apache c
  • C语言实现MD5/SHA1/SHA256/SHA512

    哈希函数是我们做校验时经常会用到的密码学工具 目前常用的工具有MD5 SHA1 SHA256 SHA512等 其中MD5已经被证实不安全 目前只能作为一种辅助的校验手段 而不能防篡改 下面介绍如何使用mbedTLS协议栈中的hash代码生成
  • BGP属性

    BGP 外部网关协议 此协议不在于自动发现网络拓扑 不追求速度 而在于AS之间选择最佳路由和控制路由的传播 追求可靠性 稳定性 操控性 承载性 使用TCP作为其传输协议 监听端口号为179 保证其可靠性 路由更新只发送更新的路由 适用于在以
  • C++基础学习笔记——对象的定义及引用

    1 类与对象的关系 通常我们把具有同样性质和功能的东西所构成的集合称为类 在C 中 可以把相同内部存储结构和相同操作集的对象看成属于同一类 在C 中 对象是类的实际变量 类与对象间的关系 可以用整型 int 和整型变量 i 之间的关系来类比
  • Linux——线程1

    一 线程基础 进程 有独立的进程地址空间 有独立的pcb 线程 有独立的pcb 没有独立的进程地址空间 因此进程线程最本质的区别就是 是否共享地址空间 在Linux下线程是最小的执行单位 进程是最小的分配资源单位 可看成只有一个线程的进程
  • 避坑记录:打电话(uni.makePhoneCall)

    uni makePhoneCall 可兼容微信小程序 H5 移动端 安卓 IOS 但是在移动端 安卓 上 如果拒绝授权电话 则会出现点击号码 既不报错 也不弹出打电话的bug 当然 如果只是简单调用makePhoneCall 也就不值得我去
  • Call Exec in PeopleCode

    我想在Application Engine里加一段调用命令行的代码 All PeopleCode is executed on the application server So if you re calling an interacti
  • 基于imx6ull视频监控

    基于imx6ull视频监控 前言 一 mjpg streamer 1 编译mjpg streamer 2 运行mjpg 3 mjpg框架 二 流媒体 1 ffmpeg 2 nginx服务器 3 实现flv js访问和ip地址访问 4 内网穿
  • MySQL添加用户、删除用户与授权

    前言 MySql中添加用户 新建数据库 用户授权 删除用户 修改密码 注意每行后边都跟个 表示一个命令语句结束 新建用户 登录MYSQL mysql u root p 密码 创建用户 mysql gt insert into mysql u
  • 从iOS App启动速度看如何为基础性能保驾护航

    1 前言 启动是App给用户的第一印象 一款App的启动速度 不单单是用户体验的事情 往往还决定了它能否获取更多的用户 所以到了一定阶段App的启动优化是必须要做的事情 App启动基本分为以下两种 1 1 冷启动 App 点击启动前 它的进
  • python:深拷贝,浅拷贝,赋值引用

    第一部分转载自 https www cnblogs com xueli p 4952063 html 1 python的复制 深拷贝和浅拷贝的区别 在python中 对象赋值实际上是对象的引用 当创建一个对象 然后把它赋给另一个变量的时候
  • purrr 0.2.0

    purrr 0 2 0 Hadley Wickham 2016 01 06 Categories Packages tidyverse 原文地址 我很高兴的发布了purrr 0 2 0 Purrr填补了R的函数式编程工具中的缺失部分 让你的
  • rpm包的卸载与安装

    本文章向大家介绍rpm包的卸载与安装 主要内容包括1 rpm包管理 2 rpm包的简单查询指令 3 卸载rpm包 4 安装rpm包 使用实例 应用技巧 基本知识点总结和需要注意事项 具有一定的参考价值 需要的朋友可以参考一下 目录 1 rp
  • 模式识别课程:目标检测③基于深度学习的检测算法

    title 目标检测 基于深度学习的检测算法 目标检测实验报告 检测所用软硬件 云服务器 硬件 macOS或者windows电脑 软件 pycharm 生成的测试集 云服务器 滴滴云 https www didiyun com activi