环境搭建
构建&激活虚拟环境
- 通过anaconda构建虚拟环境,名称为
pytorch01
,python版本为3.7.16
# 创建环境
conda create -n pytorch01 python=3.7.16
# 激活环境
conda activate pytorch01
安装所需模块
# 安装基本依赖及labelme
pip install -r requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple/ --trusted-host mirrors.cloud.tencent.com
# 安装pytorch1.7.0+cu110(这里为了适配GTX 3090,需要安装CUDA 11.0对应的版本,若是CUDA 10 版本可以安装pytorch1.2+cu92)
pip install -r requirements1.txt -i https://download.pytorch.org/whl/ --trusted-host download.pytorch.org
至此,环境搭建完成。
数据处理
数据标注
使用labelme
做数据标注。
将要标注的数据放在./datasets/before
目录下,标注完成后,可以执行python json_to_dataset.py
(须根据实际情况修改 classes
)使用脚本批量分离标注后的数据,放入指定文件夹。分离后的原始图像保存在./datasets/JPEGImages
下,mask保存在./datasets/SegmentationClass
下。
## json_to_dataset.py
#line 23
classes = ["_background_","chicken"] # 分类名,和labelme标注数据时使用的class名一致( _background_ 是必须的,指背景)
数据迁移
将批量分离后的数据(JPEGImages
和SegmentationClass
文件夹)复制到./VOCdevkit/VOC2007/
目录下,这是脚本默认的数据存放目录。
迁移完成后,执行python voc_annotation.py
分配并生成训练集和验证集,分别保存在./VOCdevkit/VOC2007/Segmentation/train.txt
下和./VOCdevkit/VOC2007/Segmentation/val.txt
。
训练数据
根据要处理的数据,对train.py
进行修改。
## train.py
# line 69
num_classes = 2 # 分类数,目前只有背景和鸡两个分类,所以这里是2
# line 152
Freeze_batch_size = 2 # 此处是模型冻结训练的batch_size,数值越大每次处理的样本越多,样本较小时无需修改,修改过大会报错样本数太少
# line 161
Unfreeze_batch_size = 2 # 此处是模型在解冻后的batch_size,数值越大每次处理的样本越多,样本较小时无需修改,修改过大会报错样本数太少
# line 242
num_workers = 20 # 多线程读取数据,这里给定的值原为4,可根据具体硬件配置修改数值
执行python train.py
开始训练,训练完成后,模型保存在./logs/
目录下。
预测数据
根据要处理的数据,需要对unet.py
和predict.py
进行修改。
## unet.py
# line 29
"model_path" : 'logs/best_epoch_weights.pth', # 模型路径,可以使用上文训练的模型
# line 33
"num_classes" : 2, # 分类数,目前只有背景和鸡两个分类,所以这里是2
## predict.py
# line 36
name_classes = ["_background_","chicken"] # 分类名,和labelme标注数据时使用的class名一致( _background_ 是必须的,指背景)
执行python predict.py
,即可预测数据。预测样本图片存放在./img/
下,按提示输入路径即可(如 ./img/11.jpg
)。
看到技术问就只能刷个存在 不懂是常态 不学也是常态