YoloV2

时间线                                  

 Motivation

        Yolo-v1是在检测精度尚可的前提下达到了实时检测,同年的SSD检测速度略慢但检测精度远高于Yolo-v1,因此,Yolo-v2则是着眼于检测得更快更准,同时它利用WordTree创造性地将ImageNet和coco结合起来构建了beyond coco的Yolo9000,为后续的研究、工程应用打开了一扇门。

Better

 -- Batch normalization

    通过采用BN而不是dropout来达到预防overfitting的目的,mAP提升2%.

 -- High Resolution Classifier

    首先在224x224的尺度上训练分类网络,然后使用448x448适应训练几个epoch,然后再进行detection任务的训练,mAP提升4%.

-- Convolutional With Anchor Boxes

    对于特征图上的每个网格对应的bbox,Yolo-v1采用随机猜的策略,导致训练困难、检测精度受损;因此,为了避免随机猜的情况,受Faster RCNN和SSD的启发,Yolo-v2也引入了anchor机制。具体地,对于每个网格我们生成K(K=5)个priors boxes:

    然后预测priors boxes的offset,同时将Yolo-v1中Pr(Class_i|Obj)从cell-level下放至bbox-level,这样每个prior box就对应一个含有(4+1+C)个分量的预测结果,其中C表示数据集中包含object的类别数。下图给出了采用priors boxes后的预测流程:  

--  Image input size : 448  x 448 --> 416 x 416 

    获得的feature_map从原来的7 x 7变为resolution更高的13 x 13.

--  Dimension Clusters

    与Faster RCNN、SSD等采用anchor机制的detection方法不同的是,Yolo-v2在设定prior boxes时采用了Data Driven的思想。我们来看,日常生活中常见object的宽高比并非任意的,它们具有某种规律,因此Yolo-v2采用k-means聚类方法对训练集中的truth_bboxes进行聚类,并得到如下图所示的观测数据:

需要补充的一点是,在聚类时距离度量没有采用bbox的空间距离,而是采用如下的方式:

 d(box, centroid) = 1 − IOU(box, centroid) 

大家可以自己琢磨一下为什么要这么操作,它是否合理?

--  Direct location prediction

     左侧为Faster RCNN中bbox的预测参数关系,右侧为Yolo-v2的参数预测关系,它们主要的区别在于bx和by的预测关系。具体体现在:Faster RCNN中的bx和by不受限制,而Yolo-v2则将bx和by限制在参考网格内部

--  Fine-Grained Features

     这里将backbone网络中最后一层和倒数第三层的特征concat到一起,主要目的在于充分利用不同resolution的feature提供的空间信息。具体做法是将26x26x512的feature_map转为(reshape)13x13x2048,然后与最后一层的13x13x1024concat到一起。

--  Multi-Scale Training

     因为Yolo-v2的网络框架中去掉了fully connected layers,因此网络可以接受不同size的image,eg:Yolo-v2采用的采样因子为32,当input-size为320时,输出为[batchsize, 100, len(priors)+1+C];当输入是608时,输出为[batchsize, 361, len(priors)+1+C].论文指出,在训练Yolo-v2时,每隔10个epoch从[320, 352, ..., 608]中选择一个新的size最为input_size对网络进行训练。这样做的好处是:模型可以更好地适应不同image-resolution的detection任务。

--  Accuracy

Faster

  backbone      operations(billion)     accuracy(ImageNet)
VGG16               30.69                 90.0%
GoogLeNet                8.52                 88.0%
DarkNet-19                5.58                  91.2%

     Yolo-v2的backbone网络采用了操作量更少、但分类效果更佳的DarkNet-19, 网络细节如下图所示:

     受GoogLeNet、NIN的启发,DarkNet的卷积核采用了3x3,1x1的尺寸,前者用于feature提取,后者用于feature降维。在detection的工程实现时,最后一层的1x1的Conv层、Avgpool层被替换为3x3[特征融合]和1x1[降维输出]的Conv-layer。下图给出了Yolo-v2的完整流程图:

Stronger

     Yolo-v2在解决了better、faster这两个核心问题之后,顺便提出了联合COCO和ImageNet来训练更为强大的Yolo9000.它需要解决如下两个问题:

  1. 不同数据集的标签怎么合并?[直接合并不能保证标签之间的互斥性,从而使得不能直接用softmax来计算各类的概率]
  2. 分类数据无bbox信息,如何在detection网络中应用分类数据?

--  WordTree

     下图是COCO和ImageNet的标签体系:

      Yolo-v2中作者基于自下而上的层次结构构造的WordTree标签体系:

       这样做的好处是,同一层级内的各个标签是互斥的,因此可以使用softmax来计算概率。以ImageNet-1000为例,作者构建了一棵含有369个内部节点的WordTree,在训练模型时采用向上传递标签的方式,例如:如果一张image被标记为Norfolk terrier,那么它也会被同时标记为它的一系列父节点:dog、mammal ... 为了计算条件概率,网络会输出1369个score,然后计算对相应分支的节点计算softmax概率:

        采用WordTree的标签体系的好处是它可以充分利用层次结构,例如,当模型遇到一张狗的照片但不确定是哪种狗的时候,模型会输出高置信度的标签“狗”,而不是强行把它分为某个低置信度的狗的子类目。

--  Train/Test

在训练时,当输入的是detection(来自coco)的图片时,bbox的loss照旧;classification的loss只计算当前预测label在WordTree对应level及上游层中依赖节点的损失;当输入的图片来自ImageNet时,仅仅反传classification-loss.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/36144.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测

回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测 目录 回归预测 | MATLAB实现WOA-DBN鲸鱼算法优化深度置信网络的多输入回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于鲸鱼算法优化深度置信网络(WOA-DBN)的数据回归预测&…

vim的使用方法及相关按键

目录 一、安装vim 二、vim的使用 1.打开vim 2.vim的四种模式使用 (1)命令模式(快捷键的使用) (2)编辑模式 (3)末行模式 (4)可视化模式 一、安装vim …

虹科方案 | Redis Enterprise:适用于任何企业的矢量数据库解决方案

用户希望他们遇到的每个应用程序和网站都具有搜索功能。然而,超过80%的业务数据是非结构化的,以文本、图像、音频、视频或其他格式存储。因此,我们需要一种跨非结构化数据的搜索方式。 什么是矢量数据库(vector database&#xff…

基于深度学习的高精度老虎检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度老虎检测识别系统可用于日常生活中或野外来检测与定位老虎目标,利用深度学习算法可实现图片、视频、摄像头等方式的老虎目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

uniapp学习之【uniapp的返回事件 onBackPress 在微信小程序中不生效的问题】

uniapp 的返回事件 onBackPress 在微信小程序中不生效的问题 场景:页面中点击左上角的返回按钮,监听返回操作,页面返回前执行了一些操作, uniapp 页面生命周期中有 onBackPress ,因此将操作写在了 onBackPress () 页面生命周期钩子当中, H5 测试一切正常,但是微信开…

集合面试题--LinkedList数组

目录 单向链表 介绍 时间复杂度分析 双向链表 时间复杂度分析 总结 ArrayList和LinkedList的区别是什么? 单向链表 介绍 时间复杂度分析 双向链表 时间复杂度分析 总结 ArrayList和LinkedList的区别是什么?

某网站JS加密、OB混淆与CSS反爬实战分析

1. 写在前面 最近一段时间接触了一些小说网站的业务。发现很多的小说网站,甚至一些小站它们的安全防护措施做的都很到位!例如上次说到的的五秒盾也是存在于一个小说小站。今天要讲的这个网站它集JS加密、ob混淆、CSS反爬于一体 目标站点: aH…

【javaEE面试题(四)线程不安全的原因】【1. 修改共享数据 2. 操作不是原子性 3. 内存可见性 4. 代码顺序性】

4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 static class Counter {public int count 0;void increase() {count;} } public static void main(String[] args) throws InterruptedException {final Counter counter new Counter();Thread t1 new Thread(()…

王道考研计算机网络第五章知识点汇总

5.1.1 传输层概述 复用:好比家里面每个人都要写信,向信箱里面投入信件,然后由邮递员取走。 分用:就是每个人都收到了各自的回信,然后从信箱中取走各自的信 5.2 UDP协议 注意:用户数据报和检验和都是指的整…

深度剖析线上应用节点流量隔离技术

作者:谢文欣(风敬) 为什么要做流量隔离 源于一个 EDAS 客户遇到的棘手情况:他们线上的一个 Pod CPU 指标异常,为了进一步诊断问题,客户希望在不重建此 Pod 的情况下保留现场,但诊断期间流量还…

chatGPT如何开启 Browsing 功能,实现即时联网查询?

Openai 为每一个 chatGPT Plus 用户都开放了 Browsing 和 plugins 功能。 前者可以在 ChatGPT 觉得有必要的时候(比如你问它今天的新闻),自动联网查询,后者是第三方开发者开发的插件,数量繁多,可以解决各种…

【Distributed】分布式ELK日志文件分析系统

文章目录 一、ELK 概述1. 为什么要使用 ELK2. 完整日志系统基本特征3. ELK 简介3.1 ElasticSearch(ES)3.2 Kiabana3.3 Logstash3.4 其它组件Filebeat缓存/消息队列Fluentd 4. ELK 的工作原理5. Linux 系统内核日志消息的优先级别 二、 部署 ELK 集群服务…

使用python调用ChatGPT API 简单示例

如果你已经获得了OpenAI的API密钥,并且想要使用Python发起ChatGPT对话,你可以使用OpenAI的Python SDK来实现。下面是一个简单的示例代码: 首先,你需要确保已安装OpenAI的Python SDK。你可以使用pip来安装: pip insta…

BaGet做了一个Nuget私有服务器,Nginx代理之后还是会请求被代理得地址

Nuget搭建和使用可以参考官网得文档 https://loic-sharma.github.io/BaGet/installation/docker/ 这是我用Nginx代理之后出现得问题,观察请求url和响应回来得配置。配置中得ip地址得url是我被代理得下游地址,所以是无法访问的。 我原本以为是要去server…

【案例教程】GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践实践技术

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

79. 单词搜索

79. 单词搜索 原题链接:完成情况:解题思路:参考代码: 原题链接: 79. 单词搜索 https://leetcode.cn/problems/word-search/ 完成情况: 解题思路: 参考代码: package 西湖算法题…

微信小程序使用animation.css

animation.css是一款纯css动画库,其中提供了丰富的动画效果 我们直接下载animation.css,即可使用其中的样式 其官网为:Animate.css | A cross-browser library of CSS animations. 1.下载 使用npm下载animation.css: npm inst…

构建工具——webpack、vite

文章目录 构建工具Webpack使用步骤配置文件(webpack.config.js)插件(plugin) ViteVite 也是前端的构建工具使用命令构建配置文件:vite.config.js 构建工具 当我们习惯了在 node 中编写代码的方式后,在回到…

python怎么获取免费代理IP

什么是免费代理IP 免费代理IP是指可以免费使用的代理服务器的IP地址。代理服务器充当客户端和目标服务器之间的中间人,通过转发请求和响应来实现网络数据的传输。使用代理IP可以隐藏真实的客户端IP地址,实现匿名访问网络资源。 免费代理IP通常由个人或组…

实战:k8s证书续签-2023.6.19(测试成功)

实战:k8s证书续签-2023.6.19(测试成功) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 1、前言 k8s集群核心的证书有2套,还有1套非核心的(即使出问题也问题不大)。 ⚠️ 如果是kubeadm搭建的k8s集群,其有效期为…
最新文章