0. 任务描述:
正好这几天有时间,就写一下一个小白教程,用来教大家如何用一个轻量级的 FCN-DenseNet 训练自己的数据集,我们以分割魔方为例:
1. 标注数据:
1.1 Labelme 的安装:
语义分割标注我们使用 labelme,它是一个图形界面的图像标注软件,是用 PyQt5 编写的图形界面。
安装方式:
pip3 install labelme --user
报错:
我们换清华源试一下:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U labelme --user --default-time=1000 --user
解决:
1.2 Labelme 的使用:
在终端输入 labelme:
打开界面如图:
点击OpenDir选择需要标注的图片的路径:
点击标注按键开始标注:
闭合标注区域后,填入标签:
点击Save保存:
另一张也如法炮制:
最后得到两个标注的json文件:
1.3 转换标注格式:
这一步我们需要把 json 文件转换成 VOC 格式的颜色掩码图,像这样:
我们只需要在终端输入:
labelme_json_to_dataset <文件名>.json
即:
就可以看到在该目录下,生成了相应的文件:
对于 1.json 也同样操作;
最终我们只需要保留两种标注的掩码图(注意需要改成跟原图相同的图片名):
2. 数据的目录结构:
我们需要安排一下图片和标注的文件目录;
首先新建一个 Data 文件夹:
里面创建 2 个文件夹:
train/images 文件夹放训练原图:
train/masks 放训练标注图:
同样那个 val 下面的 images 和 masks 分别放测试原图和测试标注图;
3. 下载源码:
源码地址(记得给一个Star哦~):
https://github.com/Sharpiless/FCN-DenseNet
下载完成后解压:
4. 下载预训练模型:
预训练模型地址:
http://download.pytorch.org/models/densenet121-a639ec97.pth
下载完成后放到源码目录下:
5. 安装 pytorch:
Linux 安装比较容易,这里就着重讲一下怎么在 Windows 下安装吧;
(我的是 python3.7,其他的版本同理)
到这个网站:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
找到对应的 torch 版本下载:
下载完成后,在相应目录下 shift+右键 选择打开 Windows Powershell:
输入:
pip3 install torch‑1.0.1‑cp37‑cp37m‑win_amd64.whl --user
然后再:
pip3 install torchvision --user
如果还有报错 ‘No modul named ***’,也是直接用:
pip3 install *** --user
6. 运行训练:
在编辑器(我用的 VSCode)打开 FCN-DenseNet:
运行 train.py 即可开始训练:
下面是训练的参数,都有注释说明,需要改的话在 default 里面改就 ok:
训练时的模型参数保存在这里:
7. 测试图片:
运行 test.py 即可:
会在目录下生成一个 output 文件夹,里面是测试集的分割结果(这里是因为我只有两张图片做例子,所以测试集跟训练集是一样的):
大功告成!
转载:https://blog.csdn.net/weixin_44936889/article/details/105526596