Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >目标检测 | YOLOv1,经典单阶段Anchor-Free目标检测模型

目标检测 | YOLOv1,经典单阶段Anchor-Free目标检测模型

作者头像
Justlovesmile
发布于 2022-03-30 07:30:55
发布于 2022-03-30 07:30:55
1.3K00
代码可运行
举报
文章被收录于专栏:云+分享云+分享
运行总次数:0
代码可运行

PS:参考YOLO官网的配色和logo做的封面图,感觉还挺好看的,hhhh

You Only Look Once: Unified, Real-Time Object Detection

论文发表:CVPR 2016 论文链接:You Only Look Once: Unified, Real-Time Object Detection (cv-foundation.org) 论文官网:YOLO: Real-Time Object Detection (pjreddie.com)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@inproceedings{redmon2016you,
  title={You only look once: Unified, real-time object detection},
  author={Redmon, Joseph and Divvala, Santosh and Girshick, Ross and Farhadi, Ali},
  booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition},
  pages={779--788},
  year={2016}
}

1. 归纳总结

标签

目的

方法

总结

#Anchor-Free

解决两阶段算法检测慢的问题

将目标检测(cls和reg)都视为回归问题

经典单阶段算法

2. 问题背景

随着深度学习的大火,在YOLO提出那一年,主流的目标检测算法框架主要分为两类:

  • 两阶段算法:基于Region Proposal的RCNN系列算法,先生成Proposal,再分类回归
  • 单阶段算法:直接预测不同目标的类别和位置 这两种算法各有优点,一般而言,两阶段算法准确度高,但速度慢;单阶段算法速度快,但准确度相对低。

作者认为人可以一眼看到目标在哪,并且能立即知道是什么,并且对于很多实际场景而言,如自动驾驶,实时性和准确性都是非常重要的。

3. 主要工作

针对上述问题,作者提出了经典的YOLO算法,它是一个统一的,端到端的单阶段目标检测算法。YOLO具体做法是,首先将输入图片缩放到448x448,然后送入CNN网络,最后使用NMS过滤网络预测结果得到检测的目标。

而在CNN网络里,它首先将图片划分为S×S大小的网格,然后每个单元格负责检测中心点落在该格子的目标,如下图,每个单元格会输出B个边界框(每个边界框输出5个预测值:x, y, w, h, confidence)以及边界框类别概率C,例如:作者在PASCAL VOC的检测实验里使用S=7,B=2,C=类别数量20,一共预测7×7×(2×5+20)个向量。同时这里的confidence代表边界框置信度,它的定义为:

Pr(object)×IoUtruthpred

其中边界框包含目标时,Pr(object)=1,否则为0。而C代表每个类别的置信度,即:

Pr(Classi|Object)×Pr(objec)×IoUtruthpred=Pr(classi)×IoUtruthpred

3.1 模型结构

YOLO采用卷积网络来提取特征,然后使用全连接层来得到预测值。网络结构参考GooLeNet模型,包含24个卷积层和2个全连接层。对于卷积层,主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数max(x,0.1x),但是最后一层却采用线性激活函数。

3.2 模型训练

在训练之前,先在ImageNet上进行了预训练,其预训练的分类模型采用图8中前20个卷积层,然后添加一个average-pool层和全连接层。预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层。由于检测任务一般需要更高清的图片,所以将网络的输入从224x224增加到了448x448。

3.3 模型损失

Yolo算法将目标检测看成回归问题,所以采用的是均方差损失函数。但是对不同的部分采用了不同的权重值。首先区分定位误差和分类误差。对于定位误差,即边界框坐标预测误差,采用较大的权重 λcoord=5 。然后其区分不包含目标的边界框与含有目标的边界框的置信度,对于前者,采用较小的权重值 λnoobj=0.5 。其它权重值均设为1。然后采用均方误差,其同等对待大小不同的边界框,但是实际上较小的边界框的坐标误差应该要比较大的边界框要更敏感。为了保证这一点,将网络的边界框的宽与高预测改为对其平方根的预测,即预测值变为(x,y,w,h)

损失函数中,第一项为边界框中心坐标的误差项,1objij 是指第 i 个单元格存在目标,且该单元格中的第 j 个边界框负责预测该目标,第二项是边界框的高与宽的误差项。第三项是包含目标的边界框的置信度误差项。第四项是不包含目标的边界框的置信度误差项。最后一项是包含目标的单元格的分类误差项,1obji值是指第 i 个单元格存在目标。

4. 实验结果

5. 参考文献

目标检测|YOLO原理与实现 - 知乎 (zhihu.com)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elasticsearch BBQ与OpenSearch FAISS:向量搜索性能对比
基于二进制量化的向量搜索:Elasticsearch使用BBQ技术比OpenSearch搭配FAISS快5倍。我们收到社区要求,希望能解释Elasticsearch与OpenSearch在语义搜索/向量搜索方面的性能差异。因此,我们进行了一系列性能测试,以提供清晰、数据驱动的比较。
点火三周
2025/04/22
3140
Elasticsearch BBQ与OpenSearch FAISS:向量搜索性能对比
Elasticsearch向量搜索进化史:从7.x到8.15的关键创新
回顾在Elasticsearch从最早版本到最新8.15.0版本中,关于速度、规模和相关性的所有变化,真是令人惊叹,我们已经走了多远。
点火三周
2024/09/11
1.1K0
Elasticsearch向量搜索进化史:从7.x到8.15的关键创新
Elasticsearch vs. OpenSearch: 向量搜索性能比较
TLDR: Elasticsearch 的速度高达 OpenSearch 的 12 倍 - 我们在 Elastic 收到了大量关于 Elasticsearch 和 OpenSearch 性能差异的询问,特别是在语义搜索/向量搜索方面。为了解决这个问题,我们进行了性能测试,以提供一个清晰的数据驱动比较。结果显示,Elasticsearch 的向量搜索速度高达 OpenSearch 的 12 倍,因此需要的计算资源更少。这反映了 Elastic 在巩固 Lucene 作为最佳向量数据库方面的专注,适用于搜索和检索用例。
点火三周
2024/07/05
9890
Elasticsearch vs. OpenSearch: 向量搜索性能比较
京东ES支持ZSTD压缩算法上线了:高性能,低成本
导读 京东ES支持ZSTD压缩算法上线了,这是一种高性能、低成本的压缩算法,能够提高数据存储和传输的效率,同时降低存储和带宽成本。ZSTD算法是一种快速压缩算法,可提供比其他压缩算法更高的压缩比和更快的压缩速度。这意味着,京东ES用户可以更高效地存储和传输数据,同时节省存储和带宽成本。此外,ZSTD算法还具有更好的可扩展性和鲁棒性,可满足大规模分布式系统的需求。因此,京东ES支持ZSTD压缩算法上线,将为用户带来更高的性能、更低的成本和更好的体验。
京东技术
2024/03/18
5200
京东ES支持ZSTD压缩算法上线了:高性能,低成本
ES8 向量功能窥探系列(一):混合搜索功能初探与增强
Elasticsearch 8.x 引入了强大的向量搜索功能,使得在大规模数据集上进行高效的k近邻(kNN)搜索成为可能。向量搜索在许多应用场景中都非常重要,例如RAG、推荐系统、图像搜索等等。本文旨在深入浅出地剖析Elasticsearch 8.x的kNN搜索和混合搜索功能,介绍其实现原理和关键技术点。同时,我们还将解读腾讯云ES对社区做出的相关贡献,通过源码级别的解读,帮助读者更好地理解和应用Elasticsearch的向量搜索功能。
Rassyan
2024/07/02
2.8K2
ES8 向量功能窥探系列(一):混合搜索功能初探与增强
RAG实战|向量数据库LanceDB指南
LanceDB是一个开源的用 Rust 实现的向量数据库(https://github.com/lancedb/lancedb),它的主要特点是:
用户1904552
2025/03/31
5560
RAG实战|向量数据库LanceDB指南
Elasticsearch 中的向量搜索:设计背后的基本原理
您有兴趣了解 Elasticsearch 向量搜索的特性以及设计是什么样子吗?一如既往,设计决策有利有弊。本博客旨在详细介绍我们在 Elasticsearch 中构建向量搜索时候如何做各种选择。
点火三周
2023/07/11
2.6K0
Elasticsearch 中的向量搜索:设计背后的基本原理
向量检索(RAG)之向量数据库研究
研究内容主要包括:是否开源,支持的功能有哪些(是否支持暴力检索,支持哪些索引),是否有可视化界面,是否支持标量过滤。
码之有理
2025/03/05
1.6K1
解读向量数据库
不论是RAG,还是Agent,几乎每个LLM 驱动的应用程序都可能会用到向量数据库。那么,向量数据库是什么?与传统数据库有何不同? 又如何选择向量数据库呢? 本文是老码农关于向量数据库的学习笔记。
半吊子全栈工匠
2023/11/27
2.2K0
解读向量数据库
​ES查询优化随记1: 多路向量查询 & KNN IO排查 & 高效Filter使用
哈哈最近感觉自己不像算法倒像是DB,整天围着ES打转,今天查IO,明天查内存,一会优化查询,一会优化吞吐。毕竟RAG离不开知识库,我们的选型是ES,于是这一年都是和ES的各种纠葛。所以顺手把近期获得的一些小tips记下来,万一有人和我踩进了一样的坑,也能早日爬出来。当前使用的ES版本是8.13,和7版本有较大的差异,用7.X的朋友这一章可能有不适配。本章主要覆盖以下
风雨中的小七
2025/05/09
2630
​ES查询优化随记1: 多路向量查询 & KNN IO排查 & 高效Filter使用
突破性进展:在 Elasticsearch 和 Lucene 中应用更好的二进制量化 (BBQ) 实现高效向量搜索
嵌入模型输出的 float32 向量通常过大,不利于高效处理和实际应用。Elasticsearch 支持 int8 标量量化以减小向量大小,同时保持性能。其他方法会降低检索质量,不适合实际使用。在 Elasticsearch 8.16 和 Lucene 中,我们引入了更好的二进制量化 (Better Binary Quantization, BBQ),这是一种新方法,基于新加坡南洋理工大学研究人员提出的“RaBitQ”技术的见解开发。
点火三周
2024/11/18
6010
突破性进展:在 Elasticsearch 和 Lucene 中应用更好的二进制量化 (BBQ) 实现高效向量搜索
10分钟入门faiss相似向量检索
faiss全称 Facebook AI Similarity Search,是FaceBook的AI团队针对大规模向量 进行 TopK 相似向量 检索 的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。
lyhue1991
2023/09/05
4.2K0
10分钟入门faiss相似向量检索
Lucene 中的标量量化:如何优化存储和搜索向量
HNSW 是一种功能强大且灵活的存储和搜索向量的方法,但它需要大量内存才能快速运行。例如,查询 100 万个 768 维度的 float32 向量大约需要 3GB 的 RAM。一旦开始搜索大量向量,这将变得非常昂贵。通过字节量化可以节省大约 75% 的内存。Lucene 以及 Elasticsearch 早已支持字节向量的索引构建,但这些向量的构建一直是用户的责任。这种情况即将改变,因为我们在 Lucene 中引入了 int8 标量量化。
点火三周
2024/07/03
5870
Lucene 中的标量量化:如何优化存储和搜索向量
.NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
Milvus 是一个强大的工具,帮助开发者处理大规模向量数据,尤其是在人工智能和机器学习领域。它可以高效地存储和检索高维向量数据,适合需要快速相似性搜索的场景。在 .NET 环境中,开发者可以通过 Milvus C# SDK 轻松连接和操作 Milvus 服务器,包括创建集合、插入数据和执行搜索等操作。
AI.NET 极客圈
2025/04/28
2910
.NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
腾讯云ES向量功能窥探系列(一):混合搜索功能初探与自研特性增强
熟悉 Elasticsearch 的朋友对查询的几个阶段一定不陌生:Query Phase 和 Fetch Phase。
腾讯QQ大数据
2024/08/05
3530
腾讯云ES向量功能窥探系列(一):混合搜索功能初探与自研特性增强
Hello, Vector DB | AIGC 时代,你需要一个真正的向量数据库么?
答案很简单,这取决于开发者的应用场景。举个例子,晚饭选择去一家五星级餐厅用餐或是是快餐店,往往和你的胃口和期望有关。
Zilliz RDS
2023/10/28
1.1K0
Hello, Vector DB | AIGC 时代,你需要一个真正的向量数据库么?
在Elasticsearch中如何选择精确和近似的kNN搜索
语义搜索 是一个用于相关度排序的强大工具。它不仅使用关键词,还考虑文档和查询的实际含义。
点火三周
2024/05/26
9730
在Elasticsearch中如何选择精确和近似的kNN搜索
Elasticsearch:普通检索和向量检索的异同?
《Elasticsearch 向量搜索的工程化实战》文章一经发出,收到很多留言。读者对向量检索和普通检索的区别充满了好奇,所以就有了今天的文章。
铭毅天下
2022/02/09
5.1K0
Lucene索引文件解析
Lucene作为最优秀的开源搜索引擎,内部实现了复杂的架构和算法,用来支撑对海量数据的存储和搜索。Lucene的存储和搜索都与底层的索引文件息息相关,Lucene发展过程中,也不断对索引文件格式进行优化和调整:
Yiwenwu
2024/05/25
5580
Lucene索引文件解析
使用 Elasticsearch 进行大规模向量搜索的设计原则
在设计向量搜索体验时,可供选择的方案众多,可能让人感到不知所措。最初管理少量向量相对简单,但随着应用规模的扩大,这很快会成为瓶颈。
点火三周
2024/07/03
9260
使用 Elasticsearch 进行大规模向量搜索的设计原则
推荐阅读
相关推荐
Elasticsearch BBQ与OpenSearch FAISS:向量搜索性能对比
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验