- 博客(141)
- 资源 (2)
- 收藏
- 关注
原创 【yolov8系列】yolov8的目标检测、实例分割、关节点估计的原理解析
对前两者进行解析可得到,有效的gridceil预测出了目标的类别 和 目标的box,此时可以很容易获取该gridceil中的目标的mask_coef,维度为32,刚好与Proto输出的channel维度32相一致。不同mask为网络学习到不同的掩码信息,值得注意的是单张mask并不意味着mask中只有一个目标的mask。2 仅保留该gridceil检测出的box内的mask,然后再对mask框内的mask的每个像素进行阈值过滤(工程中阈值设为0.5),即得到该目标的最终的mask。
2023-10-17 14:51:49 16986 26
原创 【相机与图像】3. ARUCO的相关介绍、相机姿态估计
内部二进制矩阵:Aruco 标记 都有一个固定的内部矩阵,由二进制编码组成,编码了标记的ID和其他可能的信息。通过估计相机的姿态,可以根据相机的位置和朝向来确定虚拟对象的位置和姿态,从而实现虚拟对象与实际场景的融合。每个词典中所有的Aruco标记均包含相同数量的块或位(4x4、5x5、6x6、7x7),且每个词典中Aruco标记的数量固定(50、100、250、1000)。:使用相机捕获图像或视频,并使用相应的算法检测图像中的ArUco标记(如 3.2),解析其编码以获取ID和姿态信息(如 3.3)。
2024-08-12 17:05:48 1163
原创 【相机与图像】2. 相机内外参的标定的代码示例
3D的点的生成:在每张图片上,共存在11*8个角点存在。每张图存在自己的世界坐标系,是以右上角(长边为底边)为3D坐标原点,所以在代码中需要生成一个shape=(11*8,3) 的numpy数组。存放着世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0), (2,0,0) …使用将要标定的摄像头,以不同的角度采集棋盘格,要保证视野内出现完整的棋盘格。图片上的2D角点检测:该工作在opencv提供了对应的api直接调用即可,对应api为。摄像头捕获的用于标定的图片。2 摄像头外参的标定。
2024-08-12 16:50:42 820
原创 【相机与图像】1. 相机模型的介绍:内参、外参、畸变参数
在实际相机中,会将成像平面上倒转的图像处理成与3D目标,直观上是一致的。相机坐标系下的点 除以最后一个维度(即该点距离相机成像平面的深度),即对最后一维度进行归一化处理,得到点P在相机的归一化平面上的归一化坐标。图像坐标系的原点位于感光芯片的中心(感光芯片是位于镜头背后的用于成像的小板子),x、y轴方向和相机坐标系的x、y轴相同。外参矩阵描述的是,世界坐标系下的坐标转换为相机坐标系下的坐标的过程。为了公式更好的转换和表达,引入了齐次坐标(在原有的坐标维度额外补充1维,数值为1),在这里像素的齐次坐标为。
2024-07-24 17:08:09 2600 2
原创 【yolov8系列】ubuntu上环境搭建、yolov8的开启训练的极简操作
yolov8的广泛使用,拉取yolov8源码工程,然后配置环境后直接运行,初步验证自己数据的检测效果,在数据集准备OK的情况下 需要信手拈来,以保证开发过程的高效进行。提高显卡驱动版本或降低pytorch版本即可。这里方便起见,降低pytorch版本与显卡驱动匹配即可。顺便也记录下ubuntu下的一些简单的常用的操作。
2024-06-28 12:05:18 855
原创 【环境配置】ubuntu中 Docker的安装
Docker Hub是一个云端服务,主要用来储存 公有和私有源中的 Docker 镜像。想要以非 root 用户执行 Docker 命令,需要将用户添加到 Docker 用户组,该用户组在 Docker_ce 软件包安装过程中被创建。第一次云运行时本地没有该镜像,这个命令将会下载测试镜像,在容器中运行它,打印出 “Hello from Docker”,并且退出。拉取 hub.docker.com 的镜像,会发现速度很慢,是因为有墙。在卸载 Docker 之前,最好移除所有的容器,镜像,卷和网络。
2024-06-28 08:49:29 19559 9
原创 【环境配置】windows的磁盘分区、VMware下的ubuntu20的安装、虚拟机系统界面过小的处理
VMware是运行在windows系统上的虚拟机软件,可以虚拟出一台计算机硬件,方便安装各类操作系统,如Windows、linux、unix等。桌面会生成对应的快捷键,双击打开,会让输入秘钥。这段时间在折腾自己的笔记本,刚好有同学新买台式机,就顺便记录下windows的环境的一些操作。在打开Ubuntu环境的情况下,点击【虚拟机】,会看到 VMware Tool一项,这个是需要进行安装。关闭ubuntu,进入虚拟机的配置地方,修改使用IOS的映像文件。下载所需软件,需要登录账号登操作,完成安装包的下载。
2024-05-29 19:15:03 1176
原创 【深度学习基础知识】IOU、GIOU、DIOU、CIOU
通俗意思是在IOU值和中心点距离值相同时,两个框的长宽比指标越相似,说明预测框与目标框的对比效果越好。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。对于GIOU的缺点,即目标框包裹预测框的这种情况,DIOU Loss可以使回归非常快,而GIOU Loss几乎退化为IOU Loss。如图9所示,当IOU值和两个框的中心点距离一样时,即检测框中心点在以目标框中心点为圆心半径相同的圆弧上时,DIOU没办法区分。直观的反映预测检测框与真实检测框的检测效果。
2024-03-18 09:54:14 1300
原创 【论文阅读】Segment Anything论文梳理
Abstract我们介绍了Segment Anything(SA)项目:新的图像分割任务、模型和数据集。高效的数据循环采集,使我们建立了迄今为止最大的分割数据集,在1100万张图像中,共超过10亿个掩码。该模型被设计和训练为可提示的的 (promptable),因此它可以将零样本(zero-shot) 迁移到新的图像分布和任务。我们评估了其在许多任务上的能力,发现其零样本迁移性能十分优秀,与之前的完全监督方法的结果相比,具有竞争力甚至优于这些结果。链接:https://segment-anythin
2024-03-05 11:57:40 2026 1
原创 【论文阅读】【yolo系列】YOLO-Pose的论文阅读
我们介绍YOLO-pose,一种无热图联合检测的新方法,基于流行的YOLO目标检测框架的图像二维多人姿态估计。
2024-02-20 14:26:12 3626 5
原创 【Transformer】Transformer的简单了解:Positional Encoding、Self-attention、Batch 与 Layer Norm 等
自从2017年Transformer模型被提出以来,它已经从论文最初的机器翻译领域,转向语音,图像,视频等等方面的应用。最近的Segment Anything论文提出,阅读论文其中大量的transformer的在图像方面的应用。所以这里还是加紧记录下transformer相关内容。transformer初了解Positional Encoding(位置编码)Self-attention(自注意力机制)Batch & Layer Norm(批量归一化/层标准化)transformer的结
2024-01-08 10:26:11 1500
原创 【yolov8系列】 yolov8 目标检测的模型剪枝
有框架完成的对网络所有结构都自适应剪枝是最佳的,但这里没有详细记录torch-pruning的yolov8的剪枝,是因为存在不解 对其yolov8具体的剪枝代码中操作:“比较疑惑 replace_c2f_with_c2f_v2(model.model)的梯度置为Fasle,是因为该层是解析box时的一个向量,具体的为 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],为了便捷的将该处理保存在模型中,所以就定义了一个卷积,所以该卷积不需要梯度、不需要反向传播,所以该层的。
2023-12-20 14:08:45 8479 52
原创 【剪枝】torch-pruning的基本使用
假设正在对一个卷积结构化剪枝,需要减去哪些内容,具体第几个卷积核、对应的偏置、BN中对应的维度、与其直接或间接相连的层的核的channel。在结构化剪枝中,这两个卷基层之间存在非常直观的依赖关系,即当我们调整第一层的输出通道时,第二个卷积层的输入通道也需要相应的进行调整,这使得蓝色高亮的参数需要同时被剪枝。怎么去看这个group呢,在下图右侧进行了简单的标注,可以发现conv1的group都会进行剪枝,从而适应conv1的卷积核的维度发生的变化。结构化和非结构化剪枝方向,已发表的有较多的论文。
2023-11-22 11:25:28 5993 2
原创 【量化】量化原理浅析
前言模型在端侧运行时,会追求模型保持原有精度的同时,让模型的运行速度更快。基本方向为模型压缩和加速,着力于减少网络参数量、降低计算复杂度。可通过以下方式实现:针对网络结构本身进行改进,常用的3x3的卷积的叠加代替大卷积;average-pooling 代替 full-connection layers;MobileNets中使用的 depth-wise convolution 代替传统的卷积方式;等。剪枝:除去神经网络结构中不重要的部分量化:调整网络结构中的权重和激活值的表达精度。
2023-09-27 14:24:40 4215 2
原创 【yolov8系列】将yolov8-seg 模型部署到瑞芯微RK3566上
前言之前记录过,整体比较流畅,记录了onnx转rknn的相关环境配置,使用的rk版本为rknn-toolkit2-v1.4.0。当前库已经更新为1.5,这里还是沿用1.4的版本进行记录。本篇博客是在上篇博客(yolov5的rk3566的部署)的基础上,记录下yolov8n-seg的模型在3566上的部署过程。若精度异常可查看官方提供文档,写的比较详细。这里说明下自己遇到的问题:yolov8模型模型进行全量化结果异常yolov8模型在PC端模拟器的运行结果时,板端运行结果异常。
2023-07-27 16:54:33 5384 26
原创 【论文阅读】Generalized Focal Loss的解读。交叉熵、Focal Loss、Quality Focal Loss、Distribution Focal Loss
最后,我们将QFL和DFL的公式总结为一个统一的视角,称为 Generalized Focal Loss(GFL),作为FL的一个灵活的扩展,以促进未来进一步的推广和普遍的理解。专注于一组稀疏的困难样本的同时,对相应的类别进行连续的0∼1质量估计。举例子:5分类的任务,第1类别的分类标签onehot应为 [0,1,0,0,0],当前训练时检测框和对应标签框的iou为0.65,则此时分类的标签不再使用 [0,1,0,0,0],而是使用分类-iou联合表示:[0,0.65,0,0,0]。
2023-07-17 16:12:53 3478 1
原创 【论文阅读】【yolo系列】YOLACT Real-time Instance Segmentation
事实上,我们在COCO上的基本模型在测试集上的mask和box的mAP(29.8mask,32.3box)之间只有2.5 mAP的差异,这意味着即使使用完美的掩码,我们的基本模型也只能获得少数mAP点。此外,Mask R-CNN具有相同的mAP差异(35.7mask,38.2 box),这表明两种方法之间的差距在于我们的检测器的性能相对较差,而不是我们生成掩码的方法。因为预测系数是困难的。例如,在图7中,YOLACT 产生了一个干净的手臂边界的掩码,而FCIS和Mask R-CNN都有更多的噪声。
2023-06-28 16:25:10 2458
原创 【yolov5系列】将yolov5s模型部署到SigmaStar的9383芯片上
在文件【IPU_SDK_Release/Sigmastar_SDK_vS3.0.2/SGS_IPU_SDK_vS3.0.2/doc/SDK_Doc_Release/index.html】中说明了sigmastar模型转换的环境的安装、已经相关转换流程和注意事项等。在第四个阶段,针对自己以上的设置,重新写了推理后的后处理(使用的rknn的后处理,也是为了两者的结果的对比)一般的,这个脚本里面注意两点:图片的尺寸问题、均值方差的通道(这里的是BGR,input_config.ini 中的是RGB)
2023-06-26 08:31:32 3166 19
原创 【yolov5系列】将模型部署到瑞芯微RK3566上面
量化的图片的shape和网络输入如果不一致,这里会自动resize,所以为了保证精度,我们的量化数据集的shape尽量与输入一致。我们需要注意下,对于RK1126相似系列的代码中模型转换时,模型build时,有个预编译参数,仿真时和端侧运行时的设置是不一致且不通用的。这里的buf的设置时,一定保证图片的大小和网络的输入是相同的尺寸。当然在其它芯片上的操作类似,差别会在具体的API的调用上。上图分别获取的内容:rk的版本信息、模型的输入输出数量的信息、输入节点相关的信息、输出节点相关的信息。
2023-06-19 18:38:19 6531 4
原创 【论文阅读--轻量化模型】MobileNetsV1: Efficient Convolutional Neural Networks for Mobile Vision Applications
图4显示了由宽度乘数α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉积制成的16个模型的ImageNet精度和计算之间的权衡。总的趋势是制作更深更复杂的网络,以实现更高的精度。这是一种分解卷积的形式,将标准卷积分解为【深度卷积】和【逐点卷积的1×1卷积】,这种因子分解具有显著减少计算和模型大小的效果。图5显示了由宽度乘数α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉积制成的16个模型的ImageNet精度和参数数量之间的权衡。
2023-06-08 17:12:12 497 1
原创 【yolov5系列】yolov5的原理与核心代码解析
然后对左图是对右图的pool进行了合并连接。上面代码处理后,标签和匹配的anchor是的尺寸是【原图尺寸下的标签尺寸下采样到某一个输出层时的尺寸】(这里的原图尺寸 指的是图片像素级resize到神经网络输入时的尺寸,代码中备注的也是)。原因是为了正样本扩充,因为标签在扩充后的正样本的xy的数值范围在(-0.5,1.5)之间,所以需要转换后的偏移。】 为检测框对应的xywh,具体的为:xy检测框的中心下采样到某层输出上,距离grid ceil 左上角的偏移,wh为检测框的长宽与当前anchor的长宽的比值。
2023-06-05 15:15:20 15137
原创 【pytorch系列】优化器optimizer的使用与常用优化器
【params_groups】该实例的类型为 list,可以将神经网络中需要更新的参数分组管理,list中每个元素为一组数据,包括:优化器中需要更新的参数,以及default中超参数在当前的对应数据。在第一次运行保存结果时的 optimizer,和第二次运行加载模型后的optimizer,可查看两次的优化器当中的 state_dict()的内容,这里不截图展示。打印两者的id,可以看到是完全一致的,说明optimize.param_groups中的参数存的是网络中参数的引用,这样操作也是为了节省内存。
2023-04-20 18:20:34 3095 2
原创 【pytorch记录】SummaryWriter保存日志
在pytorch框架中,关于日志的保存,其中一种方式就是借鉴使用了tensorboard的库。所以我们需要在环境中安装tensorboard库,然后再在工程中进行该库的调用1 安装与导入或者导入2 添加需要保存标量数据从源码中我们能看到核心的三个参数为前三个。通俗的讲分别代表tag:图的标签名,唯一标识scalar_value:y轴数据,标量数据的具体数值global_step:x轴数据,要记录的全局步长值多项标题记录方法,其中:main_tag —— 该图的标签。
2023-03-20 14:35:26 1177 1
原创 【论文阅读--实时语义分割】PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller
双分支网络结构已显示出其对实时语义分割任务的效率性和有效性。然而,低级细节和高级语义的直接融合将导致细节特征容易被周围上下文信息淹没,即本文中的超调 (overshoot),这限制了现有两个分支模型的准确性的提高。在本文中,我们在卷积神经网络(CNN)和比例积分微分(PID)控制器之间架起了桥梁,并揭示了双分支网络只是一个比例积分(PI)控制器,当然也会存在类似的超调问题。,它具有三个分支来分别解析细节、上下文和边界信息(语义的派生),并在最后阶段使用来指导细节和上下文分支的融合。
2023-03-06 20:38:58 4004 6
原创 【yolov5系列】yolov5-onnxruntime在Ubuntu和RK芯片上运行
这里yolov5的onnx模型的推理,分别在 x64上 和 移动端上运行,前者在自己本地Ubuntu系统上运行,后者在瑞芯微的rk3566上运行。
2023-01-31 17:14:21 1786 2
原创 【论文阅读】【yolo系列】YOLOV7的论文阅读
YOLOv7在速度和精度方面都超过了所有已知的目标检测器,在GPU V100上的速度为5 FPS到160 FPS的范围内,并且在所有已知的实时对象检测器中具有最高的,速度为30 FPS或更高。目标检测器(56 FPS V100,55.9%AP)在速度和精度上优于:–>基于transformer的检测器SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9%AP),分别为509%和2%,
2022-09-04 10:47:36 3256 4
原创 【pytorch记录】自动混合精度训练 torch.cuda.amp
Nvidia 在Volta 架构中引入 Tensor Core 单元,来支持 FP32 和 FP16 混合精度计算。同年提出了一个pytorch 扩展apex,来支持模型参数自动混合精度训练自动混合精度(Automatic Mixed Precision, AMP)训练,是在训练一个数值精度为32的模型时,一部分算子的操作 数值精度为FP16,其余算子的操作精度为FP32。具体的哪些算子使用的精度,amp自动设置好了,不需要用户额外设置。..............................
2022-06-28 09:24:20 5763 1
原创 【pytorch记录】模型的分布式训练DataParallel、DistributedDataParallel
使用多GPU对神经网络进行训练时,pytorch有相应的api将模型放到多GPU上运行。torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank])两者的区别:nn.DataParallel使用单进程控制,将模型和数据加载到多个GPU中gpus=[0,1]torch.nn.DataParallel(model.cuda(), decice_ids=gpus, output_device=gpu
2022-06-27 20:01:36 1957 4
原创 【pytorch 记录】pytorch的变量parameter_buffer、self.register_buffer()、self.register_parameter()
在pytorch中模型需要保存下来的参数包括:parameter:反向传播需要被 optimizer 更新的,可以被训练。buffer:反向传播不需要被 optimizer 更新,不可被训练。 这两种参数都会分别保存到 一个OrderDict 的变量中,最终由 model.state_module() 返回进行保存。1 nn.Module的介绍需要先说明下:直接torch.randn(1, 2) 这种定义的变量,没有绑定在pytorch的网络中,训练结束后也就没有在保存在模型中。当我们.
2022-05-25 17:27:41 2247 2
原创 【论文阅读】OHEM:Training Region-based Object Detectors with Online Hard Example Mining
方法的由来 还是要看论文了解下的 https://arxiv.org/pdf/1604.03540.pdf1 数据不均衡图像分类和目标检测是计算机视觉的两个基本任务。目标检测器通常通过将目标检测转化为图像分类问题的简化来训练。这种减少带来了自然图像分类任务中没有的新挑战:训练集的特点是标注对象的数量与背景示例(不属于任何感兴趣的对象类别的图像区域)的数量之间存在很大的不平衡。在滑动窗口对象检测器的情况下,这种不平衡可能极端到每一个对象的100000个背景示例。最近的基于对象建议的探测器趋势[.
2022-04-07 13:32:38 2452
原创 【工程测试与训练】使用 DDRNet 测试、训练cityscapes数据集、训练自己的数据集
工程下载使用电脑环境 :Ubuntu18+anconde环境配置:略作者提供的测试工程:https://github.com/ydhongHIT/DDRNet其他开发者复现的完整工程:https://github.com/chenjun2hao/DDRNet.pytorch 下载第二个工程,并下载第一个工程中的预训练模型,放置路径【pretrained_models】 为了工程好管理,所以文件布局如下。(本人习惯工程和数据集分开放置,多个工程获取数据更规范)└──DataSet_2D.
2022-04-02 14:16:01 7062 47
原创 【labelCloud标注软件的使用】
1 labelCloud 的安装工作环境:ubuntu18 + anconda 安装命令:安装不同的工程python相关库,建议创建不同的虚拟环境,然后进行安装(当然直接安装在base环境下,也可正常运行)。因为都是标注软件,我这里将 labelCloud 和 labelme 安装到同一个虚拟环境中,该虚拟环境就命名了labelme。(清华镜像、直接 pip install **,哪个快用哪个)安装命令conda create -n labelme python=3.7conda act.
2022-03-29 13:45:08 6382 11
原创 【炼丹随记】样本不均衡时,class_weight 的计算
语义分割时,如果样本比例失衡,就需要设置 class_weight来平衡损失,那么该如何计算呢?直观的想到是,先获取图片的每个类别的像素点的个数之间的比例,然后用1去除以。比如:class1 : class2 : class3 = 100 : 10 : 1,那么 weight1 : weight2 : weight3 = 1:10:100。但这个比值偏差太大,放到loss中训练并不能得到一个好的结果。某一次在【https://github.com/openseg-group/OCNet.p.
2022-03-09 15:13:27 6422 4
原创 【pytorch记录】torch.utils.data.Dataset、DataLoader、分布式读取并数据
pytorch提供了一个数据读取的方法,使用了 torch.utils.data.Dataset 和 torch.utils.data.DataLoader。要自定义自己数据的方法,就要继承 torch.utils.data.Dataset,实现了数据读取以及数据处理方式,并得到相应的数据处理结果。然后将 Dataset封装到 DataLoader中,可以实现了单/多进程迭代输出数据。1 torch.utils.data.Dataset要自定义自己的 Dataset 类,需要重载两个方式,【_.
2022-03-07 11:15:28 7969
原创 【pytorch记录】pytorch的分布式 torch.distributed.launch 命令在做什么呢
在查阅pytorch分布式训练,在不了解相关内容时,直接查看api的使用,更云里雾里。反而对着一个完整的例子,会更上手一些。所以在这里整理下,能够快速读懂分布式训练具体实现的流程。1 背景知识神经网络的训练,从硬件的使用,可分为3种情况:多机多卡、单机多卡、单机单卡。(机–主机、卡–显卡)在pytorch进行分布式训练中,会有相应的变量名表示上面的情况:测试脚本:train.pyimport torchimport torch.distributed as distimport osim
2022-03-03 20:13:29 46222 15
原创 【论文阅读--实时语义分割】RegSeg:Rethink Dilated Convolution for Real-time Semantic Segmentation
Abstract语义分割的最新进展通常采用ImageNet预训练主干网,在其后面有一个特殊的上下文模块,以快速增加视野。尽管取得了成功,但大部分计算所在的主干网没有足够大的视野来做出最佳决策。最近的一些进展通过快速降低主干中的分辨率来解决这个问题,同时还具有一个或多个具有更高分辨率的并行分支。我们采用了一种不同的方法,设计了一种受ResNeXt启发的块结构,该结构使用两个具有不同膨胀率的平行3×3卷积层来增加视野,同时保留局部细节。通过在主干中重复这种块结构,我们不需要在其后面附加任何特殊的上下文模块。此
2022-03-03 15:10:33 4665 5
原创 【论文阅读--实时语义分割】DDRNet:Deep Dual-resolution Networks for Real-time and Accurate Semantic Segmentation
用于道路场景实时准确语义分割的深度双分辨率网络摘要语义分割是自动驾驶汽车理解周围场景的关键技术。现代模型的吸引力表现通常是以繁重的计算和漫长的推理时间为代价的,这对于自动驾驶来说是无法忍受的。使用轻量级架构(编码器-解码器或双通道)或对低分辨率图像进行推理,最近的方法实现了非常快速的场景解析,甚至在单个1080Ti GPU上以超过100fps的速度运行。然而,这些实时方法与基于dilation backbones的模型在性能上仍有很大差距。为了解决这个问题,我们提出了一系列专门为实时语义分割设计的高效主
2022-03-03 15:04:10 7604
opencv4.4.0编译时下载文件_face_landmark_model.dat_IPPICV等.zip
2021-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人