深度学习
文章平均质量分 77
牧羊女说
有马甲线的女程序猿、攻城狮、加班狗~
展开
-
Transformer模型的Pytorch实现
Transformer模型的Pytorch实现解读。原创 2024-03-15 19:42:32 · 1950 阅读 · 2 评论 -
详细理解Transformer
Tansformer的完整解读原创 2024-03-13 15:15:51 · 1060 阅读 · 0 评论 -
Transformer中Self-Attention的详细解读
对Transformer中Self-attention的详细解读原创 2024-03-08 11:13:05 · 923 阅读 · 0 评论 -
Paddle模型转ONNX
PaddlePaddle模型转ONNX方法原创 2024-01-12 18:26:59 · 1428 阅读 · 0 评论 -
视频去噪网络BSVD的实现
前些天写了视频去噪网络BSVD论文的理解,详情请点击,这两个星期动手实践了一下,本篇就来记录一下这个模型的实现。这个网络的独特之处在于,它的训练和推理在实现上有所差别。在训练阶段,其使用了TSM(Time Shift Module)结构,而在推理时则使用了BBB(Bidirectional Buffer Block)结构。训练时,网络是一个MIMO(多输入多输出)形式,而在推理时,则将其设计成了单输入、单输出的流式形式。原创 2023-10-23 21:05:07 · 822 阅读 · 1 评论 -
常用激活函数整理
整理常见神经网络激活函数原创 2023-09-01 19:04:01 · 269 阅读 · 0 评论 -
Windows11系统安装CUDA和CuDNN
Windows11系统上的CUDA和CuDNN环境配置。原创 2023-08-23 16:19:37 · 1662 阅读 · 0 评论 -
“Torch not compiled with CUDA enabled“
解决"Torch not compiled with CUDA enabled"错误的过程。原创 2023-01-19 20:19:16 · 1054 阅读 · 0 评论 -
YOLOv3学习笔记:YOLOv3的模型结构
本篇是对目标检测网络YOLOv3的模型分析。原创 2022-06-07 18:18:37 · 1926 阅读 · 1 评论 -
PyTorch学习笔记:使用state_dict来保存和加载模型
1. state_dict简介state_dict是Python的字典对象,可用于保存模型参数、超参数以及优化器(torch.optim)的状态信息。需要注意的是,只有具有可学习参数的层(如卷积层、线性层等)才有state_dict。下面就拿官方教程中的一个小示例来说明state_dict的使用:import torchimport torch.nn as nnimport torch.optim as optim# 定义模型class TheModelClass(nn.Module原创 2022-05-09 16:47:12 · 16810 阅读 · 2 评论 -
ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memor
在Docker容器中利用Pytorch训练模型的时候,出现了题目中的错误:ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).原创 2022-05-07 16:41:45 · 9798 阅读 · 8 评论 -
转置卷积(Transposed Convolution)
在介绍UNet的时候,我们提到了转置卷积,在UNet右侧分支上,对特征上采样的其中一种实现方式即为转置卷积(另一种为双线性插值)。所以今天我们就来看看转置卷积的实现细节。由于篇幅原因,本篇不展开太多,只讲核心实现。关于转置卷积(以及各种卷积的)详细实现,可以参考论文:A guide to convolution arithmetic for deep learning转置卷积首先也是一种卷积操作,绝大部分转置卷积是为了实现上采样的目的。之所以使用转置卷积代替其他简单上采样算法,如最邻近插值、双线性插原创 2022-05-03 17:04:40 · 1986 阅读 · 0 评论 -
UNet网络详解
上一篇介绍了UNet网络的总体结构和工程实现,详见UNet的PyTorch实现,本篇进一步深入UNet网络细节,进行代码层面的分析。首先,还是先贴出UNet的网络结构图,以便和实现细节做对照。从上图可以看到,Unet网络的结构比较简单,左侧分支每一层包含两个重复的卷积,我们命名为DoubleConv,从第二层开始,都是max_pool+DoubleConv;右侧分支每一层都是up_conv +copy_crop+DoubleConv,在最后输出层,有一个1x1 conv。所以,我们可以将以上网络原创 2022-04-26 16:28:34 · 7851 阅读 · 0 评论 -
Ubuntu从Kaggle上下载数据集出现403 - Forbidden
在Ubuntu系统中,使用Docker容器运行Unet工程。从Kaggle上下载数据集“Carvana Image Masking Challenge”时出现了一些曲折,在此记录一下以作后续经验查阅。1. 401 - Unauthorized执行脚本下载数据集,脚本内容如下:#!/bin/bashif [[ ! -f ~/.kaggle/kaggle.json ]]; then echo -n "Kaggle username: " read USERNAME echo e原创 2022-04-15 11:43:49 · 3519 阅读 · 2 评论 -
YOLOX论文理解
YOLOX论文:YOLOX: Exceeding YOLO Series in 2021代码链接:https://github.com/Megvii-BaseDetection/YOLOX随着目标检测技术的发展,YOLO系列一直在追求实时应用场景下速度和精度的最佳平衡,且都引入了在当时看来最先进的技术,例如YOLOv2的anchors,YOLOv3的残差网络等,并通过优化得到最好的现实表现。目前,拥有精度和速度最佳平衡的YOLOv5在COCO数据集上可达到48.2%的AP,以及13.7ms的推理速度原创 2022-04-11 11:44:37 · 4718 阅读 · 0 评论 -
轻量级目标检测算法整理
随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端应用的关注度越来越高,尤其是对于如何保持速度和精度上的平衡,也形成了不小的研究热度。本篇整理了一些较新的轻量级目标检测网络,结合我们自己的目标,所选的网络参数量多在4M以下。1. YOLO NanoYOLO Nano是一个高度紧凑的网络,它是一个基于YOLO网络的8位量化模型,并在PASCAL VOC 2007数据集上进行了优化。模型大小在4M左右,在计算上需要4.57B推算,性能表现上,在VOC 2007数据集上得到了6原创 2022-03-31 20:42:00 · 9990 阅读 · 1 评论 -
Failed to load image Python extension: libtorch_cuda_cu.so
1. 问题描述运行一个Pytorch的深度学习工程,当安装好各项以来之后,运行程序,出现如下错误:/root/anaconda3/envs/yolox/lib/python3.9/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python tension: libtorch_cuda_cu.so: cannot open shared object file: No such file or d原创 2022-03-28 16:09:50 · 18196 阅读 · 5 评论 -
Docker安装Anaconda并创建虚拟环境
准备在Docker容器中运行深度学习程序,决定使用Anaconda来进行包的安装和管理。这些重复性操作虽然简单,但是步骤难免会忘记,记录下来以备下次直接参考。1. 安装Anaconda比较简单的方式是,去Anaconda官网上找到适合自己的安装包下载到PC机上,然后再上传服务器进行安装。下载地址:Anaconda | Individual Edition当然,也可以直接从服务器上通过wget或者curl命令从国内源下载:wget https://mirrors.tuna.tsinghu原创 2022-03-25 17:52:40 · 8692 阅读 · 8 评论 -
Ubuntu20安装onnx遇到的几个问题及解决方法
在Ubuntu上用Docker容器安装一个目标检测算法的运行环境,过程中出了几个小问题,记录一下。工程的requirements.txt如下:numpytorch>=1.7opencv_pythonloguruscikit-imagetqdmtorchvisionPillowthopninjatabulatetensorboard# verified versions# pycocotools corresponds to https://github.com/p原创 2022-03-23 11:27:45 · 10411 阅读 · 2 评论 -
MobileFaceNet模型分析
1. 背景介绍随着技术的发展,人脸识别算法在嵌入式终端上的应用越来越广泛,但由于终端设备的算力和存储资源限制,对人脸检测和识别模型的要求倾向于轻量级+高精度。轻量级模型相对于又深又宽的大模型,具有参数量小、乘加数少的特点,但同时在预测精度上不能有太大的损失。近年来,MobilenetV1,ShuffleNet和MobileNetV2等轻量级网络多用于移动终端的视觉识别任务,但是由于人脸结构的特殊性,这些网络在人脸识别任务上并没有获得满意的效果。针对这一问题,北京交通大学的Sheng Chen等人在论原创 2022-03-11 10:55:37 · 12405 阅读 · 0 评论 -
基于Keras的MTCNN模型实现
之前在文章mtcnn人脸检测算法介绍中对MTCNN的模型结构进行了说明,今天正好有点时间,把MTCNN的模型实现写一写。1. P-NetP-Net的模型结构如下:代码实现:# ----------------------------------------------------## 粗略获取人脸框# 输出bbox位置和是否有人脸# 已有P-Net模型的权重数据存在weight_path中# # --------------------------------原创 2022-03-09 17:48:36 · 860 阅读 · 0 评论 -
记一次H5模型转换TFLite格式并做8bit量化的过程
本篇记录一次从Keras生成的H5模型转换成TFLite模型的过程。中间踩了一些坑,记录下来以供参考。import tensorflow as tffrom tensorflow.python.keras import backend as Kfrom tensorflow.python.keras.utils import CustomObjectScopeconverter = tf.lite.TFLiteConverter.from_keras_model_file('facenet_k原创 2022-01-06 19:12:14 · 5437 阅读 · 30 评论 -
mtcnn人脸检测算法介绍
0. 概述MTCNN(Multi-task Cascaded Convolutional Networks,多任务卷积神经网络),是2016年由Kaipeng Zhang、Zhanpeng Zhang等提出的一种多任务人脸检测模型,该模型使用3个CNN级联算法结构,将人脸检测和人脸特征点提取同时完成。原论文中被引用了无数次的算法示意图如下:由上图可知,MTCNN整个流程结构中,首先会按照不同的缩放因子(resize_factor),将图像缩放成不同大小的size,形成图像的特征金字塔。接下.原创 2022-01-05 18:29:25 · 9589 阅读 · 0 评论 -
TensorFlow学习——tf.keras接口保存和加载模型
跑了几个深度学习的程序之后,开始静下心来研究算法和代码,因为刚开始接触TensorFlow,第一个拦路虎就是各种API的使用,不想囫囵吞枣,只能在工作之外去学习这些基础知识,各个击破。今天主要是tf.keras接口的简介,以及最近遇到比较多的模型的保存和加载。1. tf.keras简介tf.keras接口是在TensorFlow中封装的Keras接口。Keras接口是一个用Python语言编写的高层神经网路API,可以运行在TensorFlow、CNTK以及Theano上,也就是说它可以以这三个原创 2021-12-30 20:42:44 · 3353 阅读 · 0 评论 -
ValueError: Object arrays cannot be loaded when allow_pickle=False
在编译Sandberg的facenet代码时,出现了如下错误:查看官方文档,关于该参数的说明如下:由上面说明可知,在1.16.3版本后,allow_pickle的值默认设为False。所以,第一种解决方案是将numpy降版本到1.16.2以下:pip install numpy==1.16.2经查看,我的numpy版本是1.20.3:不太想安装旧的版本,于是网上查找有无其他解决方法。大概有两种:1. 在numpy.load()函数调用的地方将allow_p...原创 2021-12-29 11:34:23 · 23576 阅读 · 11 评论 -
人脸关键点检测face_landmark
不经意间瞄了一眼日历,惊觉2020年已所剩无几,回望即将过去的一年,不禁感叹唏嘘。时光带走了很多的烦恼和美好,也带来了很多困惑和收获。怎样才能不被淹没在时间的洪流里呢,唯有在风浪中保持清醒和方向,而不断地学习和输出就是那支驾驭风浪的桨。从系统设计一头扎进算法的漩涡,经过了一阵子的蒙圈,然后一点一点摸索着理清思路和方向。在知识爆炸的时代,最好的积累就是把每一步记录下来,变成自己的脚印。前些天调研了人脸检测算法,这几天在做人脸关键点定位和人脸对齐。在网上找了一个开源的人脸对齐项目,本地做了适当适配后验证原创 2021-12-23 17:43:55 · 11425 阅读 · 1 评论 -
轻量级人脸识别之DSFD
1. 算法介绍高精度双分支人脸检测器DSFD由腾讯提出并开源。该算法曾在全球两大权威人脸检测数据集WIDERFACE和FDDB上均取得了第一。相关论文:《DSFD: Dual Shot Face Detector》,https://arxiv.org/pdf/1810.10220.pdfDSFD算法主要有3点创新:(1) 设计了新的FEM(Feature Enhance Module)模块,FEM在采用Top-Down层间信息融合的同时,在同一“感受野”内做了更多的enhancement,在wi原创 2021-12-17 16:30:48 · 3758 阅读 · 0 评论 -
轻量级人脸识别算法之DBFace
最近一直在调研适合在嵌入式设备上运行的轻量级的人脸识别算法,算法太多,有点眼花缭乱,所以发挥优良传统,还是把调研结果整理出来进行记录比较好。今天先记录DBFace算法。DBFace出自国内人工智能公司深兰科技,是一个实时、单阶的人脸检测算法,速度快、精度高。它基于anchor free思想设计的多任务人脸检测器,不仅可预测人脸框,还可以预测5个人脸关键点。DBFace使用CenterNet做检测任务,MobileNetv3-small做backbone。相较于MobilenetV2,Mobilene原创 2021-12-15 17:18:40 · 5782 阅读 · 0 评论 -
Tensorflow TypeError: load() missing 2 required positional arguments: ‘tags‘ and ‘export_dir‘
Fix一个tensorflow加载模型报错的问题。原创 2021-12-13 19:16:56 · 2688 阅读 · 0 评论 -
主流深度学习框架汇总
最近接手了一个项目,涉及深度学习的内容占了80%的工作量。所以有空的时候开始整理和输出一些深度学习相关的内容。今天就来汇总一下视觉领域常用的深度学习框架。1. Caffe & Caffe2Caffe全称是Convolutional Architecture for fast Feature Embedding, 由伯克利视觉和学习中心(BVLC)开发,作者是贾扬清。Caffe支持C...原创 2019-08-14 20:39:47 · 928 阅读 · 2 评论