在windows下用python调用darknet的yolo接口

0,目标

本人计算机环境:windows7 64位,安装了vs2015专业版,python3.5.2,cygwin,opencv3.3,无gpu

希望实现用python调用yolo函数,实现物体检测。

1,踩过的坑

一开始下载了github上最热的开源项目https://github.com/pjreddie/darknet

采用cygwin编译,make后生成了darknet.exe, libdarknet.so和libdarknet.a。

在windows命令行采用darknet.exe,加上参数运行图片中的物体检测,一切OK,一切看起来如此美好。

然而,当我运行darknet.py时,始终无法正常运行。

如果在cygwin下运行,就报错segmentation fault 。

 就此问题纠结了一周左右,深刻反省之余在github上偶然发现有个发行版号称“Windows and Linux version of Darknet Yolo v3 & v2 Neural Networks for object detection”

是上述正统发行版的一个Fork。哈哈,有救了。

2,windows乞丐配置如何编译EXE和DLL?

从https://github.com/AlexeyAB/darknet网站下载源码,分别编译exe和dll文件。

编译exe。打开darknet_no_gpu.sln,按照其中有opencv,无gpu的配置方法,在vs2015中对一些路径进行修改,然后编译,生成exe。测试运行正常!

编译dll。 打开yolo_cpp_dll_no_gpu.sln,删除属性中有关cuda的特性(以符合乞丐版的特性@^@),然后编译,生成dll。

此处需注意,有可能编译报错“无法运行rc.exe”。此时请参考下文解决:

https://stackoverflow.com/questions/14372706/visual-studio-cant-build-due-to-rc-exe

 3,windows乞丐配置也能跑darknet.py?

是的。有了DLL,darknet.py调用库中的函数都正常了。如下图所示。

可见,.so文件在windows运行环境下,在python中调用会失败,必须是.dll文件windows才能正常加载。

《完》

猜你喜欢

转载自www.cnblogs.com/jackkwok/p/9077544.html