自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认真努力,做一只会飞的毛毛虫。

欢迎来到我的技术博客。

  • 博客(175)
  • 收藏
  • 关注

原创 IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS (T-ITS) 投稿记录,欢迎大家评论~

早上收到接收邮件,中文我就提交最终文件了,基本上就是提交了个二审修订版的PDF和Word,不过这就为后面埋下了伏笔。下午同收到一个邮件,就是创建一个IEEE的校稿系统的账号,然后每个作者都得进去确认一下,据说确认一下会加快流程,而且编辑确实也要求每个作者都得确认。然后我就花了几天时间,最终在3月8号下午的时候,发了latex格式的文件给这位编辑。12-Mar-2024 :晚上11点,收到超页费缴费邮件。21-Mar-2024 :早上9点,收到Early Access的邮件,至此,等待见刊啦。

2024-03-24 22:18:56 601 1

原创 Stable Diffusion 系列教程 - 6 Dreambooth及训练

批次大小设1(DB训练本身很慢,动不动十几个小时,从这里抠速度意义不大,设大了反而容易波动)。stop_next_encoder_training:控制AI对我们对数据集中打的标的认识程度,低了AI会对打的标不敏感,高了容易过拟合。这个值的计算公式:敏感程度×图像数量×max_train_epoch,比如308张图,40%的敏感度,则stop_next_encoder_training=308×0.4×200=24640。这里的重复次数乘以下面的最大训练轮数相当于插件版的epochs。

2024-01-07 21:22:04 1977 3

原创 Stable Diffusion 系列教程 - 5 ControlNet

单个ControlNet的大小在1.4G左右,上面为五个应用最为广泛的控制模型。ControINet之于整个AI绘画过程,其实也就是诸多环节里面的“一环"而已。AI还是会综合参考提示词、图生图、Embeddings、LoRA等各个方面的东西来综合的实现AIGC。这里可以下载我们想用的所有模型,但是切记要把yaml文件也下载下来,其用来定义模型的配置。将成对的模型文件放在目录。注意:老版本没有yaml文件,新版本的模型有yaml文件,如果不下载就用不了这个模型。

2023-12-30 20:13:56 741

原创 Stable Diffusion 系列教程 - 4 提示词和WebUI有用的小技巧

例子8 Scripts Step: 其实不光是这个,还有很多,都能用来做对比,可以尝试的玩一玩。

2023-12-15 23:45:05 427

原创 Stable Diffusion 系列教程 - 3 模型下载和LORA模型的小白入门

点开一张照片,我们能看到生成这张照片的提示词和负提示词以及cfg scale,甚至往下拉还有推荐的优质参数和评论区。黄框是一些过滤器,比如checkpoints可以理解为比如把1.5版本的SD模型拷贝一份后交叉识别新的画风或场景后得到的模型,可以单独拿出来使用。点击训练,再点击图像预处理:复制存放图像的文件夹到源目录,复制标签和预处理后的图像需要存放的文件夹到目标目录。实际使用中,我们发现生成的和网页给我们的感觉差距是非常大的,其中有很重要的一点是没有阅读模型的说明书。因此需要去对生成的标签做处理。

2023-12-12 11:55:02 2102

原创 Stable Diffusion 系列教程 - 2 WebUI 参数详解

SwinIR 4x:使用SwinTransformer模型,拥有局部自适应的内容,更好的提取可特征,提高图像细节,保证放大图片真实感稳定训练,很全面却没有一方面超过别的算法。ESRGAN 4x:它是ESRGAN算法的一种改进版本,可以将低分辨率的图像通过神经网络模型增强到4倍的分辨率,在增强图像的细节信息和保留图像质量方面有了明显的提升。Nearest:非常传统的归类找近似值的方法,计算新的东西和旧的东西的相似度,以最相似的内容去出图,大数据时效果好,实际一般。目前最实用,最优的选择,更贴合真实效果。

2023-12-06 15:30:05 1369

原创 C++程序“错误代码0xc000007b”的解决方案

的话,vs生成的exe或者dll应该都是无法运行的。比如你调用了c++中默认的或等文件,这些实现与操作系统的互动的,所以需要有相应的环境,而这些环境都是由vcredist来提供的,比如有很多默认的dll文件。,下载红框所示的安装依赖包,然后安装。这么做的原因是:如果电脑中没有安装。

2023-12-06 15:17:49 824

原创 Stable Diffusion 系列教程 - 1 基础准备(针对新手)

硬件环境推荐NVIDIA的具有8G显存的独立显卡,这个显存勉勉强强能摸到门槛。对于8G显存,1.0模型就不行,需要更高的环境配置,所以8G仅仅是个基础。比如点击扩展,可以看到一些内置的插件和自己安装的插件,蓝色的使能框能够勾选或取消一些插件,在勾选完成后点击“应用并重启用户界面”就能生效。再一个有时候部分插件是彼此冲突的,这个功能可以帮我们取消勾选冲突的插件。点击“可用”,再点击“加载自”,就可以看到插件目录表。比如黄色框,上面是中文,下面是英文。我们点击UI界面的扩展文件夹,就能跳转到所有插件的根目录。

2023-12-03 18:09:30 1488

原创 Qt国际化翻译Linguist使用

QT的国际化是非常方便的,简单的说就是QT有自带的翻译工具把我们源代码中的字符串翻译成任何语言文件,再把这个语言文件加载到项目中就可以显示不同的语言。下面直接上手:

2023-12-03 10:52:41 592

原创 学Diffusion前需要储备的一些知识点

自学Diffusion是非常困难的,尤其是到了VAE和VI这里基本找不到比较好的中文资料,甚至是涉及到一些重参数化,高斯混合之类的问题摸不着来龙去脉。在本文中,基本不会涉及公式,只有intuition和理解,如果要看公式的话可以移步到其他博主文章。自编码器的“自”不是自动,而是自己训练,即自监督学习。Auto-encoder是自监督学习的一种,其可以理解为一个试图还原其原始输入的系统。它和PCA的道理是一样的,只不过将PCA的转换矩阵W和WT换成encoder和decoder。主成分分析(PCA)和自编码器

2023-11-14 15:14:56 161 1

原创 小目标检测闲谈

在众多小目标检测方法中,最实用的方法通常包括以下几个方面:数据增广(例如Stitcher、copy-paste)以增加训练样本的多样性,使用放大输入图片的策略(如GAN放大再检测、将图像裁剪成patch再放大,如SAHI方法)来处理小物体,利用高分辨率的特征(如QueryDet[5])以捕捉更多小物体细节,或者专门为极小目标(

2023-10-19 09:42:34 158

原创 Tensorrt导出engine文件加密(Windows&C++版)

扯皮的话:目前,人工智能越来越普遍,导致各种模型都需要进行落地应用。高效率的部署方式即通过Tensorrt进行部署,但通过该框架导出的engine文件却本身不具有加密性质,即可通过打印等方式得到该engine文件各种内容,从而导致商业秘密泄露。为此,本文将专门通过一个非常简单的小技巧将我们的engine文件进行加密,从而即使有技术人员拿到engine文件也不可能对其中的内容进行破解,从而保护商业机密。

2023-08-12 09:32:56 759

原创 新版mmpose训练新版RTMDet/Pose及自定义数据集制作

【代码】新版mmpose训练新版RTMDet/Pose及自定义数据集制作。

2023-07-28 11:54:30 599

原创 ModBus协议原理、Modbus Slave以及基于C++和Qt的代码实现

包含有:0x01 读继电器/线圈、0x05 写继电器/线圈、0x0F 写多个继电器/线圈、0x02 读离散量输入、0x04 读输入寄存器、0x03 读保持寄存器数据、0x06 写单个保持寄存器、0x10 写多个保持寄存器。事务处理标识+协议标识符+长度+设备地址+功能码+两个字节的起始地址+两个字节的读取个数。事务处理标识+协议标识符+长度+设备地址+功能码+两个字节的地址+两个字节的读取个数。事务处理标识+协议标识符+长度+设备地址+功能码+两个字节的地址+两个字节的读取个数。读取保持寄存器的帧结构,

2023-07-23 13:34:17 1517 5

原创 RealESRGAN系列网络 C++&Win10&Tensorrt 部署教程

RealESRGAN系列网络 C++&Win10&Tensorrt 部署教程。

2023-06-26 11:31:15 618

原创 利用MMDeploy和MMDection在C++和TensorRT的基础上部署RTMDet检测分割一体化网络

【代码】利用MMDeploy和MMDection在C++和TensorRT的基础上部署RTMDet检测分割一体化网络。

2023-05-12 10:50:48 606 1

原创 当今最强最快的目标检测器(超越 YOLO v8)RTMDet的环境配置及自定义训练

下图是一个标注示例,我们只需要标注分割区域即可,不需要标注检测框。我们需要通过脚本将这些json文件进行整合。每一个img对应一个json文件。

2023-05-11 22:15:47 1351

原创 QT之动态滚动显示图像类

【代码】QT之动态滚动显示图像类。

2023-05-10 22:09:09 716

原创 MMCV - dataset_analysis.py 可视化检测和跟踪任务自定义数据集神器

做视觉检测跟踪任务时,我们需要在论文插图中体现出我们数据集的信息,这个时候就有一个非常好用的神器:dataset_analysis.py的文件。该文件能够帮助用户直接可视化custom数据集的bbox实例信息,如上图所示,包括:显示类别和 bbox 实例个数的分布图;显示类别和 bbox 实例宽/高比例的分布图;显示类别和 bbox 实例个数的分布图;显示类别和 bbox 实例面积的分布图。该文件的位置为:C:\Users\dingjiangang\Desktop\mmd_all\mmyolo\mmyolo

2023-02-01 14:07:05 535

原创 MMCV - browse_dataset.py 可视化检测和跟踪任务config文件数据预处理部分神器

无论是mmdetection、mmtracking、mmdetection3D等框架,在\tools\analysis_tools中均有一个名为browse_dataset.py的文件。该文件能够帮助用户直接可视化 config 文件中的数据处理部分,查看标注文件是否正确,同时可以选择保存可视化图片到指定文件夹内。

2023-01-31 22:34:27 856 6

原创 目标跟踪心得篇七:解决目标跟踪评价指标输出为0或异常(Trackeval、MMtracking)

如果在做跟踪任务测评时,发现输出的评价指标全为0或者异常值时该怎么办(如下图)?博主调试了很久发现其实这是MMtracking的一个Bug,因此如果不是用MMtracking框架的话本节可能对你帮助不大。大致有以下两个内容:TrackEval目前还不能做到对多类别的MOT任务计算评价指标,因此如果为异常值而非0值,则考虑是标注是多类别引起的。对于这种情况,有以下两种解决方式:办法一:修改mot2coco.py脚本,我们将所有的标注类别全都弄成1类去计算评价指标,当然这样有违背初衷,不过很多场景下这样也

2023-01-31 18:15:51 830 2

原创 目标跟踪心得篇六:如何转换DarkLabel的标注并在MMTracking上输出跟踪评测(Win, Linux均适用)

接着,我们需要明白我们需要什么格式的数据来作为测评的验证?答案是mmtracking已经给了示例:在mmtracking-1.0.0rc1\tests\data\demo_mot_data\ann.json,也就是说我们需要将Darklabel的标注的txt格式转化为json文件,当然这个json不是标准的coco格式,只是类coco,比如ann.json文件中就包含有video关键字。

2023-01-30 15:14:58 862 3

原创 Deformable DETR TBD范式的不二选择

但DETR也有几个缺点:DETR是端到端的开山之作,对参数比较敏感,因此对于自定义数据集来说性能不够突出,甚至不如yolov7,yolov5。只用了backbone的最后一层,没有FPN,小目标检测效果不好。输入图像的shape不能特别大,原始网络资源开销大。(10×10大小的image展开为序列是100维,100×100大小的image展开为序列是10000维,因此输入的越大,其资源开销是平方倍的。此外,序列需要对每一个维度都做self-attention,因此又得给10000再平方,消耗是非常大

2023-01-29 15:13:19 479

原创 目标跟踪心得篇五:MOT数据集标注、DarkLabel不能自动跟踪解决方案

跟踪方向的标注成本非常很大的 ,那么我们如何尽可能一次性弄好呢?所选标注工具:DarkLabelDarkLabel是一个轻量的视频标注软件,尤其做MOT任务非常友好,其标注可以通过脚本转化为标准的目标检测数据集格式、ReID数据集格式和MOT数据集格式。使用之前:darklabel.yml:保存路径,配置自己的数据格式、数据集类别名称。比较重要的基操:鼠标左键:创建一个框。鼠标右键:删除最近创建的框。shift + 鼠标左键:既可以拖动框,同时也可以改变框的大小。shift + 鼠标右

2023-01-25 09:32:28 3009 9

原创 目标跟踪心得篇四:多目标跟踪的测评(性能指标)详解

MOT的性能指标分为两种,一种是目标检测任务的测评结果。一种是跟踪任务的测评结果。前者在任何目标检测框架下在训练过程中都可以得到。后者则需要用test.py输出,而非目标检测任务的train.py。此外,验证集是一定要有标注的哦。对于MMTracking而言,是不能直接使用MOT17或MOT20(和MOT17大差小不差)格式的标注文件的,需要用mmtracking-1.0.0rc1\tools\dataset_converters\mot\mot2coco.py转一下。因此,最开始标注成标准的MOT格式是方

2023-01-16 17:34:07 1339

原创 目标跟踪心得篇三:结合MMTracking代码逐行分析卡尔曼滤波及二分图原理

虽然卡尔曼(KF算法)和二分图(KM算法)在目标跟踪任务中完全可以当黑盒用。但是在发论文时(比如小目标跟踪需要在卡尔曼滤波中做平滑)则需要对原始代码进行必要的修改。首先,为什么我们要用卡尔曼滤波器?如果直接用detector的结果进行跟踪行不行?假设我的detector检测到了前一帧的结果,也检测到了当前帧的结果,直接拿它们俩做匹配实现跟踪不可以吗?我们举这样一个例子:假设我们用高德地图进行导航,在有GPS信号时定位是很精准的,但在隧道中GPS信号弱,有很多噪声的时候,定位就不精准了,但我们又希望定位准确,

2023-01-12 19:30:43 554

原创 目标跟踪心得篇二:ByteTrack原理及其在MMTracking上的代码逐行分析(本文顺带分析MMTracking相关难点,后期不在赘述)

要学习ByteTrack,首先得了解其名字是怎么来的:这个工作是一个学生在字节实习的时候提出来的算法,因此就以Byte这个单词来命名,可能从名字上没有太直观的含义来体现出这个算法在干嘛。ByteTrack是基于TBD范式提出来的跟踪算法,作者的work就是提出来了一种数据关联方法(name叫BYTE),它和主流的SORT类算法的区别在于:ByteTrack不会简单的去掉低分结果(detection得到的score),而是从低分框里挖掘一些有用的信息,这样就可以捞回一些之前被丢弃的结果,因此在小目标和遮挡

2023-01-10 10:11:39 1957

原创 目标跟踪心得篇一:MOT综述(跟踪方向如果独自闷头拉车进度真的会很慢)

此外,对于小目标(比如远景)、相似度较高和大小不均匀的目标,ReID不见得有多么的好。因为ReID是在特征上算相似性,比如说目标较小,其在检测框中可能只占很小的比例,做完卷积后响应区域可能只有一点点,因此对于不同目标来说区分难度是非常大的。因此ReID对于这类tracking的效果整体上呈现减益效果而非增益效果。换句话来说,可能没有ReID效果可能更好,即单纯的SORT或者最新的ByteTrack效果会更好。博主给出大牛的指点:微弱目标的跟踪更倾向于利用空间位置信息而非表征(特征)信息。再举一个例子:比如要

2023-01-09 15:47:00 831

原创 MMtracking训练自己的ReID分类器和检测器

对于像 DeepSORT、Tracktor 这样的 MOT 算法,算法本身由目标检测器和ReID分类器两部分构成,因此如果需要做自定义数据集的跟踪,就得先训练一个目标检测器和一个ReID分类器,之后再测试 MOT 整体模型。

2023-01-04 14:27:28 922 2

原创 MMTracking-1.0.0rc1多目标跟踪算法之多目标轨迹可视化

关于多目标轨迹可视化的代码在新版本MMTracking上不太适用,一些API和数据结构都不太一样,因此代码改动比较多。下面是博主自己的可视化效果。不过由于没有训练ReID的分类器,

2022-12-30 09:14:40 833 2

原创 MMTracking-1.0.0rc1单目标跟踪算法之单目标或将多目标按单目标预测的轨迹可视化

有关MMTracking轨迹可视化的相关代码,但其代码在被MMengine统一后的MMTracking-1.0.0rc1以上版本不太适用,故作此文。

2022-12-28 18:34:23 836

原创 训练yolo系列+deepsort模式的跟踪器(一):训练deepsort

训练yolo系列+deepsort模式的跟踪器(一):训练deepsort。

2022-12-22 20:46:56 2528

原创 基于MMEngine和MMDet搭建目标跟踪框架MMTracking-1.0.0rc1-Win10

缘由:1.目标跟踪是工业检测和学术研究的基础课题,其pipeline通常分为视频目标检测、视频实力分割、单目标跟踪、多目标跟踪和Re-ID五类,同时,还细分为在线检测和离线检测两种任务模式。由于现阶段关于目标跟踪的教程较少,为了便于快速上手上述work,特出此专栏教程。2. MMEngine使得炼丹师能够更加方便的搭建模型和可视化训练过程,当然也包括环境配置。近期的框架都依据MMEngine所组建。由于环境配置(由其在windows上)过程中会遇到各种各样的坑,因此本文就带大家快速上手MMTrack

2022-12-18 15:16:04 1099 5

原创 TensorRT在Windows下前向推理速度不稳定解决方案

不仅TensorRT框架有这种现象,Libtorch、onnx框架也存在类似的情况。其根本原因是数据从显存到内存的时间不稳定所导致的,即:cudaMemcpyAsync in cudaMemcpyDeviceToHost mode is slow。和问题一一样:是数据从显存到内存的时间不稳定所导致的。有个设置会干扰这运行速度---分页内存。设置无分页内存可以让速度达到最快,而设置虚拟内存会导致速度变慢。在使用C++版本的TensorRT框架做模型推理时,会遇到前向推理速度不稳定的情况。

2022-12-15 12:45:29 1593 2

原创 拿下Transformer

对于每一个x向量,网络又可以通过乘WQ,WK,WV衍生出三个向量Q1,K1,V1向量。对于所有的Xi来说,其乘的WQ,WK,WV都是一模一样的(即权重是共享的)。Self attention所作的内容,总结一下就是一个包含三个参数矩阵WQ,WK,WV的模块,输出为m个Context vector,并且每一个Context vector和原先的x维度是一致的。之所以会用到位置编码,是因为Transformer 没有用到循环神经网络,而循环神经网络是天然的有时间序列在其中的,即有顺序的。

2022-09-13 09:28:48 1512 1

原创 Qt将所有依赖封装到一个.exe中及Enigma Virtual Box无法封装dll等问题

(关于这个网上有很多解决办法,比如由于找不到libgcc_s_dw2-1.dll 、libwinpthread.dll等,其实都是无法解决的,这个方法亲测有效^_^)找到自己所用的编译器,如蓝色箭头的MinGW或红色箭头的MSVC,打开这个终端。随后cd到exe文件的目录,并执行windeployqt命令。使用Enigma virtual box封装所有依赖为一个exe。

2022-09-05 09:31:38 1149

原创 基于TensorRT和C++推理的SOTA图像超分辨率网络

1. 超分一张图像所用的时间取决于tile的size,也就是把一张图片拆分成多大的块来进行推理的,通过tile_size可以控制显存和速度。比如tile_size设为128*128,而原图是256*256,那就是把原图切成4块,每块尺寸为148*148(有一个prepading=10,为每一块进行扩边的操作),然后分4次把148*148的块进行推理,再把这4块得到的结果拼起来组成最后的结果。对于realesrgan-x4模型,将tilesize设置为64,在1660上每个tile大概70ms。2. 转成e

2022-08-29 19:19:34 1680

原创 MMpose代码讲解之关键点Heatmap可视化

需要注意一点因为时top-down思路,所以只会对bbox内的区域可视化,而不是说对整幅图像可视化。为什么会多一个inference_model()方法呢,我们再将代码定位到。

2022-07-17 21:25:53 3360

原创 High-Resolution Network (篇二):MMpose代码讲解之Backbone及关键点Detector部分

的卷积层得到两个不同的尺度分支,即原始下采样4倍的分支以及新增的下采样8倍的分支,其生成代码为self.transition1=self._make_transition_layer([stage1_out_channels],num_channels)。Layer1输出的特征层随后接着通过transition1结构,每一个transition结构都会新增一个尺度分支,transition1在Layer1的输出基础上通过并行两个卷积核大小为。再往下走就是重复上述步骤,卷积层将会越来越多,不再赘述。.....

2022-07-14 22:08:58 2207

原创 高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)

博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...

2022-07-13 13:54:56 4901 16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除