深度学习
文章平均质量分 81
@BangBang
这个作者很懒,什么都没留下…
展开
-
pytorch 利用Tensorboar记录训练过程loss变化
import ostry:except:passtry:num = 5else:num = 15except:passplt.cla()(1) 首先利用类的构造函数__init__, 实例化的对象self.writer,并将网络结构图添加到self.writer中。其中__init__方法接收的参数包括,保存log的路径log_dir以及模型model和输入的shapetry:except:pass(2) 记录每个epoch的训练损失loss以及验证val_loss。原创 2024-02-02 23:43:54 · 1421 阅读 · 0 评论 -
pytorch网络的增删改
如果想把网络的连续几层给删除掉,比如classifier中最后的几层删除掉#------------------删除网络的最后多层--------------------------#可以看出classifier看出最后2层(5,6)被删除掉了可以使用切片的方式,保留不需要被删除的层重新赋给classifier模块,没有保留的就被删除了。原创 2023-12-10 17:27:46 · 769 阅读 · 2 评论 -
yolov8与yolov5网络对比
针对C3模块,其主要是借助CSPNet提取分流的思想,同时结合残差结构的思想,设计了所谓的C3 Block,这里的CSP主分支梯度模块为BottleNeck模块,也就是所谓的残差模块。同时堆叠的个数由参数n来进行控制,也就是说不同规模的模型,n的值是有变化的。通过C3代码可以看出,对于cv1卷积和cv2卷积的通道数是一致的,而cv3的输入通道数是前者的2倍,因为cv3的输入是由主梯度流分支(BottleNeck分支)依旧次梯度流分支(CBS,cv2分支)cat得到的,因此是2倍的通道数,而输出则是一样的。原创 2023-12-09 18:14:50 · 1170 阅读 · 0 评论 -
支持IOU,GIOU,DIOU,CIOU,SIOU,EIOU,Focal SIOU,WIOU等
【代码】支持IOU,GIOU,DIOU,CIOU,SIOU,EIOU,Focal SIOU,WIOU等。原创 2023-12-09 17:45:18 · 118 阅读 · 0 评论 -
设置随机种子保证网络可复现性
为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样?但是如果你使用的是PyTorch等框架,还要看一下框架的种子是否固定了。还有,如果你用了cuda,别忘了cuda的随机数种子。benchmark 设置False,是为了保证不使用选择卷积算法的机制,使用固定的卷积算法。但是,就算是固定的卷积算法,由于其实现不同,也可能是不可控制的,即相同的值,同一个算法卷积出来有细微差别,这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。原创 2023-12-03 18:23:06 · 162 阅读 · 0 评论 -
利用检测结果实现半自动标注
【代码】利用检测结果实现半自动标注。原创 2023-11-12 23:07:44 · 752 阅读 · 0 评论 -
知识蒸馏概述及开源项目推荐
知识蒸馏,近年来越来越受到研究界的关注。大型深度神经网络取得了显著的成功,特别是在大规模数据的真实场景中,因为当考虑新数据时,过度参数化提高了泛化性能。然而,由于移动设备的算力和存储受限,在这些设备中部署DNN模型是一个巨大的挑战。为了解决这个问题,Bucilua等人(2006)首次提出了模型压缩,将信息从大模型或集成模型转移到训练的小模型中,并且不会显著导致精度下降。从大模型中学习小模型的方法后来作为知识蒸馏正式推广。 在知识蒸馏中,小型学生模型通常由大型教师模型监督。原创 2023-11-12 12:08:04 · 1239 阅读 · 0 评论 -
register_parameter和register_buffer 详解
在参考yolo系列代码或其他开源代码,经常看到和的使用,接下来将详细对他们进行介绍。原创 2023-11-04 19:06:35 · 1206 阅读 · 0 评论 -
polygon yolo
1] : [2] [3] 链接:提取码:dw2b。原创 2023-09-16 20:29:39 · 270 阅读 · 1 评论 -
vscode debug配置及debugpy使用
我们训练yolov5代码时,一般会配置一些参数,比如模型权重文件--weights, 模型的配置文件--cfg, 以及训练的数据--data。原创 2023-08-27 18:28:47 · 3392 阅读 · 0 评论 -
BatchNorm, LayerNorm, InstanceNorm和GroupNorm
Batch Norm: 对NHW计算归一化参数(均值和方差),总共得到C组归一化参数, 相当于对每个channel进行归一化。BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布Layer Norm: 对CHW计算归一化参数,得到N(batch)组归一化参数,对于Batch为1,相当于对整个Feature map 做归一化。原创 2023-07-23 19:21:32 · 2502 阅读 · 1 评论 -
PyTorch常用代码段汇总
本文是PyTorch常用代码段合集,涵盖基本配置、张量处理、模型定义与操作、数据处理、模型训练与测试等5个方面,还给出了多个值得注意的Tips,内容非常全面。PyTorch最好的资料是官方文档。本文是PyTorch常用代码段,在参考资料[1](张皓:PyTorch Cookbook)的基础上做了一些修补,方便使用时查阅。原创 2023-07-22 16:02:51 · 394 阅读 · 0 评论 -
多目标跟踪技术总结
MOT英文全称叫g,中文叫多目标跟踪,从字面意思来讲就是对多个目标对象进行跟踪。具体来说就是在一段视频当中我们要得到我们比较感兴趣的物体的运动轨迹。这里的运动轨迹包括检测框以及检测对象的类别还有检测对象的编号(ID))类别:在行人的跟踪识别情况下只有一个类别就是行人,在一些多类别的场景中就会有行人、车辆ID:基本是固定的,在场景中一般是不会变化的,如果发生了变化就证明出现了错误。多目标跟踪任务里面大家用的比较多、比较实用的范式,是(先检测后跟踪),这种范式分为两步,第一步。原创 2023-07-19 22:29:19 · 375 阅读 · 0 评论 -
深度学习trick
我记得在kaggle上有种方法是叫call back,也就是自己给自己的测试集打个label放进训练,非常不讲武德。我还记得有一次有人用这种方法在一个分类比赛中,别人ACC:94,他们直接干上了98,非常离谱。其实还有个比较常用的一个技巧是多模融合,通常会跑几个模型,然后加在一起融合,在不计算和要求推理时间的条件下。他要模型多大,就做大概多少个模型,你就会发现,你们在单模,我多模,完全就是三个臭皮匠顶一个诸葛亮。原创 2023-07-18 22:04:59 · 515 阅读 · 0 评论 -
SPP、SPPF 、 SimSPPF 、 ASPP、 SPPCSPC详解
模块是在《ECCV2018:Receptive Field Block Net for Accurate and Fast Object Detection》一文中提出的,该文的出发点是模拟人类视觉的感受野从而加强网络的特征提取能力,在结构。为每个采样率提取的特征在单独的分支中进一步处理,并融合以生成最终的结果。这个是Yolov5作者基于SPP提出的,速度较SPP快很多(2.5倍),所以叫做。ASPP 是在DeepLab中提出来的,在后续的。层,加入深度可分离卷积等,但基本的思路还是没变。原创 2023-07-18 21:45:28 · 17638 阅读 · 2 评论 -
数据排布与跨距对齐
虽然在人的视角下,NHWC和NCHW都是四维数据,但对于计算机而言,数据的存储是线性的,因此四维的数据会以一维的形式保存, NHWC和NCHW的区别就在于四维数据在内存上的存储规则不同。假设我们有一张8位深的灰度图,高(Height)为20像素,宽(Width)为30像素,那么该图像每行的有效数据为30字节,如果计算机的对齐规则是8字节,那么对齐后图像的跨距为32字节,此时每行需要Padding的数据量为2字节。,有专门的跨距对齐规则。尾部为CPU节点的模型,去除对齐的操作会自动进行,无需用户手动干预。原创 2023-07-18 20:47:44 · 582 阅读 · 0 评论 -
深度学习模型压缩方法综述
我们知道,一定程度上,网络越深,参数越多,模型也会越复杂,但其最终效果也越好,而模型压缩算法是旨在将一个庞大而复杂的大模型转化为一个精简的小模型。之所以必须做模型压缩,是因为嵌入式设备的算力和内存有限,经过压缩后的模型方才能部署到嵌入式设备上。在阅读和理解经典的轻量级网络 mobilenet 系列、MobileDets、shufflenet 系列、cspnet、vovnet、repvgg 等论文的基础上,做了以下总结:低算力设备-手机移动端 cpu 硬件,考虑。原创 2023-06-23 22:34:30 · 787 阅读 · 0 评论 -
Anchor-free应用一览:目标检测、实例分割、多目标跟踪
它们都参考了FCOS的做法,将目标检测中anchor-free的思想,迁移到了实例分割的任务上。网络的具体细节不会展开讲,这里只会说到他们在解决实例分割任务时,在FCOS的整体架构上做了哪一些调整。首先讲到的是CenterMask,把这个放在最前面是因为他的想法非常直接,这个结构可以理解成 FCOS + MaskRCNN 的 mask的分支。我们可以将它和FCOS做一下对比,输入图像通过 FCOS 得到目标框,这一部分是一样的。之后类似 MaskRCNN,用ROIAlign。原创 2023-06-23 17:07:48 · 982 阅读 · 0 评论 -
Yolov5更换上采样方式( 最近邻 / 双线性 / 双立方 / 三线性 / 转置卷积)
l1.2. 双线性插值(Bi-Linear interpolation)1.3. 双立方插值(Bi-Cubic interpolation)1.4 三线性插值(Trilinear Interpolation)当align_corners = True时,线性插值模式(线性、双线性、双三线性和三线性)不按比例对齐输出和输入像素,因此输出值可以依赖于输入的大小这里我将原本的最近邻插值的上采样方式替换为转置卷积;有人原创 2023-06-07 21:18:33 · 3010 阅读 · 2 评论 -
英伟达开放BEVFusion部署源代码,边缘端实时运行(高达25FPS)
该仓库主要提供了3个模型(BEVFusion)和5个libraries这些模块,通过下面的方式组织起来下面是一个BEVFusion的执行效果模型的精度和速度如下表(nuScenes验证集的平均速度)可以看到,模型在PTQ量化后只有0.3%mAP的损失,是相当不错的在保持高精度的同时还保持了高的推理速度,这对自动驾驶来说非常友好仓库提供了模块化的实现,对于按照要求修改会比较友好BEVFusion是一种用于自动驾驶系统的先进技术。原创 2023-05-18 10:09:33 · 856 阅读 · 0 评论 -
实现Fast sigmoid和Softmax
由于exe^xex幂运算是非常耗时的计算,因此尝试通过替换sigmoid中的exe^xex运算,来提高运行效率,同时不影响计算精度。同理softmax激活函数,也可以通过替换exe^xex运算来提升运行速度。原创 2023-05-16 20:13:26 · 660 阅读 · 0 评论 -
使用 FairMOT 进行目标跟踪和重识别
可以说,基于深度学习的多目标跟踪(MOT)最关键的任务不是识别目标,而是在遮挡后重识别。有大量的跟踪器可供使用,但并非所有跟踪器都有良好的重新识别 pipeline。在这篇博文中,我们将重点介绍一个这样的跟踪器FairMOT,它彻底改变了跟踪中检测和重新识别任务的联合优化。原创 2023-05-13 13:40:47 · 729 阅读 · 0 评论 -
图像常见格式及转换(BGR,YUV,NV12,YUV444)
BGRP与BGR类似,只是排列方式做了改变,不在是BGR依次排列,而是依次先把B像素排列起来,再把G像素排列起来,最后再把R像素排列起来。RGBP与RGB类似,只是排列方式做了改变,不在是RGB依次排列,而是依次先把R像素排列起来,再把G像素排列起来,最后再把B像素排列起来。packed模式y,u,v交错排列,而planar模式y和u,v的排列是分开的,而具体u与v继续分开或者继续交错排列根据具体的格式相关。根据上述理论,假设一张图片宽度是w,长度是h,那么如果图像是。格式,那么图像大小是。原创 2023-05-11 15:45:50 · 3805 阅读 · 0 评论 -
目标检测之Neck选择
文章来自于:曲終人不散丶@知乎,, 本文仅用于学术分享,如有侵权,前联系后台做删文处理。Neck是目标检测框架中承上启下的关键环节。它对Backbone提取到的重要特征,进行再加工及合理利用,有利于下一步head的具体任务学习,如分类、回归、keypoint、instance mask等常见的任务。本文将对主流Neck进行阶段性总结。原创 2023-05-08 14:18:31 · 814 阅读 · 0 评论 -
一文打尽目标检测NMS(2): 效率提升篇
CUDA NMS与Torchvision NMS稍快于以上三种基于pytorch实现的NMS,但比较死板,改动不易。Cluster NMS基本可以取代Fast NMS,且与其他提升精度的方法的有机结合,使它又快又好。(目前作者团队的代码库只提供了得分惩罚法,+中心点距离,加权平均法三种。Matrix NMS也可以参考Cluster NMS的方式先得到一个与Traditional NMS一样的结果后,再进行后续处理。三种基于pytorch的NMS方法,只依赖于矩阵操作,无需编译。原创 2023-05-08 12:40:17 · 1038 阅读 · 0 评论 -
一文打尽目标检测NMS(1): 精度提升篇
加权平均法通常能够稳定获得精度与召回的提升。定位优先法,方差加权平均法与自适应阈值法需要修改模型,不够灵活。中心点距离法可作为额外惩罚因子与其他NMS变体结合。得分惩罚法会改变box的得分,打破了模型校准机制。运算效率的低下可能会限制它们的实时应用性。原创 2023-04-30 10:00:34 · 1379 阅读 · 0 评论 -
Stable Diffusion-生式AI的新范式
Latent Diffusion Model (LDM)是最初的文本-图像模型,稳定扩散模型(Stable Diffusion)是一种扩展。这意味着 "Stable Diffusion "也是一个文本-图像模型。CompVis和RunwayML的原始开放源代码是基于Rombach等人的论文–“High-Resolution Image Synthesis with Latent Diffusion Models”。图2.使用Stable Diffusion生成的戴帽子的狗的图像。原创 2023-04-26 12:47:12 · 1742 阅读 · 3 评论 -
目标检测算法:预测框位置优化总结
优化目标为物体的“中心点”距离四条边的距离接下来我们以FCOS为例介绍该方法优化目标为使得预测框和真值框IoU最大,使用IoU 作为损失函数主要有以下两个优势优化目标和评价指标存在差异,Ln(L2, L1)范式优化和IoU优化并不完全等价,如上图所示。IoU对目标物体的scale不敏感。但是直接使用IoU Loss也存在如下两个问题IoU值容易为0,且始终无法优化。IoU无法辨识不同方式的对齐,比如方向不一致。为了解决上述问题,作者提出了GIoU General IoU Loss。原创 2023-04-25 13:40:36 · 563 阅读 · 0 评论 -
目标检测——结构化知识蒸馏
在过去十年中,卷积神经网络(CNNs)已证明是解决基本计算机视觉任务的非常有效的工具。神经网络的一个主要应用包括自动驾驶汽车中的实时感知系统,其中目标检测通常是一项非常重要的任务。然而,将CNNs部署到实时应用程序中会对内存和延迟造成严格限制。另一方面,最先进的检测器的性能提高通常伴随着内存需求和推理时间的增加。因此,网络模型的选择及其相应的检测性能受到严格限制。已经提出了几种技术来解决这个问题,例如剪枝权重量化参数预测和知识蒸馏(KD)。原创 2023-04-25 11:09:34 · 1037 阅读 · 0 评论 -
opencv c++基础
转自博客: https://blog.csdn.net/m0_60005621/article/details/123544052原创 2023-04-18 13:18:21 · 137 阅读 · 0 评论 -
传统图像处理——颜色迁移
仅供学习。原理是利用颜色空间的正交化,即更改某个颜色,不会影响到其它属性。这里的色彩迁移的论文则是使用了LAB空间这里使用python3.7.6+opencv4.4.0实现。选用优化后的算法效率提升很大。原创 2023-04-14 11:34:55 · 1187 阅读 · 0 评论 -
pytorch性能分析工具Profiler
PyTorch Profiler 是一个开源工具,可以对大规模深度学习模型进行准确高效的性能分析。分析model的GPU、CPU的使用率各种算子op的时间消耗trace网络在pipeline的CPU和GPU的使用情况Profiler利用可视化模型的性能,帮助发现模型的瓶颈,比如CPU占用达到80%,说明影响网络的性能主要是CPU,而不是GPU在模型的推理,各种kernel的运算的消耗。原创 2023-04-12 10:51:52 · 3270 阅读 · 1 评论 -
FastestDet:比yolov-fastest更快!更强!全新设计的超实时Anchor-free目标检测算法
FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法压根儿不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的(不要在拿int8的模型和我fp32的模型比体积了,不公平),但是精度自然而然也比不过。FastestDet是针对计算资源紧缺的ARM平台设计的。原创 2023-04-01 16:01:51 · 859 阅读 · 0 评论 -
目标检测: 数据增强(flip,hsv,mixup,cutout,rotate,mosaic, 随机抖动)
(水平翻转,缩放,色域变换等)。创建一张像素值为(128,128,128),大小为input_shape 大小比如(640,640)的图片,将4张图片分别放在该图片。然后每张图片分别创建一张和mosaic大小,像素为(128,128,128,128),将图片放在对应的部分。对左上角,左下角,右上角,右下角4个部分box坐标,进行限制,防止坐标超出对应位置以及越界。分别计算每张图片与mosaic后图片,同一点的坐标。等数据增强变换后的图像,逐像素融合为一张图片。,因此需要对标签的坐标信息进行相应的变换。原创 2023-03-05 19:32:53 · 781 阅读 · 0 评论 -
旋转矩形框标注--roLabelImg的使用
(2) 安装LabelImg: roLabelImg 环境依赖于LabelImg,因此需要先安装好LabelImg。,当angle小于pi/2时,theta等于angle,当angle大于pi/2时,theta等于angle-pi。xml文件保存了旋转检测框的类别(wenben)、中心点坐标(cx,cy)、宽高(w,h)、旋转角(angle)与常规的目标检测bounding box不同,在它的基础上添加了旋转角度,对常规水平检测框进行旋转。预定义的类别名为自定义Dataset的类别名,比如。原创 2023-03-03 13:52:56 · 2368 阅读 · 4 评论 -
权值衰减weight decay的理解
权值衰减weight decay即L2正则化,目的是通过在Loss函数后加一个正则化项,通过使权重减小的方式,一定减少模型过拟合的问题。L1正则化:即对权重矩阵的每个元素绝对值求和,λ∗∣∣W∣∣λ * ||W||λ∗∣∣W∣∣1/2∗λ∗∣∣W∣∣21/2∗λ∗∣∣W∣∣2注意:正则化项不需要求平均数,因为权重矩阵和样本数量无关,只是为了限制权重规模。L1损失函数。原创 2022-12-29 14:51:54 · 6027 阅读 · 0 评论 -
基于Dlib训练一个自定义目标检测器并进行手势操控
本文中,您将学习如何使用AI构建基于python的手势控制应用程序。主要包括以下几部分内容:- 如何用Dlib训练一个自定义手检测器。- 如何巧妙地自动化标注- 如何通过手势控制游戏和视频播放器。...原创 2022-06-12 21:20:19 · 1265 阅读 · 0 评论 -
深入讲解TensorFlow模型优化工具包
`TensorFlow Model Optimization Toolkit`是一套用于优化ML模型的工具,用于部署和执行。在许多用途中,该工具包支持的技术有如下使用:- 降低云和边缘设备(如移动、物联网)的延迟和t推理成本。- 将模型部署到对处理、内存、功耗、网络使用和模型存储空间有限制的边缘设备。- 支持对现有的硬件或加速器运行和优化。...原创 2022-06-12 09:58:54 · 595 阅读 · 0 评论 -
基于C3D网络的视频分析与动作识别
3D卷积与2D卷积的区别首先看一下二维卷积,一个33的卷积核,在单通道图像上进行卷积,得到输出。然后我们再看一下3维卷积,一个33*3的卷积核在立方体上进行卷积,得到输出:多通道卷积不同的通道上的卷积核的参数是不同的,而3D卷积则由于卷积核本身是3D的,所以这个由于“深度”造成的看似不同通道上用的就是同一个卷积,权重共享。总之,多了一个深度通道,这个深度可能是视频上的连续帧,也可能是立体图像中的不同切片。3D卷积的应用上面也说了,3D卷积就是多了一个深度通道,而这个深度通道可能是视频上的连续原创 2022-05-28 20:53:41 · 3688 阅读 · 0 评论 -
pytorch gpu 环境安装
1.虚拟环境创建conda create -n C3D_env python=3.8 -yconda activate C3D_env2. 查看本机的cuda版本nvidia-smi可以看出本机的cuda版本为10.13. 安装对应版本的pytorch-gpu这里假设环境需要安装python=3.8 pytorch=1.7.1 对应的cuda=10.1,安装pytorch–gpu, 其中cuda,python,torch的版本对应关系参考,首页如果没找到对应的版本,点击Prev原创 2022-05-27 20:30:41 · 590 阅读 · 0 评论