焊缝跟裂缝有着相似的形式,在我之前的文章中已经做过不少关于裂缝检测、分割识别相关的工作,这里主要就是基于DeepLabV3Plus实现焊缝的分割识别,首先看下效果:
接下来看下数据集:
标注可视化如下所示:
随机划分总体数据集创建训练集-测试集,如下:
txtDir = "datasets/ImageSets/Segmentation/"
if not os.path.exists(txtDir):
os.makedirs(txtDir)
train_txt = "datasets/ImageSets/Segmentation/train.txt"
test_txt = "datasets/ImageSets/Segmentation/test.txt"
train_ratio = 0.85
ids_list = [
one.split(".")[0].strip() for one in os.listdir("datasets/SegmentationClass/")
]
print("ids_list_length: ", len(ids_list))
train_num = int(len(ids_list) * train_ratio)
print("train_num: ", train_num)
train_ids_list = random.sample(ids_list, train_num)
test_ids_list = list(set(ids_list) - set(train_ids_list))
print("test_num: ", len(test_ids_list))
with open(train_txt, "w") as f:
for one_id in train_ids_list:
f.write(one_id.strip() + "\n")
with open(test_txt, "w") as f:
for one_id in test_ids_list:
f.write(one_id.strip() + "\n")
自动创建train.txt和test.txt,如下:
对DeepLabV3Plus进行结构可视化如下所示:
我这里直接使用的就是开源的项目,可以根据自己实际需要选择即可。
默认迭代计算100个epoch,对其进行可视化如下:
实际测试计算
原图:
结果图: