darknet 的python接口使用

darknet 的python接口使用

darknet 是YOLO网络的一个框架,安装见官网:https://pjreddie.com/darknet/ 跟着步骤就可以安装好了。这里要介绍的是darknet本身提供的python接口使用:

首先,python接口文件在安装好的darknet目录下的python文件夹这里写图片描述 打开就可以看到
darknet 的python接口使用_第1张图片
这里的darknet.py文件就是python接口

用编辑器打开查看最后部分代码:darknet 的python接口使用_第2张图片
使用十分简单,先将网络配置加载进去,然后进行检测就行了。但其实现在还不能直接用,主要是以下两点:

1、在python目录下打开终端,输入 python darknet.py 结果如下
darknet 的python接口使用_第3张图片
错误提示:
Traceback (most recent call last):
File “darknet.py”, line 39, in
lib = CDLL(“libdarknet.so”, RTLD_GLOBAL)
File “/home/ubuntu/anaconda3/lib/python3.6/ctypes/init.py”, line 348, in init
self._handle = _dlopen(self._name, mode)
OSError: libdarknet.so: cannot open shared object file: No such file or directory
原因是darknet.py需要依赖 libdarknet.so文件,该文件其实就在安装好的darknet目录下,把libdarknet.so和darknet.py放在同一目录下就行了。(评论区几位朋友将libdarknet.so复制到了darknet.py目录下还是报错,这是因为libdarknet.so本身依赖其所在目录的其他库,应该将darknet.py复制到libdarknet.so所在目录)

2、处理好 libdarknet.so 目录后,再次运行 python darknet.py 结果如下:
这里写图片描述
错误提示:
Traceback (most recent call last):
File “darknet.py”, line 136, in
net = load_net(“cfg/tiny-yolo.cfg”, “tiny-yolo.weights”, 0)
ctypes.ArgumentError: argument 1:… : wrong type
原因是net = load_net(“cfg/tiny-yolo.cfg”, “tiny-yolo.weights”, 0)这个函数最后会将"cfg/tiny-yolo.cfg", "tiny-yolo.weights"这些参数传给刚才说到的libdarknet.so这个库中,而这个库是用c/c++来写的,所以出现了这个错误。解决方法是在出错的字符串前面添加一个b就行了,如:

 net = load_net(b"cfg/tiny-yolo.cfg", b"tiny-yolo.weights", 0)
 meta = load_meta(b"cfg/coco.data")
 r = detect(net, meta, b"data/dog.jpg")

再次运行:
darknet 的python接口使用_第4张图片
出现这个就说明成功了,之后就可以在上面添加自己的代码了。


你可能感兴趣的:(深度学习)