unet-pytorch-识别鸡-笔记

unet-pytorch-识别鸡-笔记

苏苏
2023-04-26 / 1 评论 / 38 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年04月27日,已超过827天没有更新,若内容或图片失效,请留言反馈。

环境搭建

构建&激活虚拟环境

  • 通过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_ 是必须的,指背景)

数据迁移

将批量分离后的数据(JPEGImagesSegmentationClass文件夹)复制到./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.pypredict.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 )。

0

评论 (1)

取消
  1. 头像
    vian
    Windows 10 · MicroSoft Edge
    @

    看到技术问就只能刷个存在 不懂是常态 不学也是常态表情

    回复