自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 深度学习在图像处理中的应用(tensorflow2.4以及pytorch1.10实现)

本人在读研期间的研究方向是图像处理以及深度学习(主要是图像分类和目标检测)。在做深度学习时使用的是tensorflow深度学习框架,学习全是自学,很多资源都是在Github上找的。我发现现在Github上很多深度学习的开源项目都是用的tensorflow和pytorch框架。所以现在也开始学习pytorch框架,之前一直用的是tensorflow1.x版本,今年正好迎来了新的tensorlfow大.........

2019-12-10 20:36:50 122642 515

原创 Python多线程加速-休眠部分线程

总所周知Python由于GIL的问题,使用多线程时同一时刻只有一个线程在工作。故Python会在所有线程之间不断的切换,每切换到一个线程会执行一段字节码指令然后切换到另一个线程。,如果不休眠部分线程,那么每次切换到非工作线程时就会一直空转浪费资源,从而拖慢了整体效率。例如下面示例代码,总共启动了20个线程,随机分发100个计算10000阶乘的任务。方法让暂时没工作的线程休眠一会,将更多的工作机会提供给真正需要工作的线程,从而提升了整体效率。

2024-05-14 00:20:36 796 2

原创 Pytorch官方FlashAttention速度测试

接口得到的结果差异有点大(注意,这里计算的Tensor都是FP16精度的),如果我切换到FP32精度差异会再小两个数量级。第二个问题是如果使用FP32的话实测没有明显加速,这个就很奇怪了,官方文档里并没有说专门针对FP16精度优化的。关于这两个问题,暂时猜测是环境问题,或许换个GPU硬件设备或者更新下驱动啥的就可能没有这些问题了。测试前需要将Pytorch的版本更新到2.2及以上,下面是测试代码,一个是原始手写的。,跑了很多次发现确实加速2X左右,看来以后训练或者推理时可以考虑直接使用官方的。

2024-04-10 23:57:30 1580 1

原创 Pytorch导出FP16 ONNX模型

一般Pytorch导出ONNX时默认都是用的FP32,但有时需要导出FP16的ONNX模型,这样在部署时能够方便的将计算以及IO改成FP16,并且ONNX文件体积也会更小。想导出FP16的ONNX模型也比较简单,一般情况下只需要在导出FP32 ONNX的基础上调用下。简单来说就是在推理过程中遇到两种不同类型的数据要计算,torch.cuda.HalfTensor(FP16) 和torch.cuda.FloatTensor(FP32)。并且通过对比可以看到,FP16的ONNX模型比FP32的文件更小(

2024-04-09 23:24:02 2239 3

原创 使用Python制作自己的wheel文件

平时自己利用Python制作一个个小工具后想分享给别人,但又嫌分享一堆项目代码很麻烦,那么你可以考虑将自己的项目打包成一个wheel文件,别人拿到文件后只需。在该文件中描述了制作wheel文件的一些信息,例如wheel包的名称,版本,描述,作者,当前项目依赖的第三方库,协议以及一些快捷脚本的设置等等。是对应当前项目的使用协议,作者可以根据不同用途选择设置不同的协议(这里偷个懒放个空文件)。的作用,这里可以设置一些快捷的启动脚本,例如大家安装了。函数制作为一个快捷的使用脚本,并且这个工具的名称为。

2024-03-07 23:28:24 1661 4

原创 使用nvidia-ml-py实时监控GPU状态

指令,但有时可能不仅仅需要监控,还需要记录状态数据,比如GPU的显存变化以及利用率变化等等。包编写的简易Demo,该Demo能够实现简易版的。平时监控GPU状态最常用的是。

2024-03-06 22:38:39 1338

原创 使用Pytorch导出自定义ONNX算子

在实际部署模型时有时可能会遇到想用的算子无法导出onnx,但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型(注:自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的)。但对于当前导出onnx场景可以不用管它,后面的参数是实际自己传入的参数。方法指定具体导出自定义算子的名称,以及输入的参数(注:上面示例中传入的都是。打开自己导出的onnx文件,可以看到如下所示网络结构。,后面的参数任为实际自己传入的参数,然后通过。方法是在导出onnx时调用的函数。

2024-03-04 23:43:17 1938 7

原创 Python使用graphviz绘制模块间数据流

实现一个Node基类,所有的模块实现都继承自该基类。再实现一个Message基类,模块之间传递的数据都继承自该基类。然后在数据传递过程中记录流经的每个模块的名称以及数据的传递方向即可绘制出想要的数据流。两个文件(如果没有安装graphviz工具是不会生成的),其中。是graphviz的代码形式,执行上述代码后会生成。

2024-01-21 21:09:07 1272 4

原创 libtorch常用函数记录

先占个坑,后续再整理。

2023-12-07 00:44:26 1129 4

原创 使用Pytoch实现Opencv warpAffine方法

随着深度学习的不断发展,GPU/NPU的算力也越来越强,对于一些传统CV计算也希望能够直接在GPU/NPU上进行,例如Opencv的warpAffine方法。Opencv的warpAffine的功能主要是做仿射变换,如果不了解仿射变换的请自行了解。由于Pytorch的图像坐标系(图像左上角对应坐标。图片,左边是通过Opencv warpAffine得到的图片,右边是通过Pytorch grid_sample得到的图片。点,由于Pytorch的图像坐标系是从-1到1,所以对Opencv的坐标做如下变化即可。

2023-12-03 18:38:53 1344 3

原创 pytorch导出rot90算子至onnx

废话不多说,rot90度(以逆时针为例)可以使用翻转和转置实现。具体代码如下,使用torch自带的rot90与自己实现的对比,通过。算子,但又希望一起和模型导出onnx时,可能会遇到如下错误(当前使用环境。简单的说就是不支持导出该算子,包括在onnx支持的算子文档中也找不到。导不出咋办,那就想想旋转矩阵的原理,以及如何使用现有支持的算子替换。rot270度(以逆时针为例)可以使用翻转和转置实现。rot180度(以逆时针为例)可以使用翻转实现。来对比两个Tensor是否一致,结果一致,不信自己试试。

2023-11-26 11:12:22 1278 6

原创 TensorRT安装记录(8.2.5)

根据官方对于TensorRT的介绍可知,TensorRT是一个针对已训练好模型的SDK,通过该SDK能够在NVIDIA的设备上进行高性能的推理。那么TensorRT具体会对我们训练好的模型做哪些优化呢

2022-09-20 16:04:06 18311 15

原创 MobileViT模型简介

自从2010年ViT(Vision Transformer)模型的横空出世,人们发现了Transformer架构在视觉领域的巨大潜力。近些年,越来越多的科研人员投入Transformer的怀抱,视觉领域的各项任务也不断被Transformer架构模型刷新。Transformer虽然强大,但在现在看来落地仍存在很多难点。比如模型参数太大(比如ViT Large Patch16模型光权重就有1个多G),而且算力要求太高,这基本就给移动端部署Transformer模型判了死刑。

2022-09-05 23:43:49 36512 38

原创 U2Net网络简介

U2Net是阿尔伯塔大学(University of Alberta)在2020年发表在CVPR上的一篇文章。该文章中提出的U2Net是针对Salient Object Detetion(SOD)即显著性目标检测任务提出的。而显著性目标检测任务与语义分割任务非常相似,只不过显著性目标检测任务是二分类任务,它的任务是将图片中最吸引人的目标或区域分割出来,故只有前景和背景两类。......

2022-08-09 21:03:20 23057 23

原创 RepVGG网络简介

VGG网络是2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出的。在2014到2016年(ResNet提出之前),VGG网络可以说是当时最火并被广泛应用的Backbone。后面由于各种新的网络提出,论精度VGG比不上ResNet,论速度和参数数量VGG比不过MobileNet等轻量级网络,慢慢的VGG开始淡出人们的视线。...............

2022-07-10 15:31:08 32222 31

原创 YOLOX网络结构详解

在之前文章中我们已经聊过YOLO v5了,今天我们再来聊聊YOLOX。YOLOX是旷视科技在2021年发表的一篇文章,当时主要对标的网络就是很火的YOLO v5,如果对YOLO v5不了解的可以看下我之前的文章。那么在YOLOX中引入了当年的哪些黑科技呢,简单总结主要有三点,decoupled head、anchor-free以及advanced label assigning strategy(SimOTA)。............

2022-06-07 18:12:17 45592 39

原创 FCOS网络解析

在之前讲的一些目标检测网络中,比如Faster RCNN系列、SSD、YOLOv2~v5(注意YOLOv1不包括在内)都是基于Anchor进行预测的。即先在原图上生成一堆密密麻麻的Anchor Boxes,然后网络基于这些Anchor去预测它们的类别、中心点偏移量以及宽高缩放因子得到网络预测输出的目标,最后通过NMS即可得到最终预测目标。那基于Anchor的网络存在哪些问题呢...

2022-05-21 11:05:32 21518 22

原创 HRNet网络简介

这篇文章是由中国科学技术大学和亚洲微软研究院在2019年共同发表的。这篇文章中的HRNet(High-Resolution Net)是针对2D人体姿态估计(Human Pose Estimation或Keypoint Detection)任务提出的,并且该网络主要是针对单一个体的姿态评估(即输入网络的图像中应该只有一个人体目标)。人体姿态估计在现今的应用场景也比较多,比如说人体行为动作识别,人机交互(比如人作出某种动作可以触发系统执行某些任务),动画制作(比如根据人体的关键点信息生成对应卡通人物的动作)等等

2022-05-12 17:27:55 82322 68

原创 Mask R-CNN网络详解

Mask R-CNN是2017年发表的文章,一作是何恺明大神,没错就是那个男人,除此之外还有Faster R-CNN系列的大神`Ross Girshick`,可以说是强强联合。该论文也获得了ICCV 2017的最佳论文奖(`Marr Prize`)。并且该网络提出后,又霸榜了MS COCO的各项任务,包括目标检测、实例分割以及人体关键点检测任务。在看完这边文章后觉得Mask R-CNN的结构很简洁而且很灵活效果又很好(仅仅是在Faster R-CNN的基础上根据需求加入一些新的分支)。

2022-04-05 17:10:04 47031 62

原创 YOLOv5网络详解

在前面我们已经介绍过了YOLOv1~v4的网络的结构,今天接着上次的YOLOv4再来聊聊YOLOv5,如果还不了解YOLOv4的可以参考之前的博文。YOLOv5项目的作者是Glenn Jocher并不是原Darknet项目的作者Joseph Redmon。并且这个项目至今都没有发表过正式的论文。之前翻阅该项目的issue时,发现有很多人问过这个问题,有兴趣的可以翻翻这个issue #1333。作者当时也有说准备在2021年的12月1号之前发表,并承诺如果到时候没有发表就吃掉自己的帽子。...

2022-03-20 14:53:57 229885 159

原创 YOLOv4网络详解

YOLOv4是2020年Alexey Bochkovskiy等人发表在CVPR上的一篇文章,并不是Darknet的原始作者Joseph Redmon发表的,但这个工作已经被Joseph Redmon大佬认可了。之前我们有聊过YOLOv1~YOLOv3以及Ultralytics版的YOLOv3 SPP网络结构,如果不了解的可以参考之前的视频。

2022-03-03 18:06:12 55064 38

原创 Grad-CAM简介

对于常用的深度学习网络(例如CNN),可解释性并不强(至少现在是这么认为的),它为什么会这么预测,它关注的点在哪里,我们并不知道。很多科研人员想方设法地去探究其内在的联系,也有很多相关的论文。今天本文简单聊一聊Grad-CAM,这并不是一篇新的文章,但很有参考意义。通过Grad-CAM我们能够绘制出如下的热力图(对应给定类别,网络到底关注哪些区域)。

2022-02-24 20:40:31 93964 98

原创 更换python源以及anaconda源

将python的pypi源以及anaconda的源换成清华镜像源。

2022-02-15 17:15:25 5560

原创 ConvNeXt网络详解

今年(2022)一月份,Facebook AI Research和UC Berkeley一起发表了一篇文章A ConvNet for the 2020s,在文章中提出了ConvNeXt纯卷积神经网络,它对标的是2021年非常火的Swin Transformer,通过一系列实验比对,在相同的FLOPs下,ConvNeXt相比Swin Transformer拥有更快的推理速度以及更高的准确率,在ImageNet 22K上ConvNeXt-XL达到了87.8%的准确率

2022-01-20 11:35:59 75487 43

原创 DeepLabV3网络简析

接着上篇DeepLab V2,本博文简单介绍下DeepLab V3(建议先去看下之前讲的DeepLab V1和DeepLab V2)。这是一篇2017年发表在CVPR上的文章。个人简单阅读完论文后感觉相比DeepLab V2有三点变化:1)引入了Multi-grid,2)改进了ASPP结构,3)把CRFs后处理给移除掉了。再吐槽一下,这篇论文看着感觉乱糟糟的。本篇博文就不按照论文的顺序去写了,直接按照我个人的想法去写。

2021-12-09 11:12:06 32072 36

原创 DeepLabV2网络简析

这是一篇2016年发布在CVPR上的文章。接着上一篇DeepLab V1网络简介,本文对DeepLab V2网络进行简单介绍。个人感觉相对DeepLab V1,DeepLab V2就是换了个backbone(VGG -> ResNet,简单换个backbone就能涨大概3个点)然后引入了一个新的模块ASPP(Atros Spatial Pyramid Pooling),其他的没太大区别。

2021-12-07 11:17:56 13406 6

原创 DeepLabV1网络简析

原论文名称:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs。这篇文章最早发表于2014年,是Google和UCLA等共同的杰作,也是一篇很经典的论文,DeepLab系列的第一篇论文。因为已经过了很久了,所以本博文只做部分简单的记录。

2021-12-04 19:11:22 20047 8

原创 Swin-Transformer网络结构详解

文章目录0 前言1 网络整体框架2 Patch Merging详解3 W-MSA详解Ω(MSA)\Omega (MSA)Ω(MSA)模块计算量Ω(W−MSA)\Omega (W-MSA)Ω(W−MSA)模块计算量4 SW-MSA详解5 Relative Position Bias详解6 模型详细配置参数0 前言Swin Transformer是2021年微软研究院发表在ICCV上的一篇文章,并且已经获得ICCV 2021 best paper的荣誉称号。Swin Transformer网络是Tran

2021-11-03 21:04:05 220860 157

原创 Pytorch1.10安装记录(CUDA11.3)

Pytorch刚更新到1.10,今天就简单尝个鲜,之前在使用1.9中有很多的UserWarning,在新版本中都已经修复了(强迫者的福音),推荐使用。关于Pytorch1.10更新的内容,请登录Pytorch官网查看。PyTorch官网:https://pytorch.org/文章目录查询NVIDIA GPU算力(可跳过)创建虚拟环境在线安装(CPU/GPU)安装CPU版本安装GPU版本检查GPU驱动版本更新GPU驱动安装Pytorch离线安装(CPU/GPU)安装CPU版本安装GPU版本查询NVI

2021-10-25 15:24:09 66468 26

原创 转置卷积(Transposed Convolution)

import torchimport torch.nn as nndef transposed_conv_official(): feature_map = torch.as_tensor([[1, 0], [2, 1]], dtype=torch.float32).reshape([1, 1, 2, 2]) print(feature_map) trans_conv = nn.ConvTranspose2

2021-10-13 15:27:30 42085 33

原创 Labelme分割标注软件使用

Labelme是一款经典的标注工具,支持目标检测、语义分割、实例分割等任务。今天针对分割任务的数据标注进行简单的介绍。开源项目地址:https://github.com/wkentaro/labelme

2021-09-07 17:16:54 42985 80

原创 EISeg分割标注软件使用

官方原话:EISeg(Efficient Interactive Segmentation)是基于飞桨开发的一个高效智能的交互式分割标注软件。涵盖了高精度和轻量级等不同方向的高质量交互式分割模型,方便开发者快速实现语义及实例标签的标注,降低标注成本。 另外,将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练,便可得到定制化场景的高精度模型,打通分割任务从数据标注到模型训练及预测的全流程。飞桨(PaddlePaddle)是百度开源的深度学习框架,社区也比较活跃,关键是中文方便交流..

2021-09-07 17:06:29 39106 75

原创 pytorch转paddle推理模型

最近有个需求,是将训练好的pytorch模型转成paddlepaddle的inference_model,然后直接使用paddlepaddle载入使用。转换的工具主要使用paddle官方提供的X2paddle,对应项目链接:https://github.com/PaddlePaddle/X2Paddle官方文档中有对应pytorch模型转paddlepaddle模型的教程,但我只需要inference_model,所以我采用的方法是先将训练好的pytorch模型转成ONNX格式,然后在用X2Paddle

2021-08-25 15:15:36 6146 11

原创 Ubuntu18.04安装微信记录

由于现在微信并不支持Linux系统,所以要在Linux环境下使用微信需要借助Wine工具。安装WineHD关于安装Wine可以参考这篇文章,不要安装apt源中的wine,太老了,直接通过wineHD源安装:导入WineHQ 存储库的 GPG 密钥wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -添加WineHD源sudo apt install software-properties

2021-08-23 18:19:24 3837 13

原创 使用k-means聚类anchors

在之前讲yolo理论基础知识时有提到过,从yolov2开始使用的anchors都是通过聚类得到的。如果想了解更多yolo相关的知识可以看看我在bilibili上录得视频:https://www.bilibili.com/video/BV1yi4y1g7ro今天补下之前没有细讲的聚类anchors相关知识,所使用的代码参考的是yolov3 spp以及yolov5中生成anchors的方法。文章目录K-means理论简介K-mean在anchors中的应用yolov5中聚类anchors代码讲解聚类anch

2021-08-14 17:32:29 23886 70

原创 github不再通过验证密码方式push代码

今天是2021年8月13日(情人节),苦涩。在使用账号密码push代码时,提示了如下错误:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.也就是说,从2021年8月13日开始不在支持通过输入账号密码的形式push代码,需要使用personal access token个人访问令牌。其实github很早之前就提示过的

2021-08-14 17:10:55 5130 2

原创 HSV模型简介以及利用HSV模型随机增强图像

文章目录图像HSV模型简介RGB模型转HSV模型opencv关于HSV模型实验随机增强图像HSV图像HSV模型简介HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)(参考百度)。在HSV模型中,颜色是由色度(Hue),饱和度(Saturation),明度(Value)共同组成。 如图所示,HSV模型中色度(H

2021-08-07 15:15:12 28736 6

原创 数据增广:旋转,缩放,平移以及错切

在深度学习(图像领域)中,为了提升训练样本数量数据增广是非常常见的手段。比如:随机水平翻转随机色调(H)、饱和度(S)、明度(V)调整随机旋转,缩放,平移以及错切还有近几年常用的mixup,mosaic等等。今天简单讲讲随机旋转,缩放,平移以及错切方法,因为在之前yolov3 spp项目的数据读取部分有涉及到相关知识。本文会结合opencv来进行演示。文章目录仿射变换旋转、平移与缩放旋转与平移错切仿射变换在opencv中可以通过仿射变换来实现旋转,缩放,平移以及错切等一系列操作。仿射

2021-08-06 14:27:19 12196 7

原创 Wider Face数据集详解

根据官网的介绍,Wider Face数据集是最早是在2015年公开的v1.0版本。该数据集的图片来源是WIDER数据集,从中挑选出了32,203图片并进行了人脸标注,总共标注了393,703个人脸数据。并且对于每张人脸都附带有更加详细的信息,包扩blur(模糊程度), expression(表情), illumination(光照), occlusion(遮挡), pose(姿态),后面会进一步介绍。...

2021-07-22 16:39:07 23738 16

原创 PPOCRLabel使用中遇到的问题以及离线使用

PPOCRLabel是PaddleOCR中提供的一个半自动标注工具,使用起来非常方便,能够大幅提高标注效率。本篇博文简单记录下在使用PaddleLabel中遇见的问题(本篇博文只记录PPOCRLabel的安装使用,关于PaddleOCR的使用请自行阅读文档)。文章目录1 安装PPOCRLabel安装paddlepaddle安装pyqt5安装trash-cli(仅Linux环境需要)安装python-Levenshtein报错:Microsoft Visual C++ 14.0 or greater is

2021-07-10 19:31:03 6009 8

空空如也

空空如也

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

TA关注的人

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