CornerNet训练自己的数据集
源码下载:git clone https://github.com/princeton-vl/CornerNet-Lite.git
1. 虚拟环境配置
已有深度学习环境为ubuntu20.04+cuda11.0+pytorch1.7.1
方法1:create --name Pytorch --file conda_packagelist.txt创建虚拟环境(注释掉已安装的pytorch,torchvision,cuda)
方法2:先创建一个空的虚拟环境conda create --name Pytorch
然后激活并进入虚拟环境conda activate Pytorch
然后将packagelist.txt依赖依次安装
2. 接下来编译corner pooling layers,由于他是C++写的,输入如下命令:
cd CornetNet/core/models/py_utils/_cpools/
python setup.py install —user
3. 编译nms
cd CornetNet/core/external
make
4. 安装MSCOCO API
cd CornetNet/data
git clone GitHub - cocodataset/cocoapi: COCO API - Dataset @ http://cocodataset.org/ coco
cd CornetNet/data/coco/PythonAPI
make
5.准备自己的coco数据集
CornetNet dir>/data/coco下手动新建目录:annotations,而后把包含3个json文件的annotations放进去,接下来在<CornerNet dir>/data/coco/新建images目录,建立3个名字为train, val,test(3个文件夹),分别放入训练,验证和测试的图像
CornerNet/core/dbs/coco.py中的读取路径
#修改成自己的类别数和名称
self._coco_cls_ids = [1]
self._coco_cls_names = [ seed']
self._split ={
"trainval": "train",
"minival": "val",
"testdev": "test"
}[split]
接下来修改CornerNet-Lite/core/dbs下的__init__.py,指向定义的数据接口类:
datasets = {
"COCO": COCO
}
6、下载作者训练好的model文件,大约768M,建议FQ下载
将模型文件放在CornerNet/cache/nnet/CornerNet下,如果没有该目录,手动创建即可
7. 指定gpu,修改"batch_size"
torch.backends.cudnn.enabled = True
torch.backends.cudnn.benchmark = True
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
# 加上这句# 以后修改了CornerNet-Saccade.json中的两个地方,具体以下:"batch_size": 3,
"chunk_sizes": [3], # 原来是"chunk_sizes": [4,5,5,5,5,5,5,5,5,5],这是相对应的,由于是10个GPU,因此这里有10个数,且加起来等于batch_size=49
8. 训练自己的数据的时候,需要修改类别的数量,主要是以下三处:
1)修改CornerNet/config下的配置文件CornerNet-Saccade.json("dataset","categories")
2)修改CornerNet-Lite/core/models/CornerNet_Saccade.py下line.74和line.75:
tl_heats = nn.ModuleList([self._pred_mod(1) for _ in range(stacks)])
br_heats = nn.ModuleList([self._pred_mod(1) for _ in range(stacks)])
3)修改core/dns/detection.py 修改 self._configs["categories"] = 1,无背景类
训练命令:
python train.py CornerNet_Saccade