技术标签: 目标检测
识别图片或者视频中有哪些物体以及物体的位置(坐标位置)
什么是物体(物体的定义):
图像(或者视频)中存在的对象,但是能检测哪些物体会受到人为设定限制。
目标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些。假设我们的目标检测模型定位是检测动物(例如,牛、羊、猪、狗、猫五种),那么模型对任何一张图片输出结果不会输出鸭子、鹅、人等其他类型结果。
什么是位置(位置的定义):
目标检测的位置信息一般有2种格式(以图片左上角为原点(0,0)):
极坐标表示:(xmin,ymin,xmax,ymax)
xmin,ymin:x,y坐标的最小值
xmax,ymax:x,y坐标的最大值
中心点坐标:(x_center,y_center,w,h)
x_center,y_center:目标检测框的中心点坐标
w,h:目标检测框的宽,高
例:
假设一张图片是100*800,所有这些坐标都是构建在像素层面上:
中心点坐标结果为:
目标检测算法分类:
角度一:
a. 传统目标检测方法(候选区域+手工特征提取+分类器)
HOG+SVM、DPM
b. region proposal+CNN提取分类的目标检测框架
R-CNN,SPP-NET,Fast R-CNN,Faster R-CNN
c. 端到端(End-to-End)的目标检测框架
YOLO系列,SSD
传统目标检测(缺点、弊端)
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余
2)手工设计的特征对于多样性的变化没有很好的鲁棒性
角度二:
(1)两步走(two stage)的目标检测:先进行区域推荐,而后进行目标分类
主要算法:R-CNN,SPP-NET,Fast R-CNN,Faster R-CNN
(2)端到端(one stage)的目标检测:采用一个网络一步到位
主要算法:YOLO系列(YOLO v1,YOLO v2等),SSD
目标检测的任务
分类原理:
先来回顾下分类原理,这是一个常见的CNN组成图,输入一张图片,经过其中的卷积、激活、池化相关层,最后加入全连接层达到分类概率的效果。
分类的损失与优化:
在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失
常见的CNN模型:
对于目标检测来说不仅仅是分类这样简单的一个图片输出一个结果,而且还需要输出图片中目标(物体)的位置信息,所以从分类到检测,过程如下:
分类:
分类+定位(只有一个目标的时候)
目标检测的任务
分类:
1)N个类别
2)输入:图片
3)输出:类别标签
4)评估指标:Accuracy
定位:
1)N个类别
2)输入:图片
3)输出:物体的位置坐标
4)主要评估指标:IOU
其中我们得出来的(x,y,w,h)有一个专业的名词,叫做bounding box(bbox)
两种Bounding box名称:
在目标检测当中,对bbox主要由两种类别名称
(1)Ground-truth bounding box:图片中真实标记框
(2)Predicted bounding box:预测的标记框
一般在目标检测任务当中,我们预测的框有可能很多个,真实的框GT也有很多个
检测任务的评价指标:
任务 | 描述 | 输入 | 输出 | 评价指标 |
---|---|---|---|---|
Detection and Localization(检测和定位) | 在输入图片中找出存在的物体类别和位置(可能存在多种物体) | 图片(image) | 类别标签(categories) 位置(bbox(x,y,w,h)) | IoU(Intersection over Union)mAP(mean Average Precision) |
IoU(交并比):
两个区域的重叠程度overlap:候选区域和标定区域的IoU值
目标定位的简单实现:
在分类的时候我们直接输出各个类别的概率,如果再加上定位的话,我们可以考虑在网络的最后输出加上位置信息。
回归位置:
增加一个全连接层,即为FC1、FC2
1)FC1:作为类别的输出
2)FC2:作为整个物体位置数值的输出
假设有10个类别,输出[p1,p2,p3,…,p10],然后输出这一个对象的四个位置信息[x,y,w,h]。同理知道要网络输出什么,如何衡量整个网络的损失
对于分类的概率,还是使用交叉熵损失
位置信息具体的数值,可使用MSE均方误差损失(L2损失)
如下图所示
位置数值的处理:
对于输出的位置信息是四个比较大的像素大小值,在回归的时候不适合。目前统一的做法是,每个位置除以图片本身像素大小。
假设以中心坐标方式,那么x = x/x_image,y/y_image, w/x_image,h/y_image,也就是这几个点最后都变成了0~1之间的值(归一化)。
一、基本概念 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI
由于 Android 7.0 或更高版本的系统在国内手机市场上的占比不是很高,很多 Android 开发人员并没有做 7.0 适配工作,同时测试人员也容易忽视这...
一、问题1.1、环境电脑环境:Windows 10;开发工具:Eclipse 4.6.3;数据库环境:Oracle 11g;JDK环境: Jdk1.8;Maven环境:Maven3.5.0;GIT版本:Version 2.48.02;Docker版本:Server Version: 19.03.31.2、问题启动activiti测试时,报错,报错内容如下:"C:\Progra...
在当今互联网应用中,缓存作为一把尖刀利器对应用的性能起着举足轻重的作用。缓存的使用可以说无处不在,从应用请求的访问路径来看,用户user -> 浏览器缓存 -> 反向代理缓存-> WEB服务器缓存 -> 应用程序缓存 -> 数据库缓存等,几乎每条链路都充斥着缓存的使用,当然交换机,网络适配器,硬盘上也有Cache 但这不是我...
日期类第一代日期类Date:精确到毫秒,代表特定的瞬间SimpleDateFormat:格式和解析日期的类SimpleDateFormat格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化.package www.xz.date_;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * @aut
我们只用使用以下3条命令把IPv6的接口关闭即可 netsh interface teredo set state disable netsh interface 6to4 set state disabled netsh interface isatap set state disabled 若想还原IPv6隧道则用以下命令: nets...
FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。现在圈圈就根据实际经...
①运行Xcode 6,创建一个Single View Application工程②创建好后,把工程目录下的Main.storyboard和LaunchScreen.xib删除,扔进废纸篓③打开Info.plist,把Launch screen interface file base name,以及Main storyboard file base name两
linux远程登录Windows 7设置LINUX的IP 子网掩码和网关查看配置的IP 子网掩码和网关查看挂载点和配置挂载点设置YUM仓库查看YUM仓库设置Windows7的IP和网关 一定要和LINUX在一个网段上开启Windows7的远程控制 并一定要选择允许运行任意版本远程桌面的计算机连接,要不然是远程不上Windows7的关闭Windows7的防火墙 要不然也是远程登...
Ribbon自定义负载均衡策略有两种方式,一是JavaConfig,一是通过配置文件(yml或properties文件)。需求假设我有包含A和B服务在内的多个微服务,它们均注册在一个Eureka上,信息如下:我希望当访问服务A时候,2个服务(端口分别是8087和8081)每两次一换,比如访问两次8087,再访问两次8081,如此反复。当访问服务B时,与A类似,不过是3次一换。当访问其他...
adk\src\domains\power\charger_monitor\charger_monitor_config.h/*! The time to debounce charger state changes (ms). The charger hardware will have a more limited range. */#define appConfigChargerStateChangeDebounce() (128)/*! Trickle-cha
取石子(三)时间限制:1000 ms | 内存限制:10000 KB难度:6描述小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。游戏规则如下:共有N堆石子,已知每堆中石子的数量,两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),取过子之后,还可以将该堆石子中剩下的任意多个石子中随意选取几个放到其它的任意一堆或几堆上。等哪个人无法取子时就表示此人输掉了游戏。注意,...