文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、环境配置
前言
因为需要安装编译的DCN 需要cuda10.2,如果你本机的显卡只支持高版本的cuda,没法降低cuda版本,这种情况下,建议使用anaconda 创建的虚拟环境,在创建虚拟环境的时候可以指定python版本,在虚拟环境里可以指定安装对应的cuda版本。
1.创建虚拟环境
#1.创建虚拟环境
conda create -n py37_YOLAct python=3.7
2.激活虚拟环境
source activate py37_YOLAct
3.安装cuda,torch,torchvision,toraudio
我的环境conda 安装后,导入torch会报错,所以我使用的是pip安装
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch
我自己是pip 安装的
pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
4.检查pytorch是否安装OK
import torch
print(torch.cuda.is_available())#打印cuda是否可用
print(torch.cuda.device_count())#打印可用的GPU数量
print(torch.version.cuda)#查看虚拟环境cuda版本
二、数据标注和转换
1.数据标注
我们使用labelme来标注数据,具体安装和使用可以自行百度
2.数据转换(转换成coco格式)
训练集:一部分作为训练集放到data/coco/images/train2014
,然后执行data/label2coco.py ,会自动生成data/myData/annotations/instances_train2014.json
验证集:一部分作为训练集放到data/coco/images/val2014
,然后执行data/label2coco.py ,会自动生成data/myData/annotations/instances_val2014.json
注意:训练集数量不要弄成奇数,尽量弄成偶数。不然会报错。如果报错,可以按照下面方式修改代码
三、修改配置文件
1.修改data/config.py
(1)修改数据类别为自己的
COCO_CLASSES = ('cat','dog')
COCO_LABEL_MAP = {1: 1, 2: 2, }
(2)修改数据加载地址
dataset_base = Config({
'name': 'Base Dataset',
'train_images': '/home/jeremy/codes/Data/coco/images/train2014',
'train_info': 'path_to_annotation_file',
'valid_images': '/home/jeremy/codes/Data/coco/images/val2014',
'valid_info': 'path_to_annotation_file',
(3)修改coco2014_dataset
coco2014_dataset = dataset_base.copy({
'name': 'COCO 2014',
# 修改自己的数据集地址
'train_info': '/home/jeremy/codes/Data/coco/annotations/instances_train2014.json',
'valid_info': '/home/jeremy/codes/Data/coco/annotations/instances_val2014.json',
(4) coco_base_config = Config({
# 修改自己的数据集地址
'dataset': coco2014_dataset,
(5)yolact_base_config = coco_base_config.copy({
'name': 'yolact_base',
# Dataset stuff
'dataset': coco2014_dataset,
'num_classes': len(coco2014_dataset.class_names) + 1,
# Image Size
'max_size': 550,
# Training params
'lr_steps': (300, 500, 700, 900),#学习率衰变区间
'max_iter': 1000,#迭代的次数,batch_size为8,那每8个数据跑一次就是一个iteration
四、训练和预测
1.训练
训练的时候需要把eval.py 中的’–images’的值修改为default=None
训练命令如下几种方式:
(1)使用批量大小为 8(默认值)的基本配置进行训练
python train.py --config=yolact_base_config
(2)训练 yolact_base_config 的 batch_size 修改为 4。
python train.py --config=yolact_base_config --batch_size=4
(3)使用特定的权重文件恢复训练 yolact_base,并从权重文件名中指定的迭代开始。
python train.py --config=yolact_base_config --resume=weights/yolact_base_10_112871.pth --start_iter=-1
2.预测
预测的时候, 再把eval.py 中的’–images’的值修改为default="data/myData/images/test2014:output"
,,输入文件夹,输出文件夹中间用:间隔开
3.添加打印信息
源码自带的打印的信息,不太友好,没显示具体时间,我们修改下打印的信息
timeNow=time.strftime('%Y-%m-%d %H:%M:%S')
print(
('epoch:[%3d/%7d] ||' + ( ' %s: %.4f |' * len(losses)) + ' total_loss: %.4f || ETA: %s || timer: %s')
% tuple([epoch, iteration] + loss_labels + [total, eta_str, timeNow]), flush=True)
4.添加可视化
源码中没有关于损失函数和学习率的可视化,我们可以添加这方面的代码
(1)安装相关的库
python -m pip install tensorboard
python -m pip install tensorboardX
(2)添加可视化损失函数和学习率的代码
将导入代码添加到train.py
头部
from tensorboardX import SummaryWriter
writer = SummaryWriter(logdir='./logs/log2', comment='MyNet')
writer.add_scalar("loss", loss , iteration)
writer.add_scalar("learning_rate", optimizer.state_dict()['param_groups'][0]['lr'], iteration)
总结
提示:这里对文章进行总结: