opencv无法加载yolov4 训练网络模型解决方法
之前使用opencv4.5的时候加载yolov3训练的网络模型时,出现了无法加载的问题,解决方法时修改了权重文件的第一行,修改成了和官网权重一样,就可以加载了,后来使用了yolov4之后突然又无法加载网络模型了,也尝试着使用同样的方法修改了文件,可是还是不行,百思不得其解。最后尝试这重新编译了opencv4.5.1,除了python和java,激活所有的扩展模块都编译了,哎,突然就可以了。。。。
所以不同版本的opencv的dnn模块对网络模型的兼容是不同,建议编译使用最新的版本o。
以下是模型加载的c++代码:
string names_file = "..//data//charRect.names";
String model_def = "..//data//backup3_3880//yolov4-char.cfg";
String weights = "..//data//backup3_3880//yolov4-char_final.weights";
const std::vector<std::string> class_labels = objects_names_from_file(names_file);//类标签
Net Trochnet = readNetFromDarknet(model_def, weights);
Trochnet.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
Trochnet.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);