
深度学习高级实践
文章平均质量分 92
专属解决深度学习技术应用过程中的技术难点
优惠券已抵扣
余额抵扣
还需支付
¥299.90
¥399.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
万里鹏程转瞬至
一名热爱深度学习算法实践的算法工程师,工作日长期活动在线,有项目研发技术问题均可私聊。
展开
-
修改2行代码在ultralytics项目中实现知识蒸馏支持任意模型(基于特征图的对齐)
本文主要是实现对ultralytics项目中任意模型的知识蒸馏(要求模型是同构的),具体是实现backbone级别或neck级别的蒸馏。具体对应Object detection at 200 Frames Per Second与Focal and Global Knowledge Distillation for Detectors两篇论文对应的知识蒸馏方法,并以yolo11s为教师模型、yolo11n为学生模型,以map50为评价指标,在URPC2019数据集、SARDet-100k测试数据集进行验证,均原创 2025-02-01 13:15:00 · 250 阅读 · 0 评论 -
迁移学习中模型训练加速(以mllm模型为例),提速15%以上
根据的分析,一个1g参数的模型(存储占用4g)训练大约需要20g的显存,其中梯度值占用的显存约一半。博主本意是想实现在迁移学习(冻结部分参数)中模型显存占用的降低,结果不太满意,只能实现训练速度提升,但无法实现显存占用优化。预计是在现有的训练框架中,对于显存占用优化做的十分到位,优化空间极小。但基于现有的策略,在不影响任何训练效果下,侥幸能实现训练速度提升15%也是十分有意义的。原创 2024-12-14 23:00:00 · 367 阅读 · 3 评论 -
模型训练过程的显存占用优化
在冻结模型部分参数时,理论上被冻结的参数不需要梯度,应该可以降低训练过程的显存占用。然而,在博主的实际测试中,冻结模型参数并没有显著降低模型参数占用。为此对训练提醒代码进行优化,意图实现模型显存占用的优化。通过对训练过程中的激活值与梯度值的优化,在针对冻结95%的训练场景,模型训练速度可以加速20%,模型显存占用降低到原来的22%(拟定torch.cuda环境占用显存为1.4g)后续的显存占用,均基于nvitop命令实现。原创 2024-11-17 23:18:36 · 272 阅读 · 0 评论 -
将任意图像增强模型与ultralytics中任意模型进行结合 (二)| yolo11与gdip模块、ipam的融合实践
ultralytics库代码总是在不断更新迭代,原来自行添加到ultralytics库的模型代码,随着更新的yolo模型发布,自行修改模型代码又要进行新一轮同步,这不是一个明智的操作。为此博主提出将任意图像增强模型与ultralytics中任意模型进行结合方式,前面仅是以低亮度图像修复模型SCINet为例,在这里以带雾图像增强模块gdip、ipam模块的与ultralytics库中最新模型yolo11的融合。库代码更新。原创 2024-10-21 00:02:33 · 323 阅读 · 0 评论 -
基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调
基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调,提升InternVL2-1B等轻量lmm模型的能力。本实验在window下,基于3060 12g显卡进行实验。基于qwen2-vl 7b模型生成标签(电脑显存大的话可以考虑qwen2-vl 72b模型),然后对InternVL2-1B进行Lora微调。以voc2012_val里面的3000多个图片为训练数据,耗时1小时完成。最后测试微调前后的模型,可以发现微调后的InternVL2-1B模型在特定任务上(目标与数量识别)的能力原创 2024-10-08 03:45:00 · 311 阅读 · 0 评论 -
将任意图像增强模型与ultralytics中任意模型进行结合,支持自定义图像增强模块的loss,实现端到端训练
图像增强模型算法版本较多,同时ultralytics库的迭代也比较大,直接将图像增强模型算法添加到ultralytics库中可能只是当前版本支持,在ultralytics库升级后,又需要重新配置。故而分享一种方式进行实现,支持任意图像增强模型与ultralytics库中任务模型(如yolov8,yolov9,yolov10等模型)进行结合。支持模型的训练、验证与导出。其核心就是,对模型结构进行替换,同时确保调用ultralytics库接口的train函数时模型结构替换依旧有效。原创 2024-09-22 22:55:28 · 613 阅读 · 0 评论 -
将AIRNet集成到yolov8中,实现端到端训练与推理
AIRNet是一个图像修复网络,支持对图像进行去雾、去雨、去噪声的修复。其基于对比的退化编码器(CBDE),将各种退化类型统一到同一嵌入空间;然后,基于退化引导恢复网络(DGRN)将嵌入空间修复为目标图像。可以将AIRNet的输出与yolov8进行端到端集成,实现部署上的简化。 本博文的实现,支持AIRNet模型在yolov8中的推理与训练,但是对于AIRNet模型的loss,不支持在训练输出中显示(改动量较大,故放弃了),但在每一次iter迭代中,各位可以添加loss信息存储代码,在训练结束后自行将ite原创 2024-06-10 18:36:52 · 649 阅读 · 5 评论 -
将gdip-yolo集成到yolov9模型项目中(支持预训练的yolov9模型)
YOLOv9意味着实时目标检测的重大进步,引入了可编程梯度信息(PGI)和通用高效层聚合网络(GELAN)等开创性技术。该模型在效率、准确性和适应性方面取得了显著改进,在MS COCO数据集上建立了新的基准。YOLOv9项目由一个独立的开源团队开发,建立在Ultralytics YOLOv5提供的强大代码库的基础上,展示了人工智能研究社区的合作精神。yolov9模型在coco数据集的效果如下所示。原创 2024-04-18 21:43:09 · 662 阅读 · 0 评论 -
将gidp模块、ipam集成到ultralytics项目中实现支持预训练权重的gidp-yolov8、ipam-yolov8
gdip-yolo与ia-seg都是一种将图像自适应模块插入模型前面,从而提升模型在特定数据下检测能力的网络结构。gdip-yolo提出了gdip模块,可以应用到大雾数据与低亮度数据(夜晚环境),然后用于目标检测训练;ia-seg将ia-yolo中的代码修改了一下修车了ipam模块,应用到低亮度数据(夜晚环境),然后用于语义分割训练。我们可以抽取gdip模块与ipam模块,完全嵌入到ultralytics项目中,以支持ultralytics项目中的任意模型,目前已经验证支持yolov8n-gdip.yaml原创 2024-04-17 22:51:23 · 826 阅读 · 4 评论 -
提取gdip-yolo与ia-seg中的图像自适应模块进行图像去雾与亮度增强
gdip-yolo与ia-seg都是一种将图像自适应模块插入模型前面,从而提升模型在特定数据下检测能力的网络结构。gdip-yolo提出了gdip模块,可以应用到大雾数据与低亮度数据(夜晚环境),然后用于目标检测训练;ia-seg将ia-yolo中的代码修改了一下修车了ipam模块,应用到低亮度数据(夜晚环境),然后用于语义分割训练。这两个项目都发布了预训练模型,我们可以抽取预训练模型中的图像自适应模块进行数据增强。原创 2024-03-29 22:41:47 · 486 阅读 · 0 评论 -
将FastSAM中的TextPrompt迁移到MobileSAM中
SAM提到了text prompt,但其代码中没有发布实现方式,MobileSAM也没有实现text prompt,而FastSAM以一种巧妙的方式实现了text prompt。这主要因为,在现有成熟的训练体系下加入Prompt机制是比较复杂的,MobileSAM基于解耦蒸馏绕过Prompt的训练(`使用sam原始的prompt的`),而FastSAM将Prompt看作一种结果稀疏化的方法(`对于位置类prompt,采用逻辑操作进行mask选择;对于text的prompt,基于clip对实例切片进行余弦原创 2024-03-17 15:12:48 · 576 阅读 · 0 评论 -
将gdip-yolo集成到yolov8项目中(核心思路可以应用到yolov9的集成)
本博文通过gdip-yolo论文的深入分析发现,其论文中最为关键的gdip-yolo与gdip-regularizer,为此先在yolov8项目中实现gdip-yolov8,后续时间会考虑将gdip-regularizer集成对最新的目标检测算法。发现gdip-yolov8模型无法导出为onnx模型,这是因为gdip-yolo模块中使用了vgg16作为视觉编码器,然后vgg16中包含了adaptive_avg_pool2d无法被onnx算子所支持(需要自己固定图像输入尺寸,然后修改为avg_pool2d)原创 2024-03-06 22:28:46 · 762 阅读 · 7 评论 -
使用AOT-GAN-for-Inpainting训练自己的数据集
AOT-GAN-for-Inpainting是一个开源的图像修复项目,其对 Places2 数据集的效果表明,该模型在 FID 方面明显优于最先进的模型,相对改进了 1.8%。一项包括 365 多名受试者的用户研究进一步验证了 AOT-GAN 的优越性。其开源的模型在logo去除、面部修复和物体移除上取得良好效果。我们可以使用 AOT-GAN-for-Inpainting项目训练自己的数据集。AOT-GAN-for-Inpainting的解读可以参考。原创 2024-02-22 14:09:52 · 826 阅读 · 0 评论 -
将ia-seg中的ipam模块集成到yolov8中实现ia-yolov8(支持预训练的yolov8模型,兼容原来的用法)
具体操作为,在ultralytics\nn\tasks.py中的第237行(ia-yolo项目的使用代码如下所示,通过设置环境变量original_yolo来控制项目使用原始yolo还是ia-yolo进行训练、通过enhanceType参数控制是用ia-yolo或gidp-yolo(关于gidp-yolo的使用后续发布博文)。将ia-seg中ipam的相关代码抽取出来,并新增部分代码,形成以下代码,保存为ia_ultralytics\engine\IPAM.py,这里的主要目的是构造IA_Model类。原创 2024-02-20 23:35:20 · 778 阅读 · 3 评论 -
3060ti显卡+cuda12.1+win10编译安装生成fastdeploy的c++与python库
在cuda12中,调用官方发布的fastdeploy会出现报错,故此自行编译fastdeploy库。官网编译教程:https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/gpu.md可选编译选项。原创 2024-02-08 00:03:29 · 540 阅读 · 0 评论 -
导出zoedepth的onnx模型并基于gradio实现在线部署
将C:\Users\Administrator.cache\torch\hub\intel-isl_MiDaS_master\midas\backbones\utils.py中的代码修改为以下形式。需要注意的是,原来在zoedepth\models\zoedepth\zoedepth_v1.py中输出的结构是dict,但是在转换为onnx模型后,被转换为tensor了。将zoedepth\models\base_models\midas.py 中的get_size函数修改为以下内容,也就是。原创 2024-01-16 22:19:18 · 863 阅读 · 0 评论 -
使用rembg库提取图像前景(移除图像背景),并构建web应用
在传统图像处理中,前景是无法被直接提取出来,都是通过将前景图像的灰度与梯度特征不断进行增强,使得其与背景呈现显著性差异;在深度学习图像处理领域中,图像内容可以被定义为前景与背景两部分,其中感兴趣图形的被定义为前景,不感兴趣区域的背景。如在目标检测中,被框出来的目标则被定义为前景。如果要使用u2net_human_seg、u2net_cloth_seg、u2netp等模型进行前景提取,也可以自行下载。处理本地文件夹,命令如下所示,./image为要处理的图片目录,image_out为处理结果的存放目录。原创 2024-01-10 21:40:12 · 2070 阅读 · 0 评论 -
AOT-GAN + onnx部署 + gradio 实现在线图像修复
运行环境说明,其依赖: torch + python-opencv + onnxruntime + gradio + numpy + einops。原创 2024-01-14 12:46:44 · 540 阅读 · 2 评论 -
在ultralytics中实现obb检测,官方团队做了哪些修改?
在最新的在ultralytics中,官方团队已经提供了obb检测功能,并发布了相应的预训练模型,其具体使用可以参考。在ultralytics\nn\modules\head.py中,实现了OBB head,用于在网络head中新增预测值用于进行角度预测,可见其是通过cv4 进行角度特征提取,最终预测一个角度值(ne ),`非csl、kdl的方式进行预测,其预测的角度范围为[-pi/4, 3pi/4]`原创 2024-01-08 00:45:00 · 2276 阅读 · 0 评论 -
使用pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集
superpoint与superglue的组合可以实现基于深度学习的图像配准,官方发布的superpoint与superglue模型均基于coco数据训练,与业务中的实际数据或许存在差距,为此实现基于开源的pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集。然而,在训练pytorch-superpoint有诸多细节需要优化,特此整理成技术文档。本文档描述了实验pytorch-superpoint与pytorch-superglue项目训练自己的图像配准模型。原创 2024-01-07 00:15:00 · 6937 阅读 · 49 评论 -
将yolov8的检测框从正框修改为旋转框需要做那些修改?
将yolov8项目修改为yolov8_obb项目需要修改模型结构(增加角度预测)、dataloader(使其支持dota格式数据)、修改TaskAlignedAssigner(使其支持带角度的bbox)、修改loss(新增对角度的训练)、修改metric(将hbb指标titile修改为obb)、修改绘图代码(使其能绘制旋转框)。目前yolov8官方团队已经发布了支持obb的检测,博主于8个月前所实现的obb没有任何战略价值。为此分享博主过往将将yolov8项目修改为正框模型的操作过程。从正框模型到旋转框模型原创 2024-01-06 14:05:01 · 1776 阅读 · 0 评论 -
使用PCReg.PyTorch项目训练自己的数据集&进行点云配准
本文方法与常见的图像配准逻辑类似,基于采样与transfrom操作从源点云生成目标点云,然后进行训练与评测。总体看来效果不如open3d自带的fgr方法,可以作为入门级项目进行使用。网络是基于PointNet + Concat + FC的,它没有其它复杂的结构,易于复现。因其简洁性,这里暂且把其称作点云配准的Benchmark。因作者源码中复杂的(四元数, 旋转矩阵, 欧拉角之间)的变换操作和冗余性,且其PyTorch版本的不完整性(缺少评估模型等,最近又更新了),原创 2023-12-02 11:13:55 · 1384 阅读 · 8 评论 -
IA-YOLO项目中DIP模块的初级解读(生成带雾图片)
IA-YOLO项目源自论文,其提出端到端方式联合学习CNN-PP和YOLOv3,这确保了CNN-PP可以学习适当的DIP,以弱监督的方式增强图像检测。IA-YOLO方法可以自适应地处理正常和不利天气条件下的图像。阅读论文发现只介绍了IA-YOLO的实际效果,对DIP模块和CNN-PP介绍较少,故此查阅源码分析其实现。通过分析发现,IA-YOLO使用filtered_image_batch 与 input_data_clean的mse loss优化CNN-PP模块的输出。原创 2023-08-27 13:06:03 · 9580 阅读 · 54 评论 -
使用ZoeDepth生成深度估计图
目前单目深度估计分为两个派系,。ZoeDepth是 第一个结合相对和绝对深度的多模态单目深度估计网络。本博文仅记录使用ZoeDepth生成深度估计图的过程(因为直接按项目说明中进行使用会报错误)项目地址: https://github.com/isl-org/ZoeDepth论文地址: https://arxiv.org/pdf/2302.12288.pdf。原创 2023-09-20 22:10:07 · 8496 阅读 · 20 评论 -
IA-SEG项目中DIAL-Filters(IAPM模块+LGF模块)使用解读
CNN-PP模块为DIP模块优化图像提供filter参数,其本质是一个简洁的卷积神经网络,其输入部分为低分辨的原始图,其输出为DIP模块的优化参数。在IA-SEG中,CNN-PP模块的参数(预测4个filter参数,278K)比在IA-YOLO(预测15个filter参数,165k)要多。注:IA-SEG与IA-YOLO均为同一作者实现DIF模块全程Differentiable Image Filters,其由几个具有可调超参数的可微滤波器组成,包括曝光度、伽玛度、对比度和锐度。原创 2023-09-02 14:18:54 · 5098 阅读 · 16 评论 -
C++下web框架corw的完全使用手册(实现中文支持)
corw是一个开源、轻量化的c++web库,在使用上与python的flask是类似的。本文档为corw的完整使用文档,含项目配置(基于cmakelist)、路由绑定、返回数据(json、文本、response对象、静态资源、模板文件)、接口请求处理(REST请求,url参数绑定、json请求、GET参数和POST参数)和各种高级操作(Cookie操作、Session操作、文件上传操作、文件下载操作、websocket操作、自定义loghandler)。此外,还对各类参数请求、结果返回过程中对中文的支持(如原创 2023-11-26 10:14:12 · 7021 阅读 · 2 评论 -
基于ROPNet项目训练modelnet40数据集进行3d点云的配置
一种新的深度学习模型,该模型利用具有区别特征的代表性重叠点进行配准,将部分到部分配准转换为部分完全配准。基于pointnet输出的特征设计了一个上下文引导模块,使用一个编码器来提取全局特征来预测点重叠得分。为了更好地找到有代表性的重叠点,使用提取的全局特征进行粗对齐。然后,引入一种变压器来丰富点特征,并基于点重叠得分和特征匹配去除非代表性点。在部分到完全的模式下建立相似度矩阵,最后采用加权支持向量差来估计变换矩阵。原创 2023-12-05 22:47:28 · 1628 阅读 · 16 评论 -
修改ROPNet项目训练实现训练自己的数据集
一种新的深度学习模型,该模型利用具有区别特征的代表性重叠点进行配准,将部分到部分配准转换为部分完全配准。基于pointnet输出的特征设计了一个上下文引导模块,使用一个编码器来提取全局特征来预测点重叠得分。为了更好地找到有代表性的重叠点,使用提取的全局特征进行粗对齐。然后,引入一种变压器来丰富点特征,并基于点重叠得分和特征匹配去除非代表性点。在部分到完全的模式下建立相似度矩阵,最后采用加权支持向量差来估计变换矩阵。在订阅本专栏后,需要博主修改后的源码和修改教程可以私聊博主。原创 2023-12-24 12:45:38 · 482 阅读 · 1 评论