@wanghuijiao
2020-08-06T16:50:51.000000Z
字数 2954
阅读 1096
网络训练
下载 我的复现 HD01分支
git clone https://github.com/huijiaowang/darknet
开启训练
单GPU训练
./train_human.sh
多GPU训练,需要先用单gpu训练一段时间,例如1000个iteration后,在进行多gpu训练
./train_human_mgpu.sh whj_yolov4_1000.weights
检测图片
./test_human.sh data/person.jpg
验证在 COCO 数据集上的精度
./COCO_human_acc.sh
GPU:Tesla V100-32GB 4卡
准备文件
修改 yolov4.cfg,新文件命名为 whj_yolov4.cfg,修改以下行:
width=512 (需被32整除)
height=512(需被32整除)
subdivisions=8 (若 run time error,则改成16)
max_batches=6000(=2000*检测类别数,注意:该数需不少于6000,且不少于训练图像数量)
steps=4800,5400 (max_batches的80%,90%)
csdarnet53-omega.conv.105 -这是在ImageNet上预训练过的 darknet53 网络前105层:
./darknet partial cfg/csdarknet53-omega.cfg csdarknet53-omega_final.weights csdarknet53-omega.conv.105 105
修改data/coco.name,新文件命名为 obj.name,删除除person之外的其他 79 类标签,最终 obj.name 文件内容为:
person
修改 cfg/coco.data 为 cfg/obj.data:
classes= 1
train = data/trainvalno5k.txt
valid = data/5k.txt
names = data/obj.names
backup = backup
eval = coco
准备数据, 为 /hdd02/zhangyiyang/data/coco/train2014 和 /hdd02/zhangyiyang/data/coco/val2014 建立软连接软链接:
ln -s /hdd02/zhangyiyang/data/coco/train2014 /hdd01/wanghuijiao/darknet/coco/cocoMetadata/images
ln -s /hdd02/zhangyiyang/data/coco/val2014 /hdd01/wanghuijiao/darknet/coco/cocoMetadata/images
修改src/data.c,限制只读入human检测标注框,对应将 L225-239 改为:
if (id==0){ boxes = (box_label*)xrealloc(boxes, (count + 1) * sizeof(box_label)); boxes[count].track_id = count + img_hash; //printf(" boxes[count].track_id = %d, count = %d \n", boxes[count].track_id, count); boxes[count].id = id; boxes[count].x = x; boxes[count].y = y; boxes[count].h = h; boxes[count].w = w; boxes[count].left = x - w/2; boxes[count].right = x + w/2; boxes[count].top = y - h/2; boxes[count].bottom = y + h/2; ++count; }
相较于源代码,仅在 while 循环内添加条件if(id==0)语句。
训练命令
先编译一下(一次就好,重复开启训练时不需要编译)
./build.sh
开启训练(-map 是训练同时计算 mAP)
./darknet detector train cfg/obj.data cfg/whj_yolov4.cfg csdarknet53-omega.conv.105 -dont_show -map
测试命令
./darknet detector test cfg/obj.data cfg/whj_yolov4.cfg backup/whj_yolov4_last.weights -thresh 0.25 -ext_output data/person.jpg
./train_human_mgpu.sh: line 2: 74627 Segmentation fault (core dumped)
用 YoloV4 自带的weights测试data/person.jpg :
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -ext_output data/person.jpg
人类检测结果为:
person: 100% (left_x: 194 top_y: 98 width: 79 height: 281)
用复现的weights测试data/person.jpg:
./darknet detector test cfg/obj.data cfg/whj_yolov4.cfg backup_0803/whj_yolov4_2000.weights -thresh 0.25 -ext_output data/person.jpg
人类检测结果为:
person: 71% (left_x: 183 top_y: 94 width: 93 height: 274)
实验序号 | 参数 | 描述 | 状态 | 精度 | 备注 |
---|---|---|---|---|---|
HD01 |