复现Pytorch-SiamFC里的可视化的时候遇到的错误
在python中调用jpeg4py相关库的时候报错
AttributeError: 'JPEG' object has no attribute 'decompressor'
查看里面的代码
首先它
import jpeg4py as jpeg
然后再decode的时候报错
jpeg.JPEG(img_path).decode()
究其原因是它不能load libjpeg-turbo library
也就是 libjpeg-turbo 库我的电脑里没有
所以就要安装这个库,libjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用的libjpeg,编码和解码性能提高2~4倍左右。
因为libjpeg-turbo的源代码中用到了SIMD汇编指令,所以要编译源代码,就要先安装NASM,我下的是win64的下载链接,以管理员身份运行,默认路径即可,然后将其添加到环境变量中。
然后在从github上下载libjpeg-turbo的源码,解压后,进入D:\libjpeg-turbo\libjpeg-turbo-master
创建一个build文件夹,打开CMAKE(如果没有安装就去官网下一个安装就行)。
Where is the source code : D:/libjpeg-turbo/libjpeg-turbo-master
Where to build the binaries: D:/libjpeg-turbo/libjpeg-turbo-master/build
点击configure 然后会让你选择编译器,我的编译器是vs2015,选择的是Visual Studio 14 2015 Win64
这里选不对就会报错。没报错就很棒!
点击 Generate
然后打开../build 看到里面由好多的文件,打开ALL_BUILD.vcxproj
在vs2015中打开后,选择release ----点击生成----生成解决方案
成功,这时候,你再打开.../build/Release文件夹,就会发现生成很多 .exe .lib .dll
其中我最想要的是turbojpeg.dll
下载源码-----github链接
解压,然后进入.../jpeg4py-master 中,打开.../jpeg4py-master\src\jpeg4py中的_cffi.py文件
用notepad++打开就行
拉到最下
将你刚刚生成的文件的路径写上去,注意斜杠!
然后回到.../jpeg4py-master 中右键+shift 打开power shell 输入python setup.py install
安装完成!
(其实我觉得这步可以换成,将turbojpeg.dll拷贝到C:\WINDOWS\system32试试,我没试~)
你可以随便找一个jpeg格式的图片,放在某个路径中,然后输入
F:\tracker_programe\Pytorch-SiamFC-master>python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import jpeg4py as jpeg
>>> jpeg.JPEG("001.jpg").decode()
然后会显示
array([[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]],
[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]],
[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]],
...,
[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]],
[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]],
[[192, 199, 209],
[192, 199, 209],
[192, 199, 209],
...,
[192, 199, 209],
[192, 199, 209],
[192, 199, 209]]], dtype=uint8)
这就已经成功了!
我是在跟踪问题调用的---pytorch版的SiamFC
在可视化的时候遇到的这个问题
在问题解决以后
我再输入
python vis_app.py -d F:\tracker_programe\ILSVRC2015_VID\ILSVRC2015 -n best.pth.tar -t train -s 10
结果: