文章目录
一、环境配置
前言
建议使用anaconda 创建的虚拟环境,在创建虚拟环境的时候可以指定python版本,在虚拟环境里可以指定安装对应的cuda版本。
0.我的环境(仅供参考)
Ubuntu 20.04
GPU NVIDIA RTX 3080Ti 12G
源码+预训练模型下载地址
百度云地址:
链接:https://pan.baidu.com/s/1OsZDdIKAXNh7bUUgGkosWA
提取码:m3an
1.创建虚拟环境
conda create -n py37_SOLOV2 python=3.7
2.激活虚拟环境
source activate py37_SOLOV2
3.安装cuda,torch,torchvision,toraudio
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0
-f https://download.pytorch.org/whl/torch_stable.html
或者
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=11.3
-c pytorch -c conda-forge
4.检查是否安装OK
import torch
print(torch.cuda.is_available())#打印cuda是否可用
print(torch.cuda.device_count())#打印可用的GPU数量
print(torch.version.cuda)#查看虚拟环境cuda版本
5.安装预建的 Detectron2(仅限 Linux)
python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.10/index.html
或者下载源码安装
解压后在AdelaiDet主目录下
python -m pip install -e detectron2
6.构建AdelaiDet
pip3 install -U pip #升级pip 是为了后面安装依赖库的顺利
cd AdelaiDet
python setup.py build develop
二、数据标注和转换
1.数据标注
我们使用labelme来标注数据分割数据,具体安装和使用可以自行百度
2.按照下面的格式组织文件
(可以直接执行python ./datasets/make_dir.py生成coco以及子文件夹)
然后直接把你标注好的jpg和json复制到coco/totalFiles中
文件夹存放文件介绍
-coco:数据集名称
-coco/totalFiles:存放所有的图片jpg和标注的json文件
-coco/images:
-coco/images/train2014: 存放训练集图片jpg和标注的json文件
-coco/images/val2014: 存放验证集图片jpg和标注的json文件
-coco/annotations:存放转换后的coco格式的json文件
3.划分训练集和验证集
执行python ./datasets/train_val_split.py可以打乱数据,
训练集:一部分作为训练集放到./datasets/coco/images/train2014,
验证集:一部分作为训练集放到./datasets/coco/images/val2014,
自己可以修改数据划分比例,默认trainval:val=9:1
4.数据转换(转换成coco格式)
然后执行python ./datasets/labemel2coco.py ,
会自动生成./datasets/coco/annotations/instances_train2014.json
会自动生成./datasets/coco//annotations/instances_val2014.json
最终文件夹结构如下
├── coco
│ ├── totalFiles
│ │ ├── 0001.jpg
│ │ ├── 0001.json
│ │ ├── 0002.jpg
│ │ ├── 0002.json
│ │ ├── 0003.jpg
│ │ └── 0003.jsob
│ │ ........
│ ├── annotations
│ │ ├──instances_train2014.json
│ │ └──instances_val2014.json
│ │
│ └── images
│ │ ├── test2014
│ │ ├── train2014
│ │ ├── 0001.jpg
│ │ ├── 0001.json
│ │ ├── 0003.jpg
│ │ ├── 0003.json
│ │ ........
│ │ ├── val2014
│ │ ├── 0007.jpg
│ │ ├── 0007.json
│ │ ├── 0005.jpg
│ │ ├── 0005.json
│ │ ........
三、配置文件
1.下载预训练文件
下载预训练文件(文章开头的下载链接包含有预训练模型),并拷贝到weights下存放
下面不同网络的预训练文件选一个下载就可以
sudo wget https://cloudstor.aarnet.edu.au/plus/s/chF3VKQT4RDoEqC/download -O SOLOv2_R50_3x.pth
或
sudo wget https://cloudstor.aarnet.edu.au/plus/s/glqFc13cCoEyHYy/download -O fcos_R_50_1x.pth
sudo wget
2.训练前需要注册数据集
(1)修改./adet/data/builtin.py 注册数据集
(2)指定注册的数据
因为我们用的SOLOV2,所以修改./configs/SOLOv2/Base-SOLOv2.yaml
(3)下载或指定R50.pkl
模型训练会自动联网下载这个文件,但是如果下载不顺利的化,就自己在CSDN或其他地方下载好,这里修改对应的路径,我的路径是./weights/R-50.pkl
3.训练
(1)绝大部分的参数配置,放在detectron2/detectron2/config/default.py
-常用参数修改
# 每10000 iterations保存一次checkpoints
_C.SOLVER.CHECKPOINT_PERIOD = 10000
# 输出文件保存路径
_C.OUTPUT_DIR = "./output"
_C.SOLVER.LR_SCHEDULER_NAME = "WarmupMultiStepLR"
_C.SOLVER.MAX_ITER = 40000
_C.SOLVER.BASE_LR = 0.001
_C.SOLVER.MOMENTUM = 0.9
OMP_NUM_THREADS=1 python tools/train_net.py \
--config-file configs/SOLOv2/R50_3x.yaml \
--num-gpus 1 \
OUTPUT_DIR training_dir/R_50_3x
(2)训练的事项
训练开始会自动打印该模型的所有配置参数和软件版本信息,存放在你指定的OUTPUT_DIR training_dir/R_50_3x 的log中
同时配置参数也会同步一份保存在./training_dir/R_50_3x.config.yaml
4.预测
(1)修改demo/demo.py中相关参数
下面参数的如果不想在执行时指定,直接在demp.py文件写好,要注意格式
–input default=[“./testdata/input2.jpg”]之所以用列表是因为一次可以指定1或多个输入路径
–opts default=[“MODEL.WEIGHTS”,“./weights/SOLOv2_R50_3x.pth”] #这里直接用预训练文件预测
当然也可以执行时指定
python3 demo/demo.py \
--config-file configs/SOLOv2/R50_3x.yaml \
--input ./testdata/input2.jpg \
--opts MODEL.WEIGHTS ./weights/SOLOv2_R50_3x.pth