CV
计算机视觉,有图像分割,分类等内容
不太冷的杀手
这个作者很懒,什么都没留下…
展开
-
图像分割中数据集处理resize的大坑!!!
最近在做语义分割,处理完数据集后训练时总是报“label out of bound”,当把Mean_IOU这个指标去掉之后能正常训练但是训练损失一直为nan,在经过一系列的检查后确定自己的代码没有问题,把目光聚焦到数据集上,终于在经过一天的搜索后,偶然看到一篇博客有类似的问题,作者指出关注一下数据集resize的时候使用的插值方式。我在处理数据集的时候只用了pillow这个处理库(这里多提一句,我们在处理图像的时候尽可能的从头至尾采用一种图像处理模块,要么全部OpenCv,要么就是Pillow或者matpl原创 2021-06-07 14:00:21 · 4556 阅读 · 15 评论 -
深度学习随机划分数据集
CVer肯定都遇到过要划分数据集的问题,我在这里自己写了一个,只要你有一个所有图片的文件夹,然后将路径替换成自己的即可:# 将数据集随机划分为训练集和验证集,测试集import osimport randomimport shutilfrom tqdm import tqdmimage_path = r'E:\DCI(first)_3\DCI_Crop2\image\\' # 源图片文件夹路径mask_path = r'E:\DCI(first)_3\DCI_Crop2\mask\\原创 2021-12-18 13:29:05 · 3418 阅读 · 19 评论 -
语义分割之膨胀预测
在做语义分割实验的时候,因为我做的课题的数据集是私有医疗数据集,数据集的图片有很多公有数据集不具备的问题,一个是分辨率很高,最高的接近两万八千多两万多;另一个问题是图片的尺寸不一,小一点的图可能短边只有1440.因此这样的原图在预测阶段比较麻烦,在我总结一番之前的工作后,我在这里写了一个处理多尺寸高分辨率数据集的预测脚本,因为其中主要的思想是冗余切割,因此称之为膨胀预测。具体想法如下:**需要先将原图像按patchsize进行切割分成多个patchsize大小的小块图,再进行推理预测。然后将推理得到的结原创 2021-12-18 11:42:53 · 2992 阅读 · 12 评论 -
灰度图利用matplot显示为彩色索引图像的映射是不一定的
标题说的有点模糊,意思是将灰度图显示为彩色索引图图像,可能几张图灰度图里同样的像素值会别映射成不同的颜色,具体的映射规则不太清楚。原创 2021-11-04 15:18:50 · 561 阅读 · 0 评论 -
灰度图显示为伪彩色图并保存
在做语义分割的时候,最后在模型预测的时候得到的预测图是灰度图,且像素值是0到6(数据集的分割标签就是0到6),所以直接显示就是一张类似于全黑的图片,为了将不同的分割区域区分明显,可以将0到6的像素值分散到0到255之间,得到下面的图片:但是这样的效果还是不太明显,所以将其变成彩图可能是一个更好的选择,使用matplotlib可以直接将灰度图显示为彩色索引图像,如下:就是plt.imshow()函数下面介绍两种将伪彩色预测图保存到本地的方法:第一种:matplotl..原创 2021-06-16 16:31:09 · 1974 阅读 · 0 评论 -
语义分割标签npy文件保存为图片的几种方式详细讨论
拿到一个分割数据集,总共7类,里面的图片都是.npy格式,为了查看分割标签的情况,现在要将npy文件转为图片格式。首先这个数据集的标签图的像素值是0~6,单通道灰度图,所以标签如果显示成图片的话应该是类似于全黑(因为像素值太过于接近于0,人眼分不清),但是以上是我自己思考未做实验的结果,当我实际动手时发现不同的保存方式得到的结果不一。现记录如下:使用OpenCV保存:import cv2 as cvimport numpy as npdata=np.load("*****.npy")cv...原创 2021-05-23 13:20:46 · 2139 阅读 · 1 评论 -
语义分割标签彩图是索引图像
在做分割实验的时候很困惑:为什么分割图是彩色的而不是灰色的,因为不是一个像素值就可以代表一种标签代表吗,比如一张图里有六种标签,那么我在分割标签图里用0~5的像素值去表示不就行了吗?为此,我将一张mask图的内容打印如下:可以看到这张mask里面确实只有比较小的整数像素值,而且它的shape是(1150,1150),即这是一张单通道图,那么为什么把它显示出来又是有色彩的?如下图:原来这种mask是索引图像。索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MA原创 2021-04-09 19:30:59 · 957 阅读 · 2 评论 -
训练集、验证集、测试集的划分依据
训练集、验证集、测试集作用训练集用来调试神经网络 验证集用来查看训练效果 测试集用来测试网络的实际学习能力训练集毋庸置疑,是用于模型拟合的数据样本,用来调试网络中的参数。我们容易混淆的是验证集和测试集:验证集没有参与网络参数更新的工作,按理说也能用来测试网络的实际学习能力;测试集本来也能就是用来测试效果的,按理来说也能查看训练效果。我们换个说法或者详细一些可能就会明白了:验证集(validation set): 查看模型训练的效果是否朝着坏的方向进行。验证集的作用是体现在训练的过程。举个栗转载 2021-04-09 14:41:45 · 1349 阅读 · 0 评论 -
CV2 imread和imwrite的易错点!
在使用cv2.imread()来读取图片时,根据网上的资料得知这个函数读取得到的是B,G,R格式,所以我自然想当然的在保存图片时先吧格式转为R,G,B,一开始代码如下:import cv2img = cv2.imread(r'D:\DeepLearningProjects\Test\DCI_Old\train\901-1_0.tiff')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)cv2.imwrite('C:/Users/Leon/Desktop/png原创 2021-04-08 15:17:15 · 1077 阅读 · 0 评论 -
plt.subplot()函数使用方法
subplot(nrows, ncols, plot_number)或者写成subplot(nrows ncols plot_number)也行(中间不用逗号,前提是只能是三位数)这个函数用来表示把figure分成nrows*ncols的子图表示,nrows:子图的行数ncols:子图的列数plot_number 索引值,表示把图画在第plot_number个位置(从左下角到右上角)...原创 2020-10-25 21:05:21 · 14378 阅读 · 0 评论 -
np.flatnonzero()函数和np.random.choice()函数的使用介绍
1、np.flatnonzero()函数该函数输入一个矩阵,返回扁平化后矩阵中非零元素的位置(index),也可以返回指定元素在矩阵中的位置import numpy as nparr = np.array([2,3,1,0,2,5,2])arr1 = np.flatnonzero(arr)arr2 = np.flatnonzero(arr==2)print('arr非零元素下标:{}'.format(arr1))print('arr1值为2的元素下标:{}'.format(arr2))原创 2020-10-25 20:56:00 · 1537 阅读 · 0 评论 -
python中-opencv 的imread函数介绍
今天在做图像处理的作业,看了好久才弄明白imread()这个函数的返回值是个啥,赶紧过来记录一下以免忘记可以看到img[0,0]输出的是图像的第一个像素的B,G,R值而[75 59 42]也正是图像最后一个像素(即最右下角那个像素)的B,G,R值...原创 2020-10-20 17:49:07 · 3289 阅读 · 0 评论