目标检测 | YOLO 系列算法发展历程
思维导图
YOLO 系列算法发展历程
学习资料
YOLO 原理简述
YOLO 开山之作 —— YOLOv1
YOLOv2
YOLOv3
学习资料
PaddlePaddle
YOLO 原理简述
以YOLOv1为例,简述YOLO的核心思想。
将图像划分成SxS个网络
物体bbox中心落在哪个网格上,就由该网格对应锚框负责检测该物体。
输出特征图的宽度、高度(H,W)为SxS,即SxS个网格。
输出特征图的通道上有x,y,w,h,Pobject,classification(one hot)x,y,w,h,P_{object},classification(one \; hot)x,y,w,h,Pobject,classification(onehot)等信息。
在官方提出的YOLOv1中,特征图的每个位置预测两个bounding box(bbox),而每个bbox包含五个输出参数:置信度,矩形框参数,共10个参数,再加上20个类别,一共就是30了。置信度C的作用是判断此处是否有目标的中心点。每个网格都会给出5B+C5B+C5B+C个预测参数,因此,网络最终 ...
深度学习 | Python 数据分析
前言
本文章转载自[作者丨Jack Stark@知乎](https://zhuanlan.zhihu.com/p/104119343)
Python数据分析主要用到numpy、pandas等库,虽然简单,但是没事多复习一下,可以减少使用时搜索查询的时间。
np.ndarray, pd.Series和pd.DataFrame的属性和方法
np.array的属性和方法见
https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.htmldocs.scipy.org/doc/numpy/reference/arrays.ndarray.html
pd.Series的属性和方法见
pandas.Series - pandas 0.25.3 documentationpandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html
pd.DataFrame的属性和方法见
pandas.DataFrame - pandas 0.25.3 documenta ...
深度学习 | PyTorch 常用代码段
前言
本文章转载自[作者丨Jack Stark@知乎](https://zhuanlan.zhihu.com/p/104019160)
PyTorch最好的资料是官方文档。本文是PyTorch常用代码段,在参考资料[1](张皓:PyTorch Cookbook)的基础上做了一些修补,方便使用时查阅。
基本配置
导入包和版本查询
1234567import torchimport torch.nn as nnimport torchvisionprint(torch.__version__)print(torch.version.cuda)print(torch.backends.cudnn.version())print(torch.cuda.get_device_name(0))
可复现性
在硬件设备(CPU、GPU)不同时,完全的可复现性无法保证,即使随机种子相同。但是,在同一个设备上,应该保证可复现性。具体做法是,在程序开始的时候固定torch的随机种子,同时也把numpy的随机种子固定。
123456np.random.seed(0)torch.manual_se ...
目标检测 | YOLOv3 训练/预测参数详解
YOLOv3
源代码使用的是 YOLOv3 🚀 by Ultralytics, GPL-3.0 license。
参考资料:
https://blog.csdn.net/IT_charge/article/details/119208680
https://blog.csdn.net/IT_charge/article/details/119180151
训练参数详解
–weights
用于指定一个预训练模型(用路径指定),用这个模型初始化模型中一些参数。
default 默认ROOT根目录下的yolov3.pt文件。
–cfg
cfg 为 configuration(设置)的缩写,用于进行模型的配置。
default 用于选择 model 文件。
选择的文件通常是下面这些:
也有部分YOLOv3的实现会使用.cfg文件。
在这些模型文件中,设定了模型的网络结构。例如上图中,使用骨干网络为 darknet53 。
–data
用于指定训练数据集的配置文件。
像是这样:
path 是数据集根目录,train 是训练集(相对于根目录),val 是验证集,test是可 ...
目标检测 | RCNN 系列算法优化策略
思维导图
RCNN 系列算法优化策略
FPN
网络结构
目标检测实现方法
FPN 结构下的 RPN 网络
FPN 结构下的 RoI Align
Cascade R-CNN
IoU 的分析
网络结构
Libra R-CNN
FPN 特征融合
采样策略
Loss
FPN
FPN 全称为 Feature Pyramid Network。
构造多尺度金字塔,期望模型能够具备检测不同大小尺度物体的能力。
Featurized image pyramid:将输入图像缩放到不同尺度,使用多个模型进行预测
Single feature map:仅使用最后一层的特征作为检测模型后续部分的输入
Pyramidal feature hierarchy:每个层级分别预测
Feature Pyramid Network(FPN):将不同层的特征进行融合再分级预测
网络结构
输入为骨干网络每一层的输出;将特征进行上采样,再与上一层特征相加得到 FPN 结构每一层的输出, FPN 结构和骨干网络是相互独立的。
目标检测实现方法
在骨干网络之后增加FPN网络,此 ...
目标检测 | RCNN 系列目标检测算法详解
思维导图
RCNN 系列
R-CNN
R-CNN 网络结构
R-CNN 网络效果
Fast-RCNN
Fast-RCNN 网络结构
Fast-RCNN 网络效果
Faster-RCNN
Faster-RCNN 网络结构
Anchor(锚框)
RPN
训练策略
监督信息
Loss
回归分支 Loss 计算公式
生成 Proposals
RoI Pooling
RoI Pooling 不足
RoI Align
BBox Head
训练策略
监督信息
Loss
效果
R-CNN
用深度学习分类模型提取特征方法替代传统图像特征提取算法。
R-CNN 核心思想:对每张图片选取多个区域,然后每个区域作为一个样本进入一个卷积神经网络来抽取特征。
R-CNN 网络结构
每张图会通过Selective Search提取2000个候选区域
每个区域被warped到卷积网络要求的输入大小,然后通过卷积网络得到一个输出,作为这个区域的特征
使用这些特征来训练多个SVM来识别物体,每个SVM预测一个区域是不是包含某个物体
使用这些区域特征来训练线 ...
目标检测 | 目标检测综述
思维导图
目标检测综述
定义
存在的挑战
目标检测发展历程
传统目标检测算法
深度学习的目标检测算法
深度学习的优势
传统机器视觉的局限
深度学习算法的独特优势
RCNN 系列
RCNN
Fast-RCNN
Faster-RCNN
Anchor 和 Anchor-Based 方法
两阶段方法
一阶段方法
Anchor 缺点
Anchor-Free 方法
基于关键点的检测算法
基于中心的检测算法
三种算法对比
基本术语
BBox
Anchor
RoI
Region Proposal
RPN
IoU
mAP
NMS[3][4]
常用开源数据集
学习资料
PaddlePaddle
大话目标检测经典模型(RCNN、Fast RCNN、Faster RCNN)
《目标检测手把手入门教程》中的《Backbone与Detection head》 作者:Kissrabbit(知乎)
定义[1]
目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。
它将目标的分割和识别 ...
数字图像处理 | 一个简易提取圆形的工具
背景
最近这段时间,我在我的博客的友情链接功能中完成了新的特性。就像下面这幅图一样,可以在卡片上显示院校校徽。
不过这其中有一个问题是,这些院校的校徽素材网上并没有现成的,所以还得我自己来进行处理。
于是乎我打开了图像处理软件 Photoshop 来处理这些图片素材。
Photoshop 处理流程(以厦门大学为例)
新建图片
新建一张大小为300x300的条件,这个大小是我根据自己的需要设定为标准的。
网上收集校徽素材
打开百度搜索合适的校徽素材,一般要求就是清晰,背景简单不复杂。
然后直接使用截图工具截图,这里为了后续自由变换比较方便,截图时直接截取正方形大小的区域。
调整大小和位置
粘贴至Photoshop中后,用自由变换调整大小,使得校徽刚好内切于这个正方形。就像下面这张图所呈现的一样。
把背景变透明
直接使用魔棒工具选中周围的白色区域,然后删除它们。
最终效果
最终效果如图所示。
虽然有PS的帮助,这项工作变得没有那么麻烦,可要处理数量如此繁多的图像,一张一张来还是有些麻烦。于是我开始思考,这个过程能不能用程序来辅助呢?遂进入这篇文章的正题:一 ...
Unity | Unity 窗口介绍
前言
这篇文章是对Unity软件的窗口进行一个简单的介绍。
在Unity调整到2 by 3布局下,可以更好地看见这几个窗口。
Scene 场景编辑窗口
左边的工具栏可以使用Q``W``E``R``T``Y的快捷键来快速切换。它们的功能分别是:
在屏幕方向对画面进行平移。
调整物体的x, y, z坐标位置。
调整物体的旋转角度。
调整物体的缩放大小。
框选多个物体。
从图标上可以知道它是W``E``R的结合。
按住右键,再操作W``A``S``D``Q``E可以在里面“体验”一下。
Game 游戏运行窗口
游戏的窗口,可以通过这些个按钮来操作。
上面工具栏:
Game/Simulator:桌面端和移动端
Display 1:显示第几个Camera的视角(?)
Free Aspects:画面比例
Scale:放大倍数
Play Focused:里面有个maximized,是下次play时全屏播放
Mute Audio:静音
Stats:显示硬件数据
Gizmos:可视化辅助工具
Hierarchy 场景物体列表窗口
显示场景中已有的物体,双击物体,镜头会移动到物 ...
算法笔记 | KMP算法
定义
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)[1]。
上面这个next()函数,有的地方也把它叫做fail()函数。
背景问题
例如对于下面一个文本串:
ABCDABABCDEAB
模式串为ABCDE
直接可以想到的解法就是,用一个双重循环移位去一位一位地比较。就像下面这个代码:
12345678910111213string a="ABCDABABCDEAB",b="ABCDE";int lena=a.length(),lenb=b.length();bool flag;for(int i=0;i<lena;++i){ for(int j=0;j<=lenb;++j){ ...





