![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
文章平均质量分 50
颢师傅
这个作者很懒,什么都没留下…
展开
-
【pytorch】深度学习模型调参策略(五):采用贝叶斯工具进行最优参数搜索及最佳步数确认
optuna是一个用于超参数优化的Python库。它提供了一种简单、高效的方法来搜索模型的最优超参数组合,以最大化或最小化目标函数(例如验证集准确率或损失函数)。optuna支持多种搜索算法,包括随机搜索、网格搜索和基于贝叶斯优化的搜索。它还支持并行化搜索,并提供了可视化工具来帮助用户分析搜索结果。使用optuna可以帮助用户节省大量时间和精力,从而更快地找到最优的超参数组合,并提高模型的性能。optuna不仅可以用于机器学习领域,也可以用于优化任何需要调整超参数的任务。原创 2023-03-28 15:57:38 · 4413 阅读 · 0 评论 -
【pytorch】深度学习模型调参策略(二):超参数的分类与调整经验
例如,dropout正则化技术会增加代码的复杂性,因此在决定是否使用它时,我们会将“无dropout”与“dropout”作为科学超参数,而dropout rate则是一个麻烦的超参数。如果资源足够的话,我们会让所有非科学超参数都保持为困扰超参数,以便从我们的实验中得出的结论不受固定超参数值的限制。固定超参数是在一轮实验中被固定的超参数,这些超参数的值不需要改变或者我们不希望它们改变,以便在比较不同科学超参数的值时减少不必要的变量。的超参数,以便在比较不同科学超参数的值时能够进行公平的比较。原创 2023-03-25 19:18:01 · 826 阅读 · 0 评论 -
【pytorch】深度学习模型调参策略(一):选择架构,优化器及批大小
因此,为了确定可行的批处理大小,我们需要在不同的批处理大小下运行训练作业,并找到一个最大的批处理大小,使训练吞吐量增加。另一方面,训练更少的步骤意味着每个训练运行更快,使用更少的资源,通过减少周期之间的时间并允许更多的实验并行运行来提高调整效率。特别是在项目的开始阶段,当我们试图找到各种其他超参数(例如架构超参数)的最佳值时,同时将优化器超参数视为麻烦的参数。在项目的初期阶段,最好选择一个更简单的优化器(例如具有固定动量的SGD或具有固定参数的Adam),并在以后切换到更通用的优化器。这些都可以以后添加。原创 2023-03-25 18:39:47 · 1309 阅读 · 0 评论 -
【pytorch】深度学习所需算力估算:flops及模型参数量
因为8GB显卡的实际可用显存约为7500MB左右,可以满足模型在最大推理batchsize下的显存需求,同时还有一定的余量,可以保证模型能够正常运行。在部署时,需要考虑芯片的显存,是因为显存的大小限制了模型的最大批次大小。如果模型的批次大小超过了显存的大小,那么就无法将整个批次的数据同时加载到显存中,需要分批处理,这会增加模型推理的时间。这是因为模型的参数需要存储在显存中,而在计算过程中,也会涉及到一些中间结果的存储和计算,所以需要足够的显存来支持模型的运行。一般来说,批量大小越大,需要的计算能力就越大。原创 2023-03-22 20:05:01 · 8529 阅读 · 0 评论 -
【pytorch】深度学习单卡训练升级到多卡训练(nn.DataParallel原理),以手写数据集分类为例
然后,nn.DataParallel会将输入数据划分为多个小批次,每个小批次分配到不同的GPU上,并使用torch.nn.parallel.scatter函数将输入数据复制到各个GPU上。接下来,nn.DataParallel会在每个GPU上分别计算模型的输出,并使用torch.nn.parallel.gather函数将各个GPU上的输出合并起来,得到最终的输出。最后,nn.DataParallel会将每个GPU上的输出合并起来,得到最终的输出,并计算损失函数和梯度。原创 2023-03-22 10:43:43 · 1682 阅读 · 1 评论 -
【pytorch】使用deepsort算法进行目标跟踪,原理+pytorch实现
在DeepSORT算法中,对于每一帧输入的目标检测结果,首先需要对其进行匹配,将其与之前跟踪的目标进行匹配,得到目标的标识信息以及当前帧中目标的位置和大小信息。如果不使用卡尔曼滤波进行预测,直接跟踪目标的位置和大小,可能会受到多种因素的影响,例如目标运动的加速度、噪声干扰等等,从而导致目标跟踪的不稳定,容易出现跟踪丢失或误判的情况。DeepSORT算法使用卡尔曼滤波进行预测的原因是,通过对目标运动状态的建模,能够更加准确地预测目标的未来位置,从而提高目标跟踪的准确性和鲁棒性。原创 2023-03-21 15:15:39 · 2540 阅读 · 0 评论 -
【pytorch】使用mixup技术扩充数据集进行训练
mixup是一种数据增强技术,它可以通过将多组不同数据集的样本进行线性组合,生成新的样本,从而扩充数据集。mixup的核心原理是将两个不同的图片按照一定的比例进行线性组合,生成新的样本,新样本的标签也是进行线性组合得到。比如,对于两个样本x1和x2,它们的标签分别为y1和y2,那么mixup生成的新样本x’和标签y’如下:其中,λ为0到1之间的一个随机数,它表示x1和x2在新样本中的权重。原创 2023-03-06 10:33:54 · 5789 阅读 · 0 评论 -
【pytorch】利用泊松融合扩充深度学习图像分类的数据集
泊松融合(Poisson blending)的原理是将一张图像的一部分无缝融合到另一张图像中,保持融合部分的自然感觉。它利用了拉普拉斯方程的性质,将两幅图像的像素值作为边界条件,通过求解拉普拉斯方程得到融合后的图像。在深度学习中,可以利用泊松融合扩充数据集,例如将同一物体的不同角度、不同光照、不同背景等进行融合,从而得到更多的训练数据(例如yolo数据集)。在图片分类任务中,当两个图片属于不同类别时,进行泊松融合后的图片类别是难以确定的。原创 2023-03-03 16:57:23 · 990 阅读 · 0 评论 -
【pytorch】搭建带有注意力机制的图像分类网络,实现空间注意力
注意力机制是深度学习中重要的技术之一,它可以使模型在处理序列数据时,更加集中地关注重要的部分,从而提高模型的性能和效率。在自然语言处理和机器翻译等任务中,注意力机制已经得到广泛应用。在机器视觉领域,注意力机制也被广泛应用,特别是在图像分类、目标检测和图像分割等任务中。在这些任务中,注意力机制通常用来提高模型对关键区域的关注度,从而提高模型的准确性和鲁棒性。例如,在图像分类任务中,注意力机制可以帮助模型在图像中关注到更加重要的区域,从而提高分类的准确性。原创 2023-03-03 16:32:56 · 1560 阅读 · 0 评论 -
【pytorth】模型训练后导出至onnx
本文将主要介绍Pytorch模型训练后导出至onnx的过程,并介绍onnx的概念及其在Pytorch中的应用。通过本文,开发者可以更容易地理解onnx的概念,并学会如何将Pytorch模型导出至onnx。本文将主要介绍Pytorch模型训练后导出至onnx,并介绍onnx的概念及其在Pytorch中的应用。可以使用torch.onnx.export()函数将模型导出到ONNX格式,该函数接受一个Pytorch模型,一个输入张量列表和一个输出张量列表作为参数。原创 2023-02-09 01:14:49 · 1271 阅读 · 0 评论 -
【pytorch】使用训练好后的模型权重,在验证集上输出分类的混淆矩阵并保存错误图片
首先,我们需要准备一个pytorch框架的模型,并将模型权重载入到模型中。总之,本文介绍了如何使用pytorch框架,利用训练好后的模型权重,在验证集上输出分类的混淆矩阵,并保存错误图片的方法。通过使用混淆矩阵,我们可以更好地理解模型在验证集上的表现,并及时发现模型的问题,从而提高模型的准确率。在机器学习领域,混淆矩阵是一个非常有用的指标,它可以帮助我们更好地理解模型在验证集上的表现。本文介绍了如何使用pytorch框架,利用训练好后的模型权重,在验证集上输出分类的混淆矩阵,并保存错误图片的方法。原创 2023-02-08 15:28:13 · 1269 阅读 · 0 评论 -
【pytorch】图片分类问题处理一般数据集,使其满足torchvision.datasets.ImageFolder调用结构
对于简单的图像分类任务,并不需要自己定义一个 Dataset类,可以直接调用 torchvision.datasets.ImageFolder 返回训练数据与标签。数据集应满足pytorch的格式要求,即将数据集分割为训练集和测试集,并将数据和标签分别放入不同的文件夹;下面的函数,将人眼睁闭数据集转换为pytorch指定的结构;同时,应兼顾按比例划分训练集,测试集及验证集的需求。原创 2023-02-07 08:30:00 · 606 阅读 · 0 评论 -
【onnx】将caffe模型导出的.caffemodel文件及.prototxt文件转onnx
caffemodel文件包含网络结构和参数的权值,而.prototxt文件则是网络结构的文本描述。参数说明:model_path:caffe模型所在的文件夹,文件夹里需要有对应的.caffemodel文件和.prototxt文件 model_type:模型类型,此处固定为caffe output:输出onnx模型的文件路径。caffe的.prototxt文件是用来定义网络结构的文件。.caffemodel文件是Caffe深度学习框架中训练好的模型的二进制文件。创建独立的环境,并激活shell。原创 2023-01-15 20:16:56 · 1832 阅读 · 0 评论 -
【docker】基于docker部署pytorch环境
其中/c/Users/25360/Desktop/voice为win10下目录C:\Users\25360\Desktop\voice的写法。然后我们使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器。-d是detach,让/bin/bash在后台运行。原创 2022-08-07 22:56:07 · 1064 阅读 · 0 评论 -
【openVINO】Model Zoo预训练模型下载及编译
(1)下载open_model_zoo,在github上下载预训练模型:open_model_zoo(2)运行模型下载工具,下载预训练模型:下载全部模型,不推荐,空间很大:下载指定预训练模型:以人体姿势预测模型为例:说明:下载后文件样式为:(3)使用相关demo:找到相关demo:D:\open_model_zoo-master\demos\human_pose_estimation_demo将主文件加入VS工程,按DEMO引用的头文件补充进VS的附加包含目录:生成程序,提示缺少g原创 2022-06-03 23:56:57 · 2063 阅读 · 0 评论 -
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本 异步模式
(一)C++同步模式的代码详见:【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本(二)异步模式:异步模式是指启动第一张图片的AI推理计算后,无需等待AI推理计算结束,直接采集第二张图片,并完成图像预处理,然后再检查第一张图片推理计算是否完毕,若完毕,处理输出结果,这样的好处是,并行执行了第一张图片的AI推理计算任务和第二张图片的图像采集和预处理任务,减少了等待时间,提高了硬件的利用率,也提高了吞吐量。C++的异步模式代码与Python版异步模式代码有较原创 2022-05-28 23:22:52 · 576 阅读 · 0 评论 -
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本
(一)openvino安装说明及yolov5的onnx生成详见:【pytorch】将yolov5模型通过openVINO2022部署至生产环境(一):python版本+异步模式(二)c++版本代码:使用2种图片输入读取方式;读取.onnx模型或XML和bin文件;yolov5_6vino.h:#ifndef YOLOV5VINO_H#define YOLOV5VINO_H#include <fstream>#include <opencv2/opencv.hpp>原创 2022-05-27 01:48:17 · 1517 阅读 · 3 评论 -
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(一):python版本+异步模式
openvino部署流程如图所示:OpenVINO工具套件中用于AI推理加速的组件包括用于优化神经网络模型的Python工具Model Optimizer(模型优化器)和用于加速推理计算的软件包Inference Engine(推理引擎)。中间表示(IR)包括两个文件,一个是描述神经网络拓扑结构的*.xml文件,另一个是储存模型权重参数的*.bin文件。...原创 2022-05-20 23:12:32 · 4167 阅读 · 4 评论 -
【pytorch】将模型部署至生产环境:openVINO安装及python和c++环境配置
1.硬件要求:硬件要求英特尔®第六代及以后的酷睿 TM(Core™)处理器或者英特尔®至强®处理器。2.操作系统要求:操作系统要求● Ubuntu18.04.3 LTS (64 bit)。● Windows 10 (64 bit)。● CentOS7.4 (64 bit)。● macOS*10.13, 10.14 (64 bit)。这里安装使用Windows 10 (64 bit)。3.英特尔®显卡驱动要求:英特尔®显卡驱动的版本必须大于等于2018/11/19发布的25.20.100.原创 2022-05-17 23:42:28 · 3228 阅读 · 1 评论 -
【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(二):C++接口实现
python接口的实现及说明详见:【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(一):python接口实现(一)转换思路及模型准备:转换思路为:pytorch -> onnx -> onnx2trt -> TensorRT其中pytorch -> onnx详见上一篇博文。(二)onnx2trt:bool SampleOnnxMNIST::constructNetwork(SampleUniquePtr<nvinfer1::IBu原创 2022-05-13 00:41:51 · 1229 阅读 · 0 评论 -
【pytorch】Win10安装C++版及python版本tensorRT
tensorRT提供了C++及Python的API接口。(一)安装Python版接口linux安装较为简介,直接使用:pip install tensorrtpip install nvidia-pyindexpip install nvidia-tensorrt进行安装即可。对于windows版本tensorRT:登录英伟达官网下载对应版本的压缩包:下载链接下载后打开目录,在文件夹位置下:D:\TensorRT-8.4.0.6.Windows10.x86_64.cuda-11.6原创 2022-05-10 22:30:00 · 1180 阅读 · 0 评论 -
【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(一):python接口实现
Tensor是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库。它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。TensorRT可以作为用户应用程序中的库,它包括用于从Caffe,ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式(C++或Python API)构建模型。TensorRT可以对网络进行压缩、优化以及运行时部署,并且没有框架的开销。TensorRT通过c原创 2022-05-07 23:55:42 · 1959 阅读 · 0 评论 -
【pytorch】将模型部署至生产环境:借助TorchScript跟踪法及注释法生成可供C++调用的模块
pyTorch会提供TorchScript,它可以生成最有效的C++可读的模型格式。TorchScript可以将用Python编写的模型转换为高度优化的中间表示,然后LibTorch可以读取这些模型。由LibTorch加载的模型可由C++调用。1.要保证libtorch版本与pytorch版本保持一致2.若出现c10::NotImplementedError,则在VS的链接中加入如下命令行:/INCLUDE:"?ignore_this_library_placeholder@@YAHXZ"原创 2022-05-04 21:25:08 · 1875 阅读 · 0 评论 -
【pytorch】将模型部署至生产环境:使用opencv(C++)中的dnn模块或onnxruntime(python)直接调用ONNX模型
(一)待训练模型采用CIFAR10,10分类按上述源码训练后得到模型参数文件:saveTextOnlyParams.pth关于onnx及onnxruntime使用见:【pytorch】将训练好的模型部署至生产环境:onnx及onnxruntime使用实现思路为:将pytorch中训练好的模型使用ONNX导出,再使用opencv中的dnn模块直接进行加载使用:下面是pytorch中训练好的模型,通过ONNX进行导出的源代码;为了方便引用,将原代码预处理及后处理内容部分移至模型内:import o原创 2022-05-03 23:52:23 · 3973 阅读 · 0 评论 -
【pytorch】将训练好的模型部署至生产环境:onnx及onnxruntime使用
Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移。各类框架中的模型,通过ONNX进行转化见下图所示:导出函数及参数介绍:torch.onnx.export(model, args, f, export_params=True, verbose=False, training=False)模型(torch.nn.Module) - 要导出的模型。args(参数元组) - 模型的输入,例如,这-原创 2022-05-02 23:57:26 · 2392 阅读 · 0 评论 -
【pytorch】将训练好的模型部署至生产环境:借助Flask框架及gunicorn(含tensor与json的转化)
(一)待训练模型采用CIFAR10,10分类按上述源码训练后得到模型参数文件:saveTextOnlyParams.pth下面是model.py的源代码:import os.pathfrom typing import Iteratorimport numpy as npimport torchimport cv2from PIL import Imagefrom torch.utils.data import Dataset,DataLoader,Subset,random_split原创 2022-05-01 23:26:07 · 1145 阅读 · 0 评论 -
【pytorch】对照原理,自己实现pytorch自带的损失函数:L1Loss,L2Loss,BCELoss,BCEWithLogitsLoss,NLLLoss,CrossEntropyLoss
nn.L1Loss绝对值损失#1批4个求损失和def L1Loss(y,yhead): return torch.mean(torch.abs(y-yhead))y=torch.rand(4,3)yhead=torch.rand(4,3)print(L1Loss(y,yhead))print(nn.L1Loss(reduction='mean')(y,yhead))输出:tensor(0.4083)tensor(0.4083)#nn.MSELoss均方损失def L2Los原创 2022-04-24 22:15:00 · 3626 阅读 · 0 评论 -
【pytorch】自己实现精简版YOLOV3【五】,实现YOLOV3损失函数:损失函数表达式转多维tensor
接上篇博文:是在yolov2基础上改动的,最大的变动是分类损失换成了二分交叉熵,这是由于yolov3中剔除了softmax改用logistic。先前YOLOV2的损失函数有:对应YOLOV3的损失函数为:原创 2022-04-22 00:55:16 · 1733 阅读 · 4 评论 -
【pytorch】实现1对多的IOU计算技巧
IOU计算中常出现类似情况,例如求某个真值框,相对于所有预测框的IOU,即1对多的IOU计算。对于坐标系,x轴向右;y轴向下。其pytorch代码为:def calculate_iou(box_as, box_bs): ''' 实现box_as对box_bs的1对多IOU计算 输入: box_as:size:[A,4] 其中4为x1,y1,x2,y2;即box的左上角及右下角 box_bs:size:[B,4] 输出: ious:size:[A原创 2022-04-20 19:00:00 · 1723 阅读 · 0 评论 -
【pytorch】目标检测指标iou的升级版:giou实现
相比于传统的IOU,判别重合程度时,使用GIOU,是为了解决以下两个问题:1.预测的检测框如果和真实物体的检测框没有重叠,无法进一步优化。2.对于两个IoU相同的物体,他们的对齐方式IoU并不敏感。于是有如下公式:GIoU对scale不敏感GIoU是IoU的下界,在两个框无线重合的情况下,IoU=GIoUIoU取值[0,1],但GIoU有对称区间,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。实现giou的p原创 2022-04-19 22:24:59 · 805 阅读 · 0 评论 -
【pytorch】自己实现精简版YOLOV3【四】,对所得大量预测框进行置信度筛选以及非极大值抑制
接上篇博文:如果上一步骤产生的多个预测框位置较为接近,则取得分最高的预测框,其余的舍弃。其中,通过设定一个阈值(IOU阈值,一般取0.45),判断框之间的距离是否算作接近。非极大值抑制问题,解决同一个物体有多于一个候选框输出的问题。NMS用于过滤掉重叠的候选框。(1)算法输入:包含各框的位置坐标,以及置信度得分(2)算法步骤:设定IOU阈值,比如0.7。所有边框按照置信度进行排序,取得分最高的边框并保存,使其与其余边框计算IOU,去掉计算结果中大于0.7的结果,保留该边框;再取剩余框中置信度最大的原创 2022-04-15 19:38:04 · 2969 阅读 · 0 评论 -
【pytorch】自己实现精简版YOLOV3【三】,YOLOV3输入图片预处理:输入图片缩放及将生成预测框还原至原图
接上篇博文:Yolov3网络的输入默认为416x416,然后待检测的图片不总是416x416,这就产生了如何将待检测图片,在不破坏特征的情况下缩放至416x416,并对应在网络产生预测框后,如何将416x416图中的预测框还原至原图的问题。、对此,Yolov3的方法如下图所示,分为3步:1.求取缩放比例,将目标416x416,除以输入图像尺寸(width,height),取其中较小的一个比例,将长宽同时按此比例进行缩放。由于是长宽等比缩放,所以图片的特征并不失真。2.制作rgb为(128,128,1原创 2022-04-13 20:52:12 · 4230 阅读 · 0 评论 -
【pytorch】自己实现精简版YOLOV3【二】,通过darknet_53输出的特征图:得到预测框位置、置信度以及目标类别
接上篇博文::YOLOv3网络在三个特征图中预测出( 4 + 1 + c ) × k 个值,即特征图上每个点对应4个边界坐标(实际为偏移量),1个置信度值,C个类别值(独热向量);数量k为特征图上每个点预测出的边框数量,默认为3:下图先验框由聚类算法得到:特征图上的预测目标为:上图中蓝色字样为最终预测目标,tx及ty为网格中心至网格左上角的偏移量;bx及by为预测看中心点坐标;etw及wth为边框长度缩放因子,pw及ph为先验框的高宽,bw,bh为最终预测框的高宽。sigmod函数将预测框中心坐原创 2022-04-11 01:25:10 · 2705 阅读 · 0 评论 -
常用pytorch语法糖记录及tensor高维索引操作-截止2022.4.23
记录一些好的用法:1.pytorch权重初始化代码,该代码放入nn.Module的初始化网络里。for m in self.modules(): if isinstance(m, nn.Conv2d): n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels m.weight.data.normal_(0, math.sqrt(2. / n)) elif isinstance(m, nn.Batch原创 2022-04-11 01:12:15 · 2111 阅读 · 0 评论 -
【pytorch】自己实现精简版YOLOV3【一】,对照结构图手动编写darknet_53
精简版YOLOV3,是指将原版中的配置参数项等代码省去,将网络结构固定下来。从结构图上来看,是一系列残差结构的主网络堆积而成,输出结果再引入FPN网络进行多尺度拼接,以适应多尺度的检测过程。(FPN详见其它博文)其网络的详细结构图为:根据结构图及参数图编写出pytorch版darknet_53:...原创 2022-04-09 08:10:31 · 1744 阅读 · 0 评论 -
【pytorch】轻量级网络ShuffleNet_V2原理及完整实现,对照结构图手动编写
#原先MobileNet网络存在问题:1.采用了密集的1x1卷积。引入了大量的计算量。2.之前引入残差结构,逐项加法也带来了额外的计算量。3.特征图之间通信加强,对分组卷积后的特征图通过混洗重组,保证信息能够在不同组之间进行交互,再经过一个分组卷积。下面是ShuffleNet_V1版本的Block。具体混洗在程序内是通过先转置及reshape操作实现的:def channel_shuffle(x, groups): # type: (torch.Tensor, int) -> tor原创 2022-04-08 18:30:00 · 2657 阅读 · 1 评论 -
【pytorch】轻量级网络MobileNetv2完整实现,对照结构图手动编写
1.Inverted Residual Block结构利用深度可分离卷积天生计算量少的特点,区别于以往卷积先降维计算再升维的特点,先升维获得更好的性能,再进行降维计算。2.由于本身所得特征较小,去掉MobileNet v2模型最后的ReLu层。使特征不被非线性破坏。MobileNet v2的单个模块的结构图如下图所示:如上图所示,经历了先升维,再降维的过程。网络整体结构图如下:其中包含:Stride为1及Stride为2时BottolNeck结构的区分其单个BottolNeck的实现代原创 2022-04-07 10:05:06 · 4750 阅读 · 2 评论 -
【pytorch】目标检测:实现DetNet的block:Detneck 对照网络结构图手动编写
DetNet模块,引入了空洞卷积,在增大感受野的同时,保持了特征图尺寸大小不变。DetNet在保持网络结构中前4个stage与ResNet一致,新增第5及第6个stage专用于检测,主要区别在于,以空洞卷积替换了原有的resnet卷积中的3x3部分,整体不改变输出特征图的大小。如上图,DetNet的block有两种模式,当block输入通道等于block输出通道的图A,以及带有shortcut,输入通道不等于输出通道的图B。下面来实现图B所示网络结构模块:# python中lambda只能跟表达式c原创 2022-04-06 14:22:48 · 958 阅读 · 0 评论 -
【pytorch】 目标检测:实现FPN特征金字塔网络 对照网络结构图手动编写
特征金字塔网络能够同时输出四种不同尺度的特征图,供目标检测使用,能在一定程度上解决小尺寸目标的检测问题。其主干卷积网络采用了ResNet网络。注意,图中生成顺序是,P5,P4,P3,P2,先生成P5,再将上采样结果与C4卷积结果相加得到P4,再将P4上采样并与C3卷积结果相加。...原创 2022-04-06 10:42:21 · 1253 阅读 · 0 评论 -
【pytorch】实现ResNet残差模块 对照网络结构图手动编写
ResNet的出现主要解决了梯度消失的问题。ResNet拟合残差而不拟合网络。Bottleneck为一个残差模块:特别注意的是,当Bottleneck输入输出通道数不同时,旁支shortcut先过个1x1的卷积,调整输出通道后,再与主干输出相加。这种Bottleneck的结构图为:pytorch代码为:#lambda只能跟表达式cnnWithReluAndBn=lambda indim,outdim,ksize,padding,hasRelu=True:\ nn.Sequential原创 2022-04-04 23:19:51 · 1726 阅读 · 0 评论