ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验记录图像分割

2021-05-29 20:30:54  阅读:226  来源: 互联网

标签:分割 help 记录 dest parser add json train 图像


数据处理

1. 数据来源

种类数量
cercospora118(87)
health271 (251)
miner102(93)
phoma328(286)
rust103 (98)
total922(815)

2. 数据标记
在命令行输入labelme,激活标注软件,进行自己数据集的标注。
在这里插入图片描述标记的数据以.json文件存储:
在这里插入图片描述
3. 批量处理.json文件
打开cmd,cd到.json文件的目录下,运行下面一行代码:

labelme_json_to_dataset.exe E:\coffee

注意:

  • 这个也就是你的json文件目录。
  • 路径只需要输入到文件夹即可,不需要具体指定json文件。
    在这里插入图片描述

将生成的json文件夹中的label.png提取出来放在一个文件夹中,即为masks。

在这里插入图片描述

环境配置

  1. 代码地址:UNet:Convolutional Networks for Biomedical Image Segmentation
  2. 实验环境
    查看python和pytorch版本

python 3.6.8
pytorch 1.3.0

# 创建虚拟环境
conda create -n pytorch-unet python=3.6

# 安装依赖
pip install -r requirements.txt
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
conda install tqdm
conda install pillow

说明:

  • -r:通过requirements文件可控地安装很多依赖。
  • -t:安装到指定位置。
  • -e:安装可编辑的包。

训练过程

1.数据准备

二分类:原图为jpg格式,标签是png格式,标签为unit8图像,背景类像素值为0,前景类像素值为1.(背景和前景看成二分类问题)

将训练图像和对应标签图像分别放在工程目录的 data/train/imgs 和 data/train/masks 下。
注意:训练要求一个 batch 内的数据大小一致。

2.代码修改

train.py中第19行,改成自己的路径:

dir_img = 'data/train/imgs/'
dir_mask = 'data/train/masks/'
dir_checkpoint = 'checkpoints/'

注意代码第157行,彩色输入通道数为3,黑白图片通道数为1。前景与背景的二分类问题所以classes为1:

net = UNet(n_channels=3, n_classes=1, bilinear=True)

3.训练

python train.py

训练参数(原代码中定义了get_args()函数),如下代码所示:

def get_args():
    parser = argparse.ArgumentParser(description='Train the UNet on images and target masks',
                                     formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('-e', '--epochs', metavar='E', type=int, default=5,
                        help='Number of epochs', dest='epochs')
    parser.add_argument('-b', '--batch-size', metavar='B', type=int, nargs='?', default=1,
                        help='Batch size', dest='batchsize')
    parser.add_argument('-l', '--learning-rate', metavar='LR', type=float, nargs='?', default=0.0001,
                        help='Learning rate', dest='lr')
    parser.add_argument('-f', '--load', dest='load', type=str, default=False,
                        help='Load model from a .pth file')
    parser.add_argument('-s', '--scale', dest='scale', type=float, default=0.5,
                        help='Downscaling factor of the images')
    parser.add_argument('-v', '--validation', dest='val', type=float, default=10.0,
                        help='Percent of the data that is used as validation (0-100)')

    return parser.parse_args()

代码解读

  • required:表示这个参数是否一定需要设置
  • choices:参数值只能从几个选项里面选择
  • help:指定参数的说明信息
  • dest:设置参数在代码中的变量名
    下面是指定训练参数的训练过程,指定epoch=50。其他为默认值。
python train.py -e 50

注意:在开始训练之前,所有的输入图片必须大小一致,这里将原始图片的大小设定为2048*1024.
在这里插入图片描述

预测结果

在这里插入图片描述在这里插入图片描述
(未完)

参考博客:

  1. UNet训练及预测过程
  2. argparse的基本用法

标签:分割,help,记录,dest,parser,add,json,train,图像
来源: https://blog.csdn.net/qq_41693168/article/details/115123964

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有