建议去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的路径