自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 车牌识别 远距离监控视角 自创简化模型 Pytorch

甲方一拍脑门 让我去实现车牌识别 还是远距离监控视角的 真开心数据?呵~ 不会有人期待甲方提供数据吧??先逛逛某宝,一万张车辆图片,0.4元/张。甲方:阿巴阿巴…嗯,那没事了。再逛逛同性交友网站(GitHub),感谢CCPD数据集~ 数量挺多的,标注也很详细,除了车牌矩形框坐标,居然还有车牌4个角点坐标。我看了一下,矩形框标的有点随意了,于是我把角点坐标的最小包络矩形作为新的标注框,随手一个YOLOv5,这车牌检测的任务不就完成了嘛~ 四舍五入,车牌识别项目收工!由于数据搜集的地域原因,其中

2021-07-23 16:13:56 1165 6

原创 【目标检测】YOLOv3手动实现Pytorch代码全流程详解 RCNN、YOLO系列

目标检测概述之前的MTCNN实现了单类多目标的高效检测,而现实中更普遍的任务是多类多目标检测。目标检测可划分为3个发展阶段:传统的目标检测区域选择:滑动窗口特征提取:Harr、SIFT、HOG等特征提取算法分类器:如常用的SVM模型基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;手工设计特征费时费力,且对于多样性的变化没有很好的鲁棒性。基于Region Proposal的深度学习目标检测算法使用 region proposal+CNN 代替传统目标检测使用的 滑动窗口+手

2020-11-09 17:25:00 6599 2

原创 【人脸识别】MTCNN + Arcface全流程详解 Pytorch代码 损失函数发展

人脸识别介绍MTCNN 实现人脸检测,回答了“是不是人脸”和“人脸在哪”的问题,接下来人脸识别要解决的就是“人脸是谁”。人脸识别是目标识别中的一种,本质上也是分类问题,只不过是同类(人脸)中的细分,因为人脸之间相似度很大,这对损失函数的分类能力提出了更高的要求。损失函数发展下面介绍分类损失函数的主要类型和发展历程,及部分pytorch代码。效果图来自 MNIST 数据集,将网络模型倒数第二层输出通道数设为2,将二维分类特征可视化即可。Softmax loss经典的分类损失 Softmax l

2020-10-21 16:35:28 10752 16

原创 【人脸检测】MTCNN 全流程详解 Pytorch代码

概述MTCNN,Multi-task convolutional neural network(多任务卷积神经网络)。该模型利用级联思想,化繁为简,通过三个级联的网络:P-Net(Proposal Network)、R-Net(Refine Network)和O-Net(Output Network),逐层筛选。在每个网络都非常简单,易于训练的同时,实现了高精度的人脸检测。思路人脸检测属于单类多目标检测,相对于单类单目标,实现中有以下问题:人脸数目因为不知道1张图中需要检测多少人脸,也就不能通过

2020-10-21 16:11:39 4468 3

原创 sklearn KMeans聚类报错

在调用sklearn的聚类方法MiniBatchKMeans时。

2023-05-11 15:54:22 989 2

原创 YOLOv5训练报错:result type Float can‘t be cast to the desired output type __int64

【代码】YOLOv5训练报错:result type Float can‘t be cast to the desired output type __int64。

2023-04-24 10:23:55 1118 2

原创 王树森 强化学习RL

策略学习算法步骤:这里还有一个问题我们一直没有考虑,就是这个QπQ_\piQπ​的值怎么算?第一种方法是REINFORCE。因为QπQ_\piQπ​的定义是回报UtU_tUt​的期望,所以我们可以玩完一局游戏后,把真实观测到的utu_tut​作为qtq_tqt​的近似。第二种方法是再用一个神经网络来近似QπQ_\piQπ​,这就有了两个网络,一个负责动作,一个负责评价,这就是Actor-Critic算法。

2023-03-15 16:58:01 1161

原创 YOLOv5 Jetson部署 TensorRT

用TensorRT部署YOLOv5,用的最多的方式就是通过:https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5步骤和教程都已经很详细了,我只是记录一下遇到的问题。

2022-06-20 11:20:28 2556 9

原创 报错 Illegal instruction

记录一个bug在我的Jetson Xavier NX上,使用命令:如果在Python脚本中有:则报错:大部分回答的解决方式是:但我看了一下,已经有这个环境变量了,不是这个问题。查了一圈,在Pytorch论坛找到一个解释:是numpy 1.19.5版本的bug。因为numpy 1.20以上版本不支持python 3.6,我只能重装numpy为1.19.4版本:...

2022-06-20 10:46:07 1172 1

原创 交叉熵损失 理解

刚开始学习神经网络解决分类问题时,对交叉熵损失总是理解起来很模糊,不清楚从何而来,为什么用。网上的讲解总是只侧重一个角度,看了还是云里雾里。我以至今学习和实践经验,梳理一下我的理解。1.实际实现数学是对普遍问题的抽象,很多时候我们一开始就看公式会不容易理解。因此我选择先把公式放一放,先直观看一下在深度学习中交叉熵实际上是怎么算的,其实非常简单。二分类:yyyy^\hat yy^​0.61yyy表示网络输出,一般是经sigmoid函数后,值域在0到1之间,表示分类概率,0

2021-09-29 15:35:08 2156

原创 图像梯度 CAM 热力图 Pytorch代码

由于深度学习的可解释性弱,有时候我们想知道网络模型做出判断的依据是什么。以最简单的图像分类模型为例,一个最简单的办法就是看一下网络输出对网络输入每个像素的梯度,这个梯度表示了当这个像素发生变化的时候,网络输出(分类概率)会随之发生多大的变化,显然,这个梯度越大,说明这个像素对分类结果越重要,将这个梯度图可视化,就可以表示网络更“关注”哪些像素。贴一下Pytorch实现的核心代码,非常简单。data.requires_grad = Trueoutput = net(data)[0]net.zero_

2021-09-27 09:29:01 1650 1

原创 Adam优化器总结

根据李宏毅老师的课程,将梯度下降的学习策略和优化器部分做一个梳理。梯度下降的基本方法是:朝着参数θ\thetaθ的当前梯度ggg的反方向,以η\etaη为步长迈出一步。一个常见的问题就是如何保证不会落入局部最小值,因此有了Momentum(动量) 的概念。仿照现实世界中物体的惯性,在运动时不仅要看当前这一步往哪里迈,还要考虑之前的运动状态,如果之前的步伐很快,就不应该在一步内急停或者急转弯。这样做的好处是可以跳出一些小坑(局部最小值)。动量的实现方法也不复杂,就是将前一步的步伐mmm乘上一个参数λ

2021-08-30 16:04:14 21388 1

原创 YOLOv5 完美实现中文标签显示

首先,网上有好几个显示中文标签的教程了,我为什么还要写呢?哼,很显然,是觉得他们实现的不够完美嘛~YOLOv5在标签显示上,是花了点心思的,标签字体的大小,会根据图片尺寸进行调整,背景颜色条是为了避免图片中的内容干扰标签的展示,网上有的教程直接把字体大小定死了,背景颜色条也去除了,根本就不合理嘛!完全算不上实现。因为OpenCV不支持中文,所以原代码中用来计算字体尺寸的方法cv2.getTextSize()对中文字符是不能正确计算宽度的。因此按网上的另一教程,虽然可以显示中文,但标签的背景颜色条宽度是不

2021-03-11 18:11:40 21714 71

原创 YOLOv5 人脸口罩识别 免费提供数据集

本文分享快速使用YOLOv5训练自己的人脸口罩数据集。第一步是搞数据,并把标注文件处理成YOLOv5格式,这其实是最麻烦的,此处省略1W字,我给同学们整了一个6000张的:人脸口罩数据集。拿走不蟹~下载YOLOv5-3.1版本和模型权重,考虑到模型权重可能下载缓慢,我还上传了一份:模型权重。真是太贴心辣!我习惯把权重文件放在./weight下:懒得每次在命令行里写参数,就直接在文件中改,文件中运行了。/data下创建mask文件目录结构:按自己的需求往里放训练和验证数据,图片和标签的文件名要

2020-12-10 17:02:05 14136 63

原创 强化学习DQN 入门小游戏 最简单的Pytorch代码

本文目的是用最简单的代码,展示DQN玩游戏的效果,不涉及深度学习原理讲解。毕竟,入门如此艰难,唯一的动力不过是看个效果,装个biu……安装OpenAI的游戏库gympip install gym看一下运行效果import gymenv = gym.make('CartPole-v1')print('State shape:', env.observation_space.shape)print('Number of actions:', env.action_space.n)for _

2020-12-08 16:11:58 5555 13

原创 YOLOv5 完整网络模型可视化 pytorch netron

本文分享使用pytorch可视化工具netron查看YOLOv5网络模型结构。正常在控制台pip命令安装pip install netron执行netronC:\Users>netronServing at http://localhost:8080网页打开在YOLOv5中,打开网络模型主文件yolo.py。将模型保存为一个pt文件# Create modelmodel = Model(opt.cfg).to(device)torch.save(model, "m.pt"

2020-12-02 10:45:34 10485 8

原创 GIoU DIoU CIoU loss 损失函数

目标检测任务中,Bounding Box的评估指标是IoU,IoU范围在(0,1)(0,1)(0,1)之间,具有尺度不变性,而且可以衡量各种形状的匹配程度。我们自然会考虑能否将IoU设计为一个损失函数。IoU loss最简单的,直接将1-IoU定义为损失,我自己在简单的目标检测项目中尝试过,基本没有办法学习,主要原因是:当预测框和目标框不相交时,IoU始终为0,损失函数不可导,无法优化。另外这种损失定义方式无法区分IoU的各种情况,同样的IoU值,重叠形状可以有许多种,它们在效果上是有差异的,因此

2020-12-01 15:57:50 10542 2

原创 SmoothL1损失 总结

SmoothL1SmoothL_1SmoothL1​损失函数是L1L_1L1​损失(平均绝对误差MAE)和L2L_2L2​损失(均方误差MSE)的结合。图形就是二次函数和绝对值函数的拼凑,比较简单,主要解释一下为什么这么改。L1L_1L1​损失的特点是:梯度稳定,几乎处处相等,不易梯度爆炸。收敛慢,在0附近会震荡。L2L_2L2​损失的特点是:误差越大,梯度越大,收敛较快,在0附近收敛稳定。对离群点比较敏感,离群点会显著增加损失,并且梯度过大,容易爆炸。综合两者特点,我们希望在0

2020-12-01 11:29:20 1782

原创 Swish Mish 激活函数 理解

Swish是谷歌在17年提出的一个激活函数,形式非常简单,具备无上界有下界、平滑、非单调的特性,性能在总体上优于Relu。y=x∗sigmoid(βx)y=x*sigmoid(\beta x)y=x∗sigmoid(βx)

2020-12-01 10:40:22 5973 7

原创 LSTM 手动实现车牌识别 Pytorch代码

循环神经网络RNN和长短期记忆网络LSTM的原理,许多文章都讲的很清晰,我就不到处抄了……听说实现车牌识别还挺简单的,来尝试一下叭~首先找车牌图片,虽然有一些生成车牌的软件,但是一般不能批量生成,而且我们还要拿到标签进行训练,好叭,自己先写一个看看。软件生成的车牌:我用最简单的代码生成的车牌:emmm,怎么说呢,假得很有层次感。不管了,先把效果跑出来再说,真实数据集反正咱也没办法,让老板花钱去买好了??[裂开]import osimport torchimport numpy as n

2020-11-24 15:25:47 2041 6

原创 Normalization 标准化方法 总结 Batch Layer Instance Group

深度学习卷积神经网络中常见Normalization方法有如下四种:Batch Normalization (BN)Layer Normalization (LN)Instance Normalization (IN)Group Normalization (GN)标准化的公式如下:数据减去均值,除以标准差,再施以线性映射。上述四种标准化的算法主要区别在于求均值μμμ和标准差σσσ的方式不同。将xxx类比为一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 W 个字符。

2020-11-19 18:03:13 400 1

原创 GAN 生成动漫头像 手动实现Pytorch全代码

本文分享手动实现DCGAN生成动漫头像的Pytorch代码。简单来说,DCGAN(Deep Convolutional GAN)就是用全卷积代替了原始GAN的全连接结构,提升了GAN的训练稳定性和生成结果质量。我使用的数据集,5W张96×96的动漫头像。import torchimport torch.nn as nnfrom torch.utils.data.dataloader import DataLoaderfrom torchvision import transforms, dat

2020-11-19 17:03:22 2758 6

原创 Pytorch 转置卷积nn.ConvTranspose2d 参数设置总结

本文总结Pytorch中用转置卷积还原卷积过程的参数设置。直接上栗子,卷积过程:5×5输入特征图,步长s=2s=2s=2,卷积核k=3k=3k=3,填充p=1p=1p=1。输出特征图为5−k+2ps+1=3\displaystyle \frac{5-k+2p}{s}+1=3s5−k+2p​+1=3。转置卷积过程如上图:扩张3×3特征图:相邻2行/列间插入s−1s-1s−1行/列0值,padding同ppp。卷积核同kkk,步长始终为1。看一下Pytorch中转置卷积nn.ConvTran

2020-11-17 15:17:32 9029 3

原创 手动实现ResNet残差网络 Pytorch代码

残差原理网络退化(degradation):因为梯度弥散等原因,在不断加神经网络的深度时,模型准确率会先上升然后达到饱和,再持续增加深度时则会导致准确率下降。残差网络ResNet的出现就是为了解决网络深度变深以后的性能退化问题。ResNet的灵感来源:假设现有一个比较浅的网络(Shallow Net)已达到了饱和的准确率,这时在它后面再加上几个恒等映射层(Identity mapping 即y=x 输出等于输入),这样就增加了网络的深度,并且起码误差不会增加,即更深的网络不应该带来训练集上误差的上升

2020-10-21 16:01:37 2432

原创 深度可分离卷积 深度卷积 逐点卷积

深度可分离卷积 = 深度卷积(Depthwise Convolution) + 逐点卷积(Pointwise Convolution)。深度卷积分组卷积(Group Convolution):输入通道数cinc_{in}cin​,输出通道数coutc_{out}cout​, 将输入feature map分为GGG组,每组分别卷积,最后进行拼接。分组卷积作用:参数量减少为原来的1/G1/G1/G分组前:cincoutk2c_{in}c_{out}k^2cin​cout​k2分组后:cinGc

2020-10-21 15:56:01 9105 1

YOLOv5s 人脸口罩识别 训练权重

近8000张人脸口罩数据集 训练25轮的权重 给不方便训练的同学用来看效果 https://blog.csdn.net/bu_fo/article/details/110921169

2021-03-23

TensorRT-7.2.2.3 win10系统

TensorRT-7.2.2.3.Windows10.x86_64.cuda-11.0.cudnn8.0.zip 官网贼难下,需要的同学自取。

2021-01-29

YOLOv5 人脸口罩图片数据集

约4000张不带口罩的人脸图片+4000张带口罩的人脸图片,含标注文件,符合YOLOv5格式,可直接训练。

2020-12-10

YOLOv5预训练模型权重

YOLOv5四个权重文件 yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt

2020-12-09

GAN动漫头像数据集

5W张96*96的日本动漫头像,用于GAN生成对抗模型的训练。 https://blog.csdn.net/bu_fo/article/details/109800054

2020-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除