只是作为自己的一个记录。并不是特别详细。
VS2019提示升级
打开时候选择升级不影响。
安装cuda和cudnn
安装opencv
遇到的错误
一般来说修改cuda版本时候,算力也得同时修改,即下面的1和2两个错误。
1.未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 10.0.props”。
参考方案。
2.MSB372 darknet cuda 9.1.targets 707
compute 86 ,compute 35
https://blog.csdn.net/qq_34806812/article/details/82986890
3.其他
here
训练自己的数据集
voc数据集的准备
创建上面格式的VOC数据集
其中,
annotation下的xml文件
Main中的train.txt文件
JPEGImages中的图片文件
这三个都是自己的
JPEGimgaes中是原图片。
在x64/data文件夹下创建oobj.data和obj.names.这部分可以参考github官方文档。
运行voc_label.py如果提示gbk错误,在这里修改编码格式
def convert_annotation(year, image_id):
in_file = open('mydata/VOCdevkit/VOC%s/Annotations/%s.xml' % (year, image_id), encoding='utf-8')
out_file = open('mydata/VOCdevkit/VOC%s/labels/%s.txt' % (year, image_id), 'w', encoding='utf-8')
用下面的代码生成train.txt:
import os
from os import listdir, getcwd
from os.path import join
if __name__ == '__main__':
source_folder = 'D:\\VS2019Project\\darknet_master\\darknet-master\\mydata\\VOCdevkit\\VOC2020\\JPEGImages'
dest = 'D:\\VS2019Project\\darknet_master\\darknet-master\\mydata\\VOCdevkit\\VOC2020\\ImageSets\\Main\\train.txt'
# dest2 = 'D:\\VS2019Project\\darknet_master\\darknet-master\\mydata\\VOCdevkit\\VOC2020\\ImageSets\\Main\\val.txt'
file_list = os.listdir(source_folder)
train_file = open(dest, 'a')
# val_file = open(dest2, 'a')
for file_obj in file_list:
file_path = os.path.join(source_folder, file_obj)
file_name, file_extend = os.path.splitext(file_obj)
file_num = int(file_name)
if file_num < 776:
train_file.write(file_name + '\n')
else:
# val_file.write(file_name + '\n')
break
train_file.close()
# val_file.close()
最后将生成的Main文件下的train文件复制到data文件夹下!
2 下一步就是训练。
附:json转为voc数据集的格式
还没有验证,先把链接保存下来。
链接
1.需要预训练权重。
如果没有会随机初始化权重。
2.**修改yolov4-custom.cfg。
参考GitHub官方文档就好。**
参考底下的链接。
3.运行voc_label.py将生成的2012_train.txt重命名为train.txt,复制到data文件夹下!
因为在obj.data中train路径为data/train.txt。也可以将这里修改为2012-train.txt.
4.训练命令
darknet.exe detector train data/obj.data cfg/yolov4-obj.cfg yolov4.conv.137
reference
https://blog.csdn.net/weixin_44771532/article/details/105495755
https://blog.csdn.net/weixin_38353277/article/details/105841023
https://www.cnblogs.com/bob-jianfeng/p/12888111.html
video stream stooped解决方法:
dll的配置
官网:https://github.com/AlexeyAB/darknet
一个参考:https://blog.csdn.net/qq_38316300/article/details/107290202
记得一定要在附加依赖项中添加yolo_cpp_dll.lib。
不然会提示无法解析的外部符号问题,一般出现这个问题我们就要知道是自己的库有问题。