Closed zhoujinhai closed 4 years ago
需要调用register_darknet_layer 将操作注册到网络中, 具体参考example 中的例子。
------------------ 原始邮件 ------------------ 发件人: "zhoujinhai"<notifications@github.com>; 发送时间: 2019年11月6日(星期三) 上午9:14 收件人: "xiangweizeng/darknet2ncnn"<darknet2ncnn@noreply.github.com>; 抄送: "Subscribed"<subscribed@noreply.github.com>; 主题: [xiangweizeng/darknet2ncnn] layer DarknetShortcut not exists or registered? (#36)
我训练好模型后用darknet2ncnn能成功转为bin和param,但运行检测后提示layer DarknetShortcut not exists or registered,我看在darknet2ncnn/src/register_darknet.cpp文件中有注册,请问这个有好的建议吗? void register_darknet_layer(ncnn::Net &net) { net.register_custom_layer("DarknetActivation", ncnn::DarknetActivation_layer_creator); net.register_custom_layer("DarknetShortcut", ncnn::DarknetShortcut_layer_creator); net.register_custom_layer("Yolov1Detection", ncnn::Yolov1Detection_layer_creator); net.register_custom_layer("Yolov3Detection", ncnn::Yolov3Detection_layer_creator); }```
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.
是这样的 我在您的这个工程下将模型转换成bin和param, 然后到ncnn工程下运行,我在yolov3.cpp中对应位置添加
net.register_custom_layer("DarknetActivation", ncnn::DarknetActivation_layer_creator);
net.register_custom_layer("DarknetShortcut", ncnn::DarknetShortcut_layer_creator);
net.register_custom_layer("Yolov1Detection", ncnn::Yolov1Detection_layer_creator);
net.register_custom_layer("Yolov3Detection", ncnn::Yolov3Detection_layer_creator);
执行后提示error: ‘DarknetActivation_layer_creator’ is not a member of ‘ncnn’
?
yolov3.cpp
ncnn::Net yolov3;
#if NCNN_VULKAN
yolov3.opt.use_vulkan_compute = true;
#endif // NCNN_VULKAN
// original pretrained model from https://github.com/eric612/MobileNet-YOLO
// param : https://drive.google.com/open?id=1V9oKHP6G6XvXZqhZbzNKL6FI_clRWdC-
// bin : https://drive.google.com/open?id=1DBcuFCr-856z3FRQznWL_S5h-Aj3RawA
yolov3.register_custom_layer("DarknetActivation", ncnn::DarknetActivation_layer_creator);
yolov3.register_custom_layer("DarknetShortcut", ncnn::DarknetShortcut_layer_creator);
yolov3.register_custom_layer("Yolov1Detection", ncnn::Yolov1Detection_layer_creator);
yolov3.register_custom_layer("Yolov3Detection", ncnn::Yolov3Detection_layer_creator);
yolov3.load_param("../model/yolov3-tiny.param");
yolov3.load_model("../model/yolov3-tiny.bin");
关于最终的部署, 可以使用合并darknet layers 后的ncnn, 将定期同步保持和ncnn官方版最新一致,地址:https://github.com/xiangweizeng/ncnn
使用合并后的ncnn, 不在需要注册自定义层
使用合并后的ncnn, 不在需要注册自定义层
好的 非常感谢 我去试试
我训练好模型后用darknet2ncnn能成功转为bin和param,但运行检测后提示layer DarknetShortcut not exists or registered,我看在
darknet2ncnn/src/register_darknet.cpp
文件中有注册,请问这个有好的建议吗?