深度学习
文章平均质量分 69
TensorFlow,pytorch,paddlepaddle等框架实现深度学习
Haohao+++
大学本科在读的喜欢研究的程序猿
展开
-
pytorch实现FLOPs和Params的计算
FLOPs: 注意s小写,指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。Params:是指模型训练中需要训练的参数总数。代码实现方法1使用thop库方法2使用torchstat库原创 2022-06-27 20:33:47 · 2423 阅读 · 0 评论 -
paddlepaddle2.3 实现mobilenetv2图像分类
目录MobilenetV2介绍MobilenetV2网络结构1. Depthwise Separable Convolutions2. Linear Bottlenecks3. Inverted residuals4. Model Architecture网络结构代码演示代码仓库MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示原创 2022-05-17 16:03:37 · 632 阅读 · 0 评论 -
pytorch搭建MobileViT网络——一种用于移动设备的轻量级通用视觉 transformer
MobileViT介绍论文地址:https://arxiv.org/pdf/2110.02178.pdf来自苹果的研究者提出了一种用于移动设备的轻量级通用视觉 transformer——MobileViT。该网络在 ImageNet-1k 数据集上实现了 78.4% 的最佳精度,比 MobileNetv3 还要高 3.2%,而且训练方法简单。轻量级卷积神经网络(CNN)是移动设备机器视觉任务的首选。它们的空间归纳偏置允许它们在不同的视觉任务中,可以使用较少的参数进行视觉内容的学习表示。但是这些网络在空原创 2022-05-04 23:37:13 · 2851 阅读 · 0 评论 -
tensorflow2.X和pytorch实现polyloss
polyloss介绍polyloss是Cross-entropy loss和Focal loss的优化版本,PolyLoss在二维图像分类、实例分割、目标检测和三维目标检测任务上都明显优于Cross-entropy loss和Focal loss。作者认为可以将常用的分类损失函数,如Cross-entropy loss和Focal loss,分解为一系列加权多项式基。它们可以被分解为∑j=1nαj(1−Pt)j\sum_{j=1}^n\alpha_j(1-P_t)^j∑j=1nαj(1−Pt)j原创 2022-05-03 19:27:54 · 3164 阅读 · 21 评论 -
tensorflow2.3实现PPLCNet——一个速度更快、准确率更高的轻量级骨干网络
1. 前言PPLCNet是百度团队结合Intel-CPU端侧推理特性而设计的轻量高性能网络PP-LCNet,所提方案在图像分类任务上取得了比ShuffleNetV2、MobileNetV2、MobileNetV3以及GhostNet更优的延迟-精度均衡。论文提出了一种基于MKLDNN加速的轻量CPU模型PP-LCNet,它在多个任务上改善了轻量型模型的性能。如下图所示,在图像分类任务方面,所提PP-LCNet在推理延迟-精度均衡方面大幅优于ShuffleNetV2、MobileNetV2、Mobile原创 2022-04-06 12:30:22 · 6414 阅读 · 0 评论 -
深度学习开源数据集——自动驾驶、目标检测、人脸识别、文本检测、图像分类
前言在深度学习中,如果没有数据集,就无法训练模型,所以数据是根本,下面列出几个常用数据集。想要更多数据集,可以去这个地址:https://www.cvmart.net/dataSets或https://gas.graviti.cn/open-datasets自动驾驶数据集1. BDD100K数据集2018年5月伯克利大学AI实验室(BAIR)发布了公开驾驶数据集BDD100K,同时设计了一个图片标注系统。BDD100K 数据集包含10万段高清视频,每个视频约40秒\720p\30 fps 。每个视原创 2022-04-04 16:00:25 · 4359 阅读 · 0 评论 -
tensorflow2.4实现XBNBlock——batch-free normalization在ResNet50、MobileNet v2中的使用,解决BN的局限
1. 前言原创 2022-04-02 16:16:12 · 1437 阅读 · 0 评论 -
tensorflow-gpu2.X版本安装详解
1. 对应版本官网在安装tensorflow-gpu版本之前,需要安装cuda和cudnn。对应版本可以在官网中寻找,我也把图放在下面了。2. tensorflow-gpu安装cudacuda是英伟达推出的运算平台,是一种通用的并行计算机构,可以使gpu解决复杂的计算问题。cuda下载的地址为:https://developer.nvidia.com/cuda-toolkit-archive。例如。想下载cuda11.0,可以点击CUDA Toolkit 11.0.0,点击右侧的Versione原创 2022-03-28 20:52:27 · 2056 阅读 · 0 评论 -
pytorch实现Parnet猫狗识别
前言深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。下面我们就看看作者在论文中是怎么说的吧!论文地址:https://arxiv.org/abs/2110.076411. Introduction(介绍)人们普遍认为,大深度是高性能网络的重原创 2022-03-15 13:56:28 · 1792 阅读 · 6 评论 -
tensorflow2.4复现parnet网络模型实现猫狗分类
前言深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。下面我们就看看作者在论文中是怎么说的吧!论文地址:https://arxiv.org/abs/2110.076411. Introduction(介绍)人们普遍认为,大深度是高性能网络的重原创 2022-03-14 15:17:21 · 1943 阅读 · 9 评论 -
tensorflow2.2实现MobilenetV2
MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示首先扩展到高维并用轻量级深度卷积进行过滤。随后用线性卷积将特征投影回低维表示。MobilenetV2网络结构在介绍MobilenetV2网络结构之前需要先了解一下网络内部的细节。1. Depthwise Separable Convolutions深度可分卷积这是一种分解卷原创 2022-03-09 11:59:39 · 1320 阅读 · 0 评论 -
pytorch使用迁移学习模型MobilenetV2实现猫狗分类
MobilenetV2介绍网络设计是基于MobileNetV1。它保持了简单性,同时显著提高了精度,在移动应用的多图像分类和检测任务上达到了最新的水平。主要贡献是一个新的层模块:具有线性瓶颈的倒置残差。该模块将输入的低维压缩表示首先扩展到高维并用轻量级深度卷积进行过滤。随后用线性卷积将特征投影回低维表示。MobilenetV2网络结构在介绍MobilenetV2网络结构之前需要先了解一下网络内部的细节。1. Depthwise Separable Convolutions深度可分卷积这是一种分解卷原创 2022-03-09 11:40:46 · 2808 阅读 · 1 评论 -
使用pytorch构建神经网络实现MNIST分类训练
1. 导入库import torchimport torchvisionimport torchvision.transforms as transformsimport matplotlib.pyplot as pltimport numpy as npimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optim2. 设置超参数BATCH_SIZE=512 EPOCHS=20 DEV原创 2022-03-08 13:11:33 · 1395 阅读 · 0 评论 -
深度学习常用的激活函数以及python实现(Sigmoid、Tanh、ReLU、Softmax、Leaky ReLU、ELU、PReLU、Swish、Squareplus)
前言激活函数是一种添加到人工神经网络中的函数,类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。此图来自百度百科,其中step function就是激活函数,它是对之前一层进行汇总后信号进行激活,传给下一层神经元。常用的激活函数有以下8个:常用的8个激活函数sigmoidTanhReLUSoftmaxLeaky ReLUELUPReLUSwish1. Sigmoid如上图是Sigmoid函数的函数图像。Sigmoid 函数的图像看起来像原创 2022-02-22 16:51:02 · 13301 阅读 · 3 评论 -
tensorflow2.4使用GooleNet实现识别植物花朵图像项目
tensorflow2.4使用GooleNet实现识别植物花朵图像项目1. 数据集下载链接:https://pan.baidu.com/s/1zs9U76OmGAIwbYr91KQxgg提取码:bhjx2. GooleNet网络介绍GoogleNet是google推出的基于Inception模块的深度神经网络模型,在2014年的ImageNet竞赛中夺得了冠军。GoogleNet在当时的创新点有两个:使用了模型融合在GoogleNet中,运用了许多的Inception模块。上图中,左原创 2022-02-21 15:15:19 · 2137 阅读 · 10 评论 -
卷积计算——卷积公式
WinputW_{input}Winput和HinputH_{input}Hinput是图片的宽和高。WfilterW_{filter}Wfilter和HfilterH_{filter}Hfilter是卷积核的宽和高。PPP是padding填充的圈数。SSS是卷积核的步长。原创 2022-02-20 22:32:27 · 5473 阅读 · 0 评论 -
深度学习之实现图像数据增强
深度学习——图像数据增强前言数据增强的意思就是让数据量增多。对于深度学习来说,大的数据量可以训练出更好的深度学习模型。在图像增强方面,我们常用的手段如下:旋转翻转缩放平移尺度变换对比度变换噪声扰动颜色变换1. 使用tensorflow2.X的ImageDataGenerator进行数据增强经过如下代码可以在img_temp文件夹中生成20张经过数据增强的图片from tensorflow.keras.preprocessing.image import ImageDat原创 2022-02-20 18:37:48 · 4842 阅读 · 1 评论 -
tensorflow2.2_实现无高级封装——以训练MNIST为例
import tensorflow as tf# 载入MNSIT数据集mnist = tf.keras.datasets.mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()x_train, x_test = x_train / 255.0, x_test / 255.0# ont-hot编码y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)y.原创 2022-02-20 12:00:11 · 174 阅读 · 0 评论 -
tensorflow2.2_MobilenetV1网络解析
1. MobilenetV1介绍MobilenetV1是Google提出的用于移动和嵌入式应用的高效网络模型。MobilenetV1基于一种流线型的架构,使用深度可分离卷积来构建轻量级的深度神经网络。2. 深度可分离卷积MobileNetV1模型基于深度可分卷积这是一种分解卷积的形式,它将一个标准卷积分解为深度卷积和一个1×1卷积,1x1卷积又叫称为点卷积。标准的卷积是输入一个 DFD_{F}DF x DFD_{F}DF x MMM 的特征图,输出一个 DFD_{F}DF x DFD_{F}原创 2022-02-15 18:11:31 · 778 阅读 · 3 评论 -
tensorflow2.2_实现DCGAN网络
DCGAN介绍1. DCGAN原理 生成对抗网络的核心思想是同时训练两个相互协作、相互竞争的深度神经网络,一个称为生成器(Generator),另一个称为判别器(Discriminator)。生成器用来生成假图片,而判别器用来判断图片的真假。2. 转置卷积介绍 普通卷积的卷积操作是一种下采样(Subsampled)操作,就是让图像的大小从大变小,而转置卷积就是一种上采样(Upsampling)操作,让图像大小从小变大。3. DCGAN模型结构 判别器原创 2022-01-26 16:05:52 · 1370 阅读 · 1 评论 -
tensorflow2.2_实现SENet
1. SENet介绍 SENet 是 ImageNet Challenge 图像识别比赛 2017 年的冠军,是来自 Momenta 公司的团队完成。他们提出了 Squeeze-and-Excitation Networks(简称 SENet)。SENet一般不单独使用,通常都是与其它模型结合使用,使其效果更好。 在一般的卷积层中通过卷积核会生成许多不同的特征图,但在这些特征图中并不是所有的特征图都是很重要的,也许有些特征可以忽略。如果我们可以将重要的特征加强,而不重要的特征可以减弱,这样我原创 2022-01-14 12:33:59 · 4228 阅读 · 10 评论 -
tensorflow2.2实现ResNeXt
1. 分组卷积 分组卷积(Group Convolution)最早出现在AlexNet中。 受限于当时的硬件资源,在AlexNet网络训练时,难以把整个网络全部放在一个GPU中进行训练,因此,作者将卷积运算分给多个GPU分别进行计算,最终把多个GPU的结果进行融合。 因此分组卷积的概念应运而生。 分组卷积简单来说就是将每层的特征图数量分为不同的组,然后对不同组的特征图进行卷积操作。 分组卷积的优点:帮助模型减少了计算量和权值参数 如下图是论文《Aggregated Resid原创 2022-01-13 18:28:14 · 1112 阅读 · 0 评论 -
tensorflow_2.2_Resnet50实现花的识别
Resnet50介绍Resnet50与之前在Resnet34中介绍的几乎一样,唯一有区别的就是:残差块由两层卷积变成了三层卷积,网络更深,如下:# 结构快def block(x, filters, strides=1, conv_short=True): if conv_short: short_cut = Conv2D(filters=filters*4, kernel_size=1, strides=strides, padding='valid')(x)原创 2022-01-10 11:43:56 · 1297 阅读 · 0 评论 -
tensorflow2.2_实现Resnet34_花的识别
残差块 Resnet是由许多残差块组成的,而残差块可以解决网络越深,效果越差的问题。 残差块的结构如下图所示。其中:weight layer表示卷积层,用于特征提取。F(x)F(x)F(x)表示经过两层卷积得到的结果。xxx表示恒等映射。F(x)+xF(x)+xF(x)+x表示经过两层卷积后与之前的卷积层进行结合。所以F(x)F(x)F(x)和xxx代表的是相同的信号。作用:将浅层网络的信号递给深层网络,使网络得到更好的结果。批量归一化(Batch Normaliz原创 2022-01-09 18:42:13 · 2362 阅读 · 0 评论 -
tensorflow2 实现MobileNetV1网络结构及可视化
网络结构代码展示from tensorflow.keras.layers import SeparableConv2D, Dense, Dropout, Conv2D, MaxPool2D, Flatten, BatchNormalization, Activation, Add, Input, ZeroPadding2D, GlobalAvgPool2Dfrom plot_model import plot_modelfrom tensorflow.keras.models import Mo原创 2021-11-10 13:46:04 · 1059 阅读 · 1 评论 -
AlexNet_tensorflow2.1_实现狼狗分类
导入相关库import numpy as npfrom tensorflow.keras.preprocessing.image import ImageDataGeneratorfrom tensorflow.keras.utils import to_categoricalfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense,Dropout,Conv2D,MaxPool2D原创 2021-10-17 11:31:52 · 181 阅读 · 1 评论 -
tensorflow2.1_实现vgg16迁移学习
一原创 2021-09-05 13:31:28 · 1252 阅读 · 4 评论