YOLOv2

YOLOv2

  • 论文介绍
  • 论文改进
    • 1. Batch Normalization
    • 2. High Resolution Classifier
    • 3. Convolutional With Anchor Boxes
    • 4. vgg16换成darknet-19
    • 5. Dimension Clusters(w h的聚类)
    • 6 预测坐标
    • 7. passthrough
    • 8. 多尺度输入训练
  • 损失函数

论文介绍

论文名字:《YOLO9000:Better, Faster, Stronger》
论文下载地址:https://arxiv.org/abs/1612.08242(右边Access Paper: View PDF)
论文作者:Joseph Redmon, Ali Farhadi
YOLO9000的意思就是除了对v1改进外,还提出一种新的算法可以在9000中类别上进行检测。
通常改进通过堆积更深的层数或者堆积更大的网络,但是作者为了让这个模型有精度以及速度,设计了下边这些技巧,同时设计一个新的darknet19

论文改进

下边这个表就概述了从YOLOv1到YOLOv2的变化。
在这里插入图片描述

1. Batch Normalization

第一个是把YOLOv1骨架网络的层换成BN层,在所有的卷积层后边
v1最后几层是全连接-dropout-全连接-sigmoid归一化-reshape7x7x30
v2最后几层是把darknet的输出和第43层输出做一个合并,在直接做一个卷积,直接预测输出的大小。到v5也是这样的。
去掉全连接和dropout是因为全连接参数量太多了,卷积是一个不错的代替方案,去掉dropout是因为dropout和bn通常是二选一,因为全有的话,会有方差偏移, dropout一般用的话就是用在全连接的旁边,现在一般都不用了

2. High Resolution Classifier

第二是提高输入数据的分辨率
预训练分类阶段输入数据从224改为448,10个epoch作为预训练
检测阶段输入数据从448改为416
为了保证最后输出是奇数,所以是416(作者解释)
最终输出阶段从7x7x30改为13x13x25
(30=10+分类种类数,25=5+分类种类数。在voc数据集里,分类种类数是20类。5代表的是xywhc,10就是两倍的xywhc)(这也是引入anchor的效果)

3. Convolutional With Anchor Boxes

第三是引入anchor机制,v1是没有的,v2v3都加入了,能提高模型的召回率以及预测的边框值
anchor的介绍:
在模型计算前有一个预生成的阶段,通过其他程序生成anchor,到了YOLOv5就把这个生成anchor的阶段放到模型训练代码里,自适应根据数据大小调整anchor大小
这些anchor就是目标检测宽跟高

4. vgg16换成darknet-19

第四是修改了骨架网络 从vgg16换成darknet-19
在这里插入图片描述
前边的横杠之前的都是普通的卷积加池化,在训练分类和训练检测阶段都是一样的
横杠下边的卷积加平均池化是做预训练分类的,检测训练采用passthrough结构

5. Dimension Clusters(w h的聚类)

第五是采用kmeans聚类得到先验框,在基于这几个先验框在用的时候用起来
YOLOv2的anchor对应边框的wh,其xy是最后预测的13x13上边每个grid cell坐标,所以YOLOv2的anchor实际不多
faster r-cnn的anchor是根据骨干网络输出的特征MxM大小在每个点上生成N个边框,总共生成MxMxN个边框,每个边框坐标是x1,y1,x2,y2
YOLOv2的anchor大小是通过聚类生成的,faster r-cnn是硬编码固定大小生成的
v2-v5都涉及聚类算法。
采用k-means聚类得到先验框,就是在所有val数据集上计算所有边框的wh,聚成几类之后就能得到不同的先验框。

6 预测坐标

第六是预测方式改为基于anchor的偏移缩放(改进关键)
在这里插入图片描述
这种改进方式把wh的大小放大,在预测的时候能减小误差。预测出的tx ty归一化后加上左上角的坐标,得到蓝色框的中心点,pw ph就是anchor的宽和高

7. passthrough

第七是高低维度特征融合(passthrough),类似残差结构

拿到darknet-body输出的最后一层,与 中间的43层合并
conv20:[batch, 13, 13, 1024] conv 13: [batch, 26, 26, 512]
这两层先reshape成一样的,在concat合并(space_to_depth)
output:[batch, 13, 13, 1280]
再就用卷积预测最终的结果

8. 多尺度输入训练

第八是多尺度输入训练策略,这个是为了改进v1大小目标小目标检测较差的情况,加入一个多尺度训练,每迭代几个epoch,就修改输入的一个大小,让模型能够适应不同尺度的输入,以提高对小目标大目标的检测效果。
在这里插入图片描述
保持主干网络不变,调整输入图片的大小为[320, 352, 384, 416, 448, 480, 512, 544, 576, 608],每十个epoch改变一次大小

损失函数

在这里插入图片描述
第一行是 没有包含目标情况下的损失,兰姆达=1是平衡正负样本不平衡的问题,只计算背景概率损失
第二行是计算包含目标情况下的损失
第三行是类别损失,是差平方和
第四行使边框损失,主要差别是,wh不再需要开方操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Educational Codeforces Round 133 (Rated for Div. 2) C. Robot in a Hallway

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

多模态系列-综述Video Understanding with Large Language Models: A Survey

本文是LLM系列文章,针对《Video Understanding with Large Language Models: A Survey》的翻译。 论文链接:https://arxiv.org/pdf/2312.17432v2.pdf 代码链接:https://github.com/yunlong10/Awesome-LLMs-for-Video-Understanding 大型语言模型下的视频理解研究综述 摘要…

人工智能大模型+智能算力,企商在线以新质生产力赋能数字化转型

2024 年3月28 日&#xff0c;由中国互联网协会主办、中国信通院泰尔终端实验室特别支持的 2024 高质量数字化转型创新发展大会暨铸基计划年度会议在京召开。作为新质生产力代表性企业、数算融合领导企业&#xff0c;企商在线受邀出席大会主论坛圆桌对话&#xff0c;与行业专家共…

HDFS、TFS 和 Ceph的对比(通往架构师的路上)

文章目录 一、通见二、表格化展示三、总结 一、通见 下面是一个简化的性能对比表&#xff0c;基于文件系统的设计特点和常见的使用场景&#xff1a; 文件系统文件大小访问模式并发访问量网络延迟存储介质数据冗余策略性能HDFS小随机低中HDD副本低大顺序高中HDD副本高Alluxio小…

JavaEE初阶Day 3:多线程(1)

目录 Day 3&#xff1a;多线程&#xff08;1&#xff09;1. 线程1.1 引入线程的原因1.2 线程的定义1.3 为何线程更轻量1.4 问题 2. 多线程代码2.1 继承Thread重写run2.2 通过实现Runnable接口创建线程2.3 针对2.1的变形使用匿名内部类2.4 针对Runnable创建匿名内部类2.5 使用la…

Lora人机界面开发 3

1 显示原理 液晶的形成&#xff1a;像水一样液晶介于固态和液态之间 偏光原理&#xff1a;两块偏光的栅栏角度相互垂直时光线就完全无法通过 内部结构&#xff1a;利用电场控制液晶分支的旋转 颜色深度 TFT开关的工作原理&#xff1a; 扫描线连接同一列所有TFT栅极电极&…

通过mapreduce程序统计旅游订单(wordcount升级版)

通过mapreduce程序统计旅游订单&#xff08;wordcount升级版&#xff09; 本文将结合一个实际的MapReduce程序案例&#xff0c;探讨如何通过分析旅游产品的预订数据来揭示消费者的偏好。 程序概览 首先&#xff0c;让我们来看一下这个MapReduce程序的核心代码。这个程序的目…

创新视角:探索系统产品可用性测试的前沿分类方法与实践应用

一、可用性测试概念 1、什么是可用性&#xff1f; 任何与人可以发生交互的产品都应该是可用的&#xff0c;就一般产品而言&#xff0c;可用性被定义为目标用户可以轻松使用产品来实现特定目标。 ISO9241/11中的定义是&#xff1a; 一个产品可以被特定的用户在特定的场景中&a…

数据结构之二叉树和平衡二叉树

1、二叉树&#xff1a; package com.datastructure.tree; //一个常用的第三方库是Apache Commons Collections&#xff0c;它提供了一个名为BinaryTree的类&#xff0c;用于表示二叉树。 //可以使用org.apache.commons.collections4.BinaryTree类创建二叉树和进行操作。 //可以…

跨越时空,启迪智慧:奇趣相机重塑儿童摄影与教育体验

【科技观察】近期&#xff0c;奇趣未来公司以其创新之作——“奇趣相机”微信小程序&#xff0c;强势进军儿童AI摄影市场。这款专为亚洲儿童量身定制的应用&#xff0c;凭借精准贴合亚洲儿童面部特征的AIGC大模型&#xff0c;以及丰富的摄影模板与场景设定&#xff0c;正在重新…

Ps:匹配颜色

匹配颜色 Match Color命令可以将一个图像的颜色与另一个图像的颜色相匹配。 Ps菜单&#xff1a;图像/调整/匹配颜色 Adjustments/Match Color 匹配颜色命令可匹配多个图像之间、多个图层之间或者多个选区之间的颜色&#xff0c;还可以通过更改亮度和色彩范围以及中和色痕来调整…

Day17-【Java SE进阶】特殊文本文件、日志技术

一、特殊文本文件 为什么要用这些特殊文件&#xff1f; 存储多个用户的&#xff1a;用户名、密码 存储有关系的数据&#xff0c;做为系统的配置文件做为信息进行传输 日志技术 把程序运行的信息&#xff0c;记录到文件中&#xff0c;方便程序员定位bug、并了解程序的执行情…

Java并发编程基础面试题详细总结

1. 什么是线程和进程? 1.1 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个…

课时84:流程控制_select条件控制_案例实践

1.5.2 案例实践 学习目标 这一节&#xff0c;我们从 case实践、软件部署、小结 三个方面来学习。 case实践 实践3-整合case实践 查看脚本内容 [rootlocalhost ~]# cat simple_select_case.sh #!/bin/bash # select语句的使用# 定制普通环境变量 PS3请选择菜单序号: # 定制…

Solidity全局变量完全测试

Solidity全局变量完全测试 我们知道,在Solidity中有很多全局变量,例如我们最常用的msg.sender, block.timestamp 等。但是有一些我们平常基本接触不到,例如:type(C).name等。本着凡事最怕认真两字的原则,虽然繁琐,但我们将所有的全局变量全部测试一遍,学习怎么调用和应用…

Windows进程监视器Process Monitor

文章目录 Process Monitor操作逻辑 Process Monitor Process Monitor是 Windows 的高级监视工具&#xff0c;是Filemon Regmon的整合增强版本&#xff0c;实时显示文件系统&#xff0c;注册表&#xff0c;网络活动&#xff0c;进程或线程活动&#xff0c;资料收集事件&#x…

阿里云弹性计算通用算力型u1实例性能评测,性价比高

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;ECS通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xf…

记录一次threejs内存泄露问题排查过程

问题描述&#xff1a; 一个有关地图编辑的使用threejs的这样的组件&#xff0c;在多次挂载销毁后&#xff0c;页面开始卡顿。 问题排查&#xff1a; 1. 首先在chrome dev tool中打开performance monitor面板&#xff0c;观察 JS head size、DOME Nodes、Js event listeners数…

函数式编程Haskell基础介绍之基础类型、Glasgow的使用

纯函数式编程是一种编程范式&#xff0c;它的核心思想是通过纯函数的方式来进行编程。纯函数指的是函数的输出仅依赖于输入&#xff0c;并且没有副作用&#xff08;side effects&#xff09;。换句话说&#xff0c;相同的输入始终产生相同的输出&#xff0c;而且函数不会改变任…

5.108 BCC工具之virtiostat.py解读

一,工具简介 virtiostat程序用于跟踪virtio设备以分析IO操作和吞吐量。 例如,客户端挂载了一个9pfs,而我们再也无法通过iostat命令获取IO统计信息。 在这种情况下,我们只能从VIRTIO层而不是块层获取统计信息。 示例 二,代码示例 #!/usr/bin/env pythonfrom __future__…