@BangBang
这个作者很懒,什么都没留下…
展开
-
打印参数信息
【代码】打印参数信息。原创 2024-09-06 15:00:29 · 48 阅读 · 0 评论 -
语义分割(5): 保存验证结果信息
else:训练开始时,实例化EvalCallback对象,传入模型,以及输入shape,以及验证集所有图片val_lines, 以及验证指标信息存放的路径log_dir等通过实例化EvalCallback类,在每个Epoch验证结束时,调用计算每个Epoch下的mIoU指标,并将结果保存到txt文件中,同时绘制出每个Epoch下的mIoU指标变化,方便观察模型训练效果。原创 2024-02-20 23:18:07 · 437 阅读 · 0 评论 -
语义分割(3):损失函数解析
容易学习的样本模型可以很轻松地将其预测正确,模型只要将大量容易学习的样本分类正确,loss就可以减小很多,从而导致模型不怎么顾及难学习的样本,交叉熵损失函数忽略了预测值和目标值之间的相似性,并且对于极端的像素值不够敏感。,这种损失会逐个检查每个像素,将对每个像素类别的预测结果(概率分布向量)与我们的。,对于语义分割更多的是前景区域的样本远小于背景区域。其中(1),(2)实现的是log_softmax计算,(3)实现的是。, 经过以上3步计算,得到最终的交叉熵损失的计算结果。损失函数是像素级别的。原创 2024-01-27 15:57:19 · 1349 阅读 · 0 评论 -
语义分割(2) :自定义Dataset和Dataloader
自定义Dataset需要继承Dataset需要实现__len__和方法,其中__len__返回样本的总数量,方法,根据传入的index,返回对应的图片和标签图片mask主要对图片和标签进行数据增强Dataset的完整代码实现如下:import cv2# 从文件中读取图像# 数据增强# 转化成one_hot的形式# 在这里需要+1是因为voc数据集有些标签具有白边部分# 我们需要将白边部分进行忽略,+1的目的是方便忽略。# 获得图像的高宽与目标高宽# 对图像进行缩放并且进行长和宽的扭曲。原创 2024-01-26 22:40:19 · 1123 阅读 · 0 评论 -
语义分割(1): 前后处理代码详解
所以预测结果部分,四周的padding部分就需要截取掉, 上下左右padding的大小为: padding 大小 =获得每个像素的类别预测概率最大的索引,也就是获得对应类别的索引。,计算得到每个像素的颜色值array, 大小为。遍历所有类别,为各个类别位置,赋予对应的像素值。: 模型输入指定的图片大小, 其中通过。,经过letterbox后获得指定。, 得到分割后的3通道的图片。对原始备份,用于可视化绘图。, reshape为。原创 2024-01-19 15:31:56 · 1235 阅读 · 0 评论 -
F-score 和 Dice Loss 原理及代码
通过看开源图像语义分割库的源码,发现它对Dice Loss的实现方式,是直接调用F-score函数,换言之,Dice Loss是F-score的特殊情况。原创 2024-01-13 23:41:33 · 1151 阅读 · 0 评论 -
语义分割(4): miou指标计算详解
两方面的因素,做到了对于两者的调和,即:既要“求精”也要“求全”,做到不偏科。可作为语义分割系统性能的评价指标。a和b中每个元素代表。由于是多类别,没有负样本,因此。): 把正样本成功预测为正。):把负样本错误地预测为正。):把正样本错误的预测为负。):把负样本成功预测为负。,也就是正确预测的像素个数。为0 ,即没有所谓的负样本。精确率或者精度,指的是。原创 2024-01-13 22:22:31 · 2386 阅读 · 0 评论 -
图像分割模型及架构选型介绍(MMSegmentation|sssegmentation等)
图像分割通过给出图像中每个像素点的标签,将图像分割成若干带类别标签的区块,可以看作对每个像素进行分类。图像分割是图像处理的重要组成部分,也是难点之一。随着人工智能的发展,图像分割技术已经在交通控制、医疗影像和人脸识别等多个领域获得了广泛的应用。图像分割是预测图像中每一个像素所属的类别或者物体。语义分割(semantic segmentation):可以理解为一个分类任务,对图片上每个像素进行分类。经典网络:FCN实例分割。原创 2023-11-26 18:22:36 · 1646 阅读 · 0 评论 -
将语义分割的标注mask转为目标检测的bbox
函数到bbox的左上和右下坐标。语义分割的标签是利用。信息,主要包括: (原创 2023-10-20 15:43:37 · 1202 阅读 · 1 评论 -
语义分割mask转json
参考自: https://blog.csdn.net/The_Lonely_Wind/article/details/1293854072. mask 转 json通过提取灰度图每个类别的像素值得到轮廓信息并转化为json原创 2023-05-19 17:21:02 · 2561 阅读 · 0 评论 -
语义分割:标注json文件转mask
该方法,在标注自己的数据集时,labelme版本需安装。原创 2023-02-22 14:50:16 · 3817 阅读 · 1 评论 -
Mask-RCNN(3) : 自定义数据集读取(VOC &COCO)以及pycocotools的使用
按照3个一组进行划分,前2个值代表关键点的x,y坐标,第3个值代表该关键点的可见度,它只会取。0表示该点一般是在图像外无法标注,1表示虽然该点不可见但大概能猜测出位置(比如人侧着站时虽然有一只耳朵被挡住了,但大概也能猜出位置),2表示该点可见。它的boundingbox信息,可以知道它对应的是分割图片上的红色目标,红色目标它的像素值都是1,刚好。同理第二个目标小飞机,对应分割区域的像素值都是为2的,同理目标3,目标4也是这样。,以上图的标注文件为例,总共标注了4个目标(目标1,目标2,目标3,目标4)。原创 2023-02-14 15:24:06 · 1463 阅读 · 3 评论 -
Mask-RCNN(2) : 代码使用
当一个batch的长宽比率相差比较大的时候,我们真正输入网络的图片其实是很大的。,如果在验证的时候单张输入图片的话,那么我们输入网络的图片大小其实是和当前图片大小是一样的,此时我们对图片不需要太多处理。每隔10个epoch进行验证, 不过这样就没法获得保存每个epoch的验证结果,这样就没法根据每个epoch它的验证结果去绘制对应的曲线了。所以按照长宽比率进行排序之后,我们对它分组,然后再组内进行采样,这样我们输入网络的图片打包成batch它的大小会更小些,从而对。的,在目标检测中是没有使用到的。原创 2023-02-12 17:00:47 · 1592 阅读 · 1 评论 -
DeepLabV3使用及源码讲解
博文介绍的DeepLabV3 代码主要来自于pytorch官方torchvision模块中的。原创 2023-02-06 17:54:49 · 5896 阅读 · 0 评论 -
语义分割基础讲解
(比如像素0对应的是(0,0,0)黑色,像素1对应的是(127,0,0)深红色,像素255对应的是(224,224,129))。Labelme是一款非常老的标注工具,使用起来非常简单,就是靠你人工一个个点去标,将我们的目标慢慢的框出来。这个标注工具,基于百度提供的预训练模型,这些模型在一些非常大的数据集上进行训练,它已经包含了我们日常生活中大部分常见的一些目标,使用起来非常简单。针对分割任务的标注工具有很多,网上搜一搜一大把,你一个个去试,总有一款是你喜欢的。语义分割,实例分割,全景分割这三个分割任务的。原创 2023-02-04 16:53:50 · 3681 阅读 · 1 评论 -
深度学习知识点总结
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)(参考百度)。在HSV模型中,颜色是由色度(Hue),饱和度明度(Value)共同组成。色度(Hue)使用角度度量的,范围是从0 ° 到360 ° (逆时针旋转),比如0 ° / 360 ° 代表红色,120 ° 代表原谅色,240 ° 代表蓝色饱和度(Saturation)表示颜色接近光谱色的程度。原创 2023-01-31 10:15:08 · 347 阅读 · 0 评论 -
图像分割FCN(2):代码的使用讲解
因为如果自己的数据集有问题,一上来训练就会出现各种错误。排错的时候,基本发现都是自己数据的问题。所以建议先用PASCAL VOC训练,训练没问题之后,你再去训练自己的数据集。最终根据设置train是否为True选择对应的Train阶段的预处理还是推理阶段的预处理方法。其中train.txt和val.txt记录的是train和val过程中使用的图片名称。,会从一个非常小的学习率慢慢的增加到我们指定的初始学习率,然后再慢慢地下降。对于验证过程,其实和Train阶段的预处理,其实是差不多的。原创 2023-01-30 15:14:47 · 796 阅读 · 0 评论 -
机器视觉2D/3D标注工具汇总
标注工具是处理原始数据的第一关,无论是检测任务、分割任务还是3D感知、点云等,都需要制作真值来监督网络学习。企业级的标注方案一般通过内部的自研工具或专业标注团队完成,而对于个人或小的团队来说,一款开源好用的标注工具则至关重要。原创 2022-12-30 16:30:43 · 789 阅读 · 2 评论 -
传统卷积与Transformers 优缺点对比
近两年Transformer如日中天,刷爆各大CV榜单,但在计算机视觉中,传统卷积就已经彻底输给Transformer了吗?原创 2022-12-30 15:52:23 · 5957 阅读 · 0 评论 -
Labelme分割标注的使用(非常好)
博客转自于: Labelme分割标注软件使用这里建议大家按照我提供的目录格式事先准备好数据,然后在该根目录下启动labelme(启动目录位子,因为标注json文件中存储的图片路径都是以该目录作为相对路径的)1.1 创建label标签文件虽然在labelme中能够在标注时添加标签,但我个人强烈建议事先创建一个label.txt标签(放在上述位置中),然后启动labelme时直接读取。标签格式如下:每一行代表一个类型的名称,前两行是固定格式__ignore__和_background_都加上,否则后续使用原创 2022-12-30 14:58:55 · 5442 阅读 · 1 评论 -
U2Net 网络结构详解
U2Net(U Square Net)是阿尔伯塔大学(University of Alberta)在2020年发表在CVPR上的一篇文章。该文章中提出的U2Net是针对即显著性目标检测任务提出的。而显著性目标检测任务与语义分割任务非常相似,只不过显著性目标检测任务是二分类任务,它的任务是将图片中最吸引人的目标或区域分割出来,故只有前景和背景两类。上图是论文中给出的图7,可以看下U2Net的效果。第一列是输入的原图,第二列是人工标注的GT Box,第三列是U2Net标准版的检测结果,第四列是轻量级。原创 2022-09-15 16:26:47 · 917 阅读 · 0 评论 -
yolov5 DeepSort跟踪(3):匈牙利算法讲解
匈牙利算法(),该算法使用来解决分配问题或者指派问题,比如我们在工作中,给设备分配任务或者给工人分配工作等。我们希望可以通过最优化的方式,使得最小化总的成本代价(total cost)图中左边是works,右边是jobs,我们希望对works分配jobs,这就是二分图匹配。使得总的成本最小。分配的可能性非常多,如果是暴利求解的话,计算代价会非常大。匈牙利算法:是一种在多项式时间内求解任务分配问题的组合优化算法,最初是由一名匈牙利数学家提出来的,所以称为匈牙利算法。原创 2022-08-21 20:21:49 · 1231 阅读 · 0 评论 -
yolov5 DeepSort跟踪(2): 马氏距离原理介绍
马氏距离())是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题。原创 2022-08-21 17:59:40 · 811 阅读 · 0 评论 -
Mask RCNN(1): 网络详解
论文于2017年发表在ICCV上,获得了2017年ICCV的最佳论文奖。我们可以看到论文的一作是ResNet的何凯明,还有提出Faster RCNN系列的.原创 2022-08-10 21:54:14 · 2885 阅读 · 1 评论 -
图像分割UNet (3) : 自定义数据集读取
图像分割UNet : 自定义数据集读取原创 2022-06-16 17:01:33 · 962 阅读 · 1 评论 -
图像分割UNet (2) : 使用Pytorch搭建UNet网络
本文介绍如何使用pytorch搭建UNet网络结构进行医学视网膜血管影像分割原创 2022-06-14 14:39:17 · 4480 阅读 · 3 评论 -
图像分割UNet (1) : 网络结构讲解
UNet 论文:Convolutional Networks for Biomedical Image Segmentation这篇论文主要是针对生物医学影像这个领域提出的,所以一提到UNet一般都会联想到医学影像。UNet它是一个encoder - decoder的结构,那么encoder对应就是这个u型网络左边这半部分,也就是我们特征提取及下采样这部分。decoder解码就是右边部分通过一系列上采样,我们得到最终的一个分割图。.........原创 2022-06-12 17:47:59 · 6094 阅读 · 0 评论