当前位置:网站首页>tensorflow学习6 -- 跑通UNet图像分割

tensorflow学习6 -- 跑通UNet图像分割

2022-05-14 13:43:39罗小黑战记好看

感恩无私奉献的大神与我的师兄
大神的git库
大神的视频教程
大神的CSDN
本文以下的内容都是基于大神的教程做的适配于我自己的流程记录

制作自己的数据集

给原始图片做标记

用labelme打开图片做标记,另存为json格式文件并且和原图放在一起

  1. 安装labelme
    装了pip就能用pip install labelme进行安装并使用。但是后续用到的代码里面要import labelme文件,如果当初是在Windows的cmd里安装的话,代码运行就会报错ModuleNotFoundError: No module named ‘labelme’ 。这时候只要在当前pycharm里面的终端里 pip install 对应的库就好。

  2. 将原始图像放在dataset\image文件夹【dataset和make_dataset.py放在相同的目录下】,从labelme打开该文件夹
    在这里插入图片描述

  3. 标记之前先打开自动保存 省事 。切换下一张图的快捷键是D
    在这里插入图片描述

  4. 点击Create PolyGons进行标记

  5. 保存josn文件到dataset\image文件夹

将json文件转为标签图片

使用师兄的make_dataset.py文件,生成JPEGlmages和SegmentationClass两个文件夹的内容,一个是原图.jpg,一个是标签图.png。

  1. 修改make_dataset.py文件里的类别为自己数据集的类别。我自己的就seam,背景是默认的。
    在这里插入图片描述
  2. 确认文件夹路径是对的,运行就好了。会自动生成文件夹和标签图
    在这里插入图片描述

标签制作没用到的参考教程

划分数据集

将能用的数据集按比例分好训练集、测试集等

  1. 将图片文件夹(dataset\JPEGImages)和标签文件夹(dataset\SegmentationClass)放在unet\VOCdevkit\VOC2007。

  2. 打开unet目录下的voc_annotation.py 可修改拆分的比例 .
    7:3 只要把0.9改成0.7
    在这里插入图片描述

  3. 运行voc_annotation.py 就会有一堆txt文件在ImageSets/Segmentation文件夹里生成,里面是图片名单

跑训练

  1. 打开train.py 改分类数量
    num_classes = 2
  2. 从网盘里下载好权值文件,放进model_data文件夹里
    然后train.py 里写上对应的路径
    model_path = “model_data/unet_vgg_voc.h5”
    如果不用大佬的权值,把这里改成空字符串就行,但训练效果八成不好
  3. 可以改循环次数
    在这里插入图片描述
    从0-20是冻结时的训练,从20-40是解冻时的训练。我把解冻的epoch也写成20是能跑的,相当于我不大改参数,只微调。垃圾电脑跑不动训练,之前是0-50-100 俩阶段的batch都是2 跑到了51给我报错

Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter state is not initialized. The process may be terminated. [[{ {node PyFunc}}]]

原因就是内存不足 炸了。

预测

  1. 先打开unet.py改一些参数。
    “model_path” : ‘logs/ep020-loss0.001-val_loss0.001.h5’,
    这个路径是从logs文件夹里面现找的,随便选一个换上去
    下面的分类数量也记得改
    在这里插入图片描述
    保存,不用运行

  2. 打开predict.py
    分类写好
    name_classes = [“background”,“seam”]

  3. 运行predict.py,然后等会在底下输入文件路径就能对单个图片进行预测
    在这里插入图片描述

  4. 效果图
    实在是看不到焊缝的图片 确实识别不到
    在这里插入图片描述
    识别过的图片可以正常分割
    在这里插入图片描述
    拿了新的图片给预测,虽然范围小了点,但位置是对的,看来需要多加训练
    在这里插入图片描述

  5. 还有其他模式可以尝试
    在这里插入图片描述

计算mIOU

运行unet文件夹下的get_miou.py文件获得mIOU结果

  1. 确认unet.py里的参数已经修改过了

  2. 打开get_miou.py 修改里面的分类并运行
    在这里插入图片描述

语义分割评价指标–mIOU

原网站

版权声明
本文为[罗小黑战记好看]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42635852/article/details/124714165

随机推荐