建议去ubuntu
我们开始
我这有2个版本
一个是deeplabv3-plus-pytorch
链接:https://pan.baidu.com/s/1R1vWf1T6bPQMP7zKTsdCgQ
提取码:a3ei

一个是unet 下面是连接
mirrors / bubbliiiing / unet-pytorch · CODE CHINA
是没有权重的提前下载
官网的权重 链接: 百度网盘 请输入提取码 提取码: c3c2
然后就是制作数据集,
使用deeplabv3+训练自己数据集(迁移学习) - vcjmhg - 博客园 (cnblogs.com)
这个连接,看着做。我这2个不用转tfrecorde的格式
害怕我以后忘记
在python 终端
pip install labelme

activate labelme
labelme
标注工具 上面是命令
开始标注,我就不展示了,网上有大把的教程。
我们标志好的文件这样放 到时候可以方便我们在训练的时候直接拿。

开始跑第一个脚本 path放的是上面的json的路径
import os
#path = 'C:/Users/tj/Desktop/dd' # path为labelme标注后的.json文件存放的路径
path = 'C:\\Users\\31319\\Desktop\\data\\json'
json_file = os.listdir(path)
for file in json_file:
if(file.split('.')[1]=='json'):
os.system("labelme_json_to_dataset %s" % (path + '/' + file)) #
# C:/soft/ev4/venv/Scripts/labelme_json_to_dataset.exe 为labelme_json_to_dataset.exe的路径 path + '/' + file 为读取.json路径
print(path + '/' + file)
跑完 你可以看见 1_json 文件 这个里面有4个东西


我们在跑第2个脚本
path 是这些1_json 文件
output 就是我们之前新建的文件夹
import os
path = 'C:/Users/31319/Desktop/data/json/'
output='C:\\Users\\31319\\Desktop\\data\\1/'
fileDirs=os.listdir(path)
for fileDir in fileDirs:
file=path+fileDir+"\\label.png"
if(os.path.exists(file)):
# 输出的文件直接以上层文件夹命名
end= len(fileDir);
fileName=fileDir[:end-5]
os.rename(file,output+fileName+".png")

下载源码
打开C:\Users\31319\Desktop\unet-pytorch-main\VOCdevkit\VOC2007


JPEGImages
放原图

SegmentationClass
放png 也就是我们那个1文件夹

在这个地方我们把我们的第一3个脚本拿出来


跑一下这个脚本代码
import os
import random
random.seed(0)
segfilepath=r'C:\Users\31319\Desktop\unet-pytorch-main\VOCdevkit\VOC2007\SegmentationClass'
saveBasePath=r"C:\Users\31319\Desktop\unet-pytorch-main\VOCdevkit\VOC2007\ImageSets\Segmentation"
#----------------------------------------------------------------------#
# 想要增加测试集修改trainval_percent
# 修改train_percent用于改变验证集的比例
#----------------------------------------------------------------------#
trainval_percent=1
train_percent=0.9
temp_seg = os.listdir(segfilepath)
total_seg = []
for seg in temp_seg:
if seg.endswith(".png"):
total_seg.append(seg)
num=len(total_seg)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
print("train and val size",tv)
print("traub suze",tr)
ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')
fval = open(os.path.join(saveBasePath,'val.txt'), 'w')
for i in list:
name=total_seg[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
把权重放在C:\Users\31319\Desktop\unet-pytorch-main\model_data

打开train.py 找到num_classes 我的是一个类别 所以 要1+1 也就是类别+1

那个权重路径

开始运行 这是我的一个报错

解决 在头文件加
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
在次训练

还有一个报错就是
之前遇到的

解决

开始测试
这是我们训练的权重

打开 unet 修改这个地方

打开终端 输入 python predict.py img/1.jpg

在输入你要测试图片的路径

开始查看性能

在改

直接跑get-miou
就可以查看
看好31,32的路径
该博客详细介绍了如何利用DeepLabV3+和UNet模型进行图像分割任务。首先,提供了两个模型的下载链接, Deeplabv3-plus-pytorch 和 UNet。接着,指导读者如何利用LabelMe工具进行数据标注,并将标注文件转换为训练所需格式。然后,解释了如何组织数据集,并提供了创建训练、验证和测试集的Python脚本。此外,还提到了训练时可能出现的问题及解决方案,并给出了预测和评估模型性能的方法。整个过程涵盖了从数据准备到模型训练和测试的完整流程。
4525

被折叠的 条评论
为什么被折叠?



