![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
文章平均质量分 73
工头阿乐
一起进步
展开
-
windows系统搭建OCR半自动标注工具PaddleOCR
PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。原创 2024-04-09 15:04:35 · 1740 阅读 · 0 评论 -
基于Pytorch搭建分布式训练环境
随着近几年大模型的问世,传统的单机单卡模式已经无法满足超大模型进行训练的要求,如何更好地、更轻松地利用多个 GPU 资源进行模型训练成为了人工智能领域的热门话题。我们今天为大家带来的这篇文章详细介绍了一种名为 DDP(Distributed Data Parallel)的并行训练技术,作者认为这项技术既高效又易于实现。(1) DDP 的核心思想是将模型和数据复制到多个 GPU 上并行训练,然后汇总平均梯度。原创 2024-03-08 17:02:02 · 1388 阅读 · 0 评论 -
KL散度和交叉熵的应用介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释和比较。在本文中,我们介绍了KL散度和交叉熵这两个概念,并比较了它们之间的异同。KL散度用于比较两个概率分布之间的差异,而交叉熵用于衡量模型预测和真实标签之间的差异。尽管它们有一定的联系,但它们在使用和应用上还是有所区别。原创 2024-03-07 17:06:59 · 922 阅读 · 0 评论 -
通过实验验证GAP、GMP、FC性能表现
简单来说,就是在卷积层之后,用GAP替代FC全连接层。有两个有点:一是GAP在特征图与最终的分类间转换更加简单自然;二是不像FC层需要大量训练调优的参数,降低了空间参数会使模型更加健壮,抗过拟合效果更佳。我们再用更直观的图像来看GAP的工作原理:假设卷积层的最后输出是h × w × d 的三维特征图,具体大小为6 × 6 × 3,经过GAP转换后,变成了大小为 1 × 1 × 3 的输出值,也就是每一层 h × w 会被平均化成一个值。原创 2024-02-29 11:23:57 · 995 阅读 · 0 评论 -
如何查看onnx网络结构和参数
https://github.com/DefTruth/lite.ai.toolkithttps://www.zhihu.com/question/386526462原创 2023-10-19 17:26:55 · 423 阅读 · 0 评论 -
Retinaface 人脸检测及数据集介绍
数据集介绍WIDER FACE 数据集是一个人脸检测基准数据集,其中图像选自公开可用的WIDER 数据集。我们选择了 32,203张图像并这些采集的图像中共标记了393,703 个人脸,在尺度、姿势和遮挡方面具有高度可变性,如样本图像中所示。WIDER FACE 数据集基于 61 个事件类进行组织。对于每个事件类,我们随机选择 40%/10%/50% 的数据作为训练、验证和测试集。我们采用与PASCAL VOC 数据集相同的评估指标。类似于MALF和加州理工学院数据集。原创 2023-07-20 12:06:20 · 727 阅读 · 0 评论 -
NVIDIA Deep Learning Accelerator (DLA) 输入输出的几种张量格式
DLA_LINEAR 是 NVIDIA Deep Learning Accelerator (DLA) 所支持的一种内存组织方式,它是一种行优先存储的连续内存块格式,用于存储卷积层和全连接层的输入输出数据。在 DLA_LINEAR 格式中,每个元素都是一个定点数,可以是 8 位或 16 位,具体取决于网络的精度要求。在 DLA_LINEAR 格式中,一维数组中的每个元素都是一个定点数,代表了卷积核或全连接层的一个输入或输出通道的值。原创 2023-07-14 21:37:31 · 829 阅读 · 0 评论 -
TextFuseNet:具有更丰富融合特征的场景文本检测
自然场景中任意形状文本的检测是一个极具挑战性的问题任务。不像现有的文本检测方法都是基于有限的特征表示,本文提出了一种新的文本检测框架TextFuseNet,以探索利用更丰富的特征融合进行文本检测。更具体地说,我们提出从字符、单词和全局三个层次的特征表示来感知文本,然后引入一种新的文本表示融合技术来实现鲁棒的任意文本检测。多层次特征表示可以在保持文本整体语义的同时,通过将文本分解为单个字符来精确地描述文本。原创 2023-07-06 15:56:22 · 305 阅读 · 0 评论 -
深度学习-目标检测之边界框bbox坐标转换公式汇总
可以转换以下三种格式的输入数据 list,numpy,tensor,维度可以从0维到2维, 也就是shape为:(4,) (3, 4) torch.Size([4]) torch.Size([3, 4])的边界框数据。尝试着写了一个可以转换任何维度的任意格式的bbox函数。原创 2023-07-02 21:34:10 · 888 阅读 · 0 评论 -
深度学习之神经网络量化理解
刚开始接触神经网络,对量化是2年前那会,用NCNN和TVM在树莓派上部署一个简单的SSD网络。那个时候使用的量化脚本是参考于TensorRT和NCNN的PTQ量化(训练后量化)模式,使用交叉熵的方式对模型进行量化,最终在树莓派3B+上部署一个简单的分类模型(识别剪刀石头布静态手势)。这是那会的一篇文章,略显稚嫩哈哈:一步一步解读神经网络编译器TVM(二)——利用TVM完成C++端的部署转眼间过了这么久啦,神经网络量化应用已经完全实现大面积落地了、相比之前成熟多了!原创 2023-04-29 22:09:04 · 1990 阅读 · 1 评论 -
polygraphy深度学习模型调试器使用教程
Polygraphy在我进行模型精度检测和模型推理速度的过程中都有用到,因此在这做一个简单的介绍。使用多种后端运行推理计算,包括 TensorRT, onnxruntime, TensorFlow;比较不同后端的逐层计算结果;由模型生成 TensorRT 引擎并序列化为.plan;查看模型网络的逐层信息;修改 Onnx 模型,如提取子图,计算图化简;分析 Onnx 转 TensorRT 失败原因,将原计算图中可以 / 不可以转 TensorRT 的子图分割保存;原创 2023-04-14 16:45:01 · 2062 阅读 · 0 评论 -
pth模型文件转为onnx格式
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。原创 2023-04-14 14:52:09 · 6287 阅读 · 0 评论 -
CUDA效率优化之CUDA Graph的使用
GPU 架构的性能随着每一代的更新而不断提高。现代 GPU 每个操作(如kernel运行或内存复制)所花费的时间现在以微秒为单位。但是,将每个操作提交给 GPU 也会产生一些开销——也是微秒级的。实际的应用程序中经常要执行大量的 GPU 操作:典型模式涉及许多迭代(或时间步),每个步骤中有多个操作。如果这些操作中的每一个都单独提交到 GPU 启动并独立计算,那么提交启动开销汇总在一起可能导致明显的整体性能下降。CUDA Graphs 将整个计算流程定义为一个图而不是单个操作的列表。原创 2023-04-12 17:45:56 · 1340 阅读 · 0 评论 -
通过阿里云函数计算解决ChatGPT API的调用问题
自2022年11月30日 OpenAI 发布 ChatGPT 以来,虽然时有唱衰的声音出现,但在OpenAI不断推陈出新,陆续发布了OpenAPI、GPT-4、ChatGPT Plugins之后,似乎让大家看到了一个聊天机器人往操作系统入口进军的升纬之路。ChatGPT能被认为是操作系统级别的入口平台,那么必然会催生各行各业应用的重新入局。对此,作为一名开发者来说,面对这样的变革,应该尽早的去了解与实践,在蓝海里更容易找到一份自己的位置。目前DD知道的就有不少小伙伴在基于其API做一些出海的应用。原创 2023-04-11 20:57:48 · 8619 阅读 · 0 评论 -
PyTorch C++系列教程2:使用自定义数据集
在上一篇文章中,我们讨论了如何使用 PyTorch C++ API 实现 VGG-16 来识别 MNIST 数据集。这篇文章我们讨论一下如何用 C++ API 使用自定义数据集。在下一篇教程中,我们将介绍如何在 CNN 中使用自定义的 data loader。原创 2023-04-04 20:38:19 · 381 阅读 · 0 评论 -
PyTorch C++系列教程1:用 VGG-16 识别 MNIST
本文讲解如何用 PyTorch C 实现 VGG-16 来识别 MNIST 数据集。完整代码请参考:参考资料。原创 2023-04-04 20:11:24 · 461 阅读 · 0 评论 -
模型部署入门教程汇总
OpenMMLab 的算法如何部署?是很多社区用户的困惑。而模型部署工具箱 MMDeploy 的开源,强势打通了从算法模型到应用程序这 “最后一公里”!原创 2023-04-03 20:10:06 · 424 阅读 · 0 评论 -
人脸情绪识别开源代码、模型以及说明文档
各个模型我们存放在百度云盘 https://pan.baidu.com/s/1mM-APWoLV5P3nvrzmG–Jg 提取码 1gyh。我们将上述八个模型的结果进行集成,最终生成的文件放在prediction_result下面的result.csv文件中。上述8个模型的预测结果统一放在user_data/tmp_data里面,下面使用集成方法对上述八个模型的结果进行整合。是你训练得到模型的名字,如果你自己训练了其中的一些模型,请将对应的名称修改为训练得到模型的名称。因为是训练八个模型,分别是。原创 2023-03-31 10:38:28 · 693 阅读 · 0 评论 -
PyTorch框架训练的几种模型区别
在PyTorch中,.pt、.pth和.pth.tar都是用于保存训练好的模型的文件格式,它们之间的主要区别如下:.pt文件是PyTorch 1.6及以上版本中引入的新的模型文件格式,它可以保存整个PyTorch模型,包括模型结构、模型参数以及优化器状态等信息。.pt文件是一个二进制文件,可以通过torch.save()函数来保存模型,以及通过torch.load()函数来加载模型。.pth文件是PyTorch旧版本中使用的模型文件格式,它只保存了模型参数,没有保存模型结构和其他相关信息。原创 2023-03-29 15:42:13 · 7286 阅读 · 0 评论 -
NVIDIA监控工具nvtop使用方法
其它相关《NVIDIA查看CPU、内存、GPU使用情况》原创 2022-12-14 14:54:17 · 2127 阅读 · 0 评论 -
CUDA网格(Grid)、线程块(Block)和线程(Thread)的组织关系
CUDA中每一个线程都有一个唯一的标识ID—ThreadIdx,这个ID随着Grid和Block的划分方式的不同而变化,这里给出Grid和Block不同划分方式下线程索引ID的计算公式。1、 grid划分成1维,block划分为1维。2、 grid划分成1维,block划分为2维。3、 grid划分成1维,block划分为3维。6、 grid划分成2维,block划分为3维。8、 grid划分成3维,block划分为2维。9、 grid划分成3维,block划分为3维。原创 2022-06-23 13:44:58 · 1685 阅读 · 0 评论 -
EGLStream详解
视频流的数据量巨大,如果要在不同的进程间传输视频流就必须考虑一些数据传输的底层问题,比如尽量不要做拷贝。以及互斥问题,不能一个程序还没把一张图片读完,共享的内存就被改变了。EGLStream就提供了这样一种功能,支持多个进程间进行无拷贝的视频流传输。EGLStream主要原理是设置了producer和consumer。producer负责把图片放入到EGLStream流中,consumer主要是把图片从流上取出来。流是一系列顺序执行的命令。所以一个进程可以作为上一个命令的consumer,同时又是下一原创 2022-03-20 17:24:40 · 898 阅读 · 0 评论 -
PyTorch训练模型时RuntimeError: CUDA out of memory. Tried to allocate 2.24 GiB (GPU 0; 1.83 GiB total capa
【代码】PyTorch训练模型时RuntimeError: CUDA out of memory. Tried to allocate 2.24 GiB (GPU 0;原创 2023-03-26 15:08:57 · 526 阅读 · 0 评论 -
PyTorch训练模型出现RuntimeError: Unable to find a valid cuDNN algorithm to run convolution问题
PyTorch训练模型出现RuntimeError: Unable to find a valid cuDNN algorithm to run convolution问题。原创 2023-03-26 10:45:26 · 699 阅读 · 0 评论 -
PyTorch训练模型时出现RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED报错
PyTorch训练模型时出现RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED报错。原创 2023-03-26 10:32:07 · 764 阅读 · 0 评论 -
DLA模型不支持Flatten层的修改方法
在模型部署的时候遇到Nvidia DLA不支持的层,见下文:原ONNX模型中Flatten层中ATTRIBUTES的axis=1,type:int64, 见下图:下面是一个使用ONNX模型中的Reshape层替代Flatten层的示例代码:在上面的代码中,我们使用了helper.make_node函数来创建一个Reshape节点,并将其输入张量设置为原模型中Flatten层的输入张量,输出张量设置为原模型中Flatten层的输出张量。在Reshape节点的参数中,我们将shape设置为[0, -1],其原创 2023-03-24 10:07:52 · 203 阅读 · 0 评论 -
基于TensorRT部署U-Net训练的网络模型
本项目采用的代码为pytorch-Unet,该项目是基于原始图像的比例作为最终的输入,这个对于数据集中图像原始图片大小不一致的情况可能会出现训练问题(显存不够用)。Kaggle成立于2010年,是一个进行数据发掘和预测竞赛的在线平台。从公司的角度来讲,可以提供一些数据,进而提出一个实际需要解决的问题;从参赛者的角度来讲,他们将组队参与项目,针对其中一个问题提出解决方案,最终由公司选出的最佳方案可以获得5K-10K美金的奖金。原创 2023-02-07 11:17:51 · 417 阅读 · 0 评论 -
pytorch模型(.pth)转tensorrt模型(.engine)的几种方式
导出网络定义以及相关权重;解析网络定义以及相关权重;根据显卡算子构造出最优执行计划;将执行计划序列化存储;反序列化执行计划;进行推理值得注意的是第三点,可以看到tensorrt转换出来的模型实际上是和硬件绑定的,也就是在部署的过程中,如果你的显卡和显卡相关驱动软件(cuda、cudnn)发生了改变,那么模型就得需要重新做转换。原创 2023-01-31 21:50:08 · 1219 阅读 · 0 评论 -
基于Dlib模型实现驾驶员疲劳检测项目
自动驾驶驾驶员疲劳在人体面部表情中表现出大致三个类型:打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼速度变慢)、点头(瞌睡点头)。本实验从人脸朝向、位置、瞳孔朝向、眼睛开合度、眨眼频率、瞳孔收缩率等数据入手,并通过这些数据,实时地计算出驾驶员的注意力集中程度,分析驾驶员是否疲劳驾驶和及时作出安全提示。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。原创 2022-12-25 12:27:35 · 311 阅读 · 0 评论 -
基于dlib重新训练dlib_face_recognition_resnet_model_v1.dat
dlib重新训练dlib_face_recognition_resnet_model_v1.dat一、训练方法说明官方文档说明在这里插入图片描述使用浏览器自带的翻译成中文为根据官方说明,dlib_face_recognition_resnet_model_v1.dat文件采用dnn_metric_learning_on_images_ex.cpp训练,只需修改少量参数就能完成人脸训练二、windows环境训练1.安装运行环境参考 Windows下的编译安装dlib(cmake)原创 2022-12-21 15:18:26 · 1712 阅读 · 0 评论 -
TensorRT系列教程-ONNX基础
TensorRT 的核心在于对模型算子的优化(合并算子、利用当前 GPU 特性选择特定的核函数等多种策略),通过 TensorRT,能够在 Nvidia 系列 GPU 上获得最好的性能。TensorRT 模型需要在目标 GPU 上以实际运行的方式选择最优的算法和配置(不同的 GPU 的许多特性的不一样,在特定 GPU 上跑一跑,再知道怎样最快)。也因此 TensorRT 得到的模型只能在特定的环境下运行(编译时的 TensorRT 版本、CUDA 版本、GPU 型号等)。原创 2022-12-13 15:21:17 · 2861 阅读 · 0 评论 -
网络模型结构可视化onnx+netron
Open Neural Network Exchange (ONNX) 可以将不同框架(TensorFlow/Pytorch/Paddle)训练出来的模型都转换onnx模型进行存储,起到统一模型格式的作用。将pytorch等框架的网络模型转化为onnx模型进行可视化时,会存在冗余现象,因此需要onnx-simplifier来减少冗余,进一步提高可视化结构可读性。Netron为深度学习模型可视化库,支持多种模型格式,包括ONNX等。将onnx模型拖入Netron官网即可查看可视化结果。原创 2022-12-16 20:34:44 · 1089 阅读 · 0 评论 -
ONNXRuntime概览
以上就是ONNXRuntime的整体概览,由于ONNXRuntime仅仅是一个推理引擎,运行过程是线性的,逻辑也比较简单易懂。接下来的几篇文章会针对ONNXRuntime的一些核心功能(如内存管理,OpKernel注册,模型切分等)的代码进行详细剖析。原创 2022-12-16 15:12:40 · 6338 阅读 · 0 评论 -
使用YOLOX进行物体检测
YOLOX 是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。其中YOLOX-L版本以 68.9 FPS 的速度在 COCO 上实现了 50.0% AP,比 YOLOv5-L 高出 1.8% AP!还提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本,本文将详细介绍如原创 2022-12-05 10:57:06 · 1481 阅读 · 2 评论 -
全卷积网络(FCN)实战:使用FCN实现语义分割
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。下图是语义分割所采用的全卷积网络(FCN)的结构示原创 2022-03-20 17:34:31 · 2168 阅读 · 0 评论