目录
- 前言
- pycocotools库的介绍
- pycocotools库的安装
- pycocotools安装失败 compiler_compat/ld
- 项目场景
- 问题描述
- 原因分析
- 解决方案
- 总结
前言
最近在学习SSD目标检测算法,需要用到pycocotools,所以这里就简单介绍一下pycocotools是什么以及安装教程。
pycocotools库的介绍
pycocotools是什么?即python api tools of COCO。
COCO是一个大型的图像数据集,用于目标检测、分割、人的关键点检测、素材分割和标题生成。这个包提供了Matlab、Python和luaapi,这些api有助于在COCO中加载、解析和可视化注释。
请访问http://cocodataset.org/,可以了解关于COCO的更多信息,包括数据、论文和教程。
COCO网站上也描述了注释的确切格式。Matlab和PythonAPI是完整的,LuaAPI只提供基本功能。
除了这个API,请下载COCO图片和注释,以便运行演示和使用API。
两者都可以在项目网站上找到。
- -请下载、解压缩并将图像放入:coco/images/
- -请下载并将注释放在:coco/annotations中/
pycocotools库的安装
环境:windows10x64 ,python 3.7。不需要额外安装vs。
发现网上好多教程都需要额外安装 vc++2015 build tools,感觉很麻烦,这里只需要一行命令即可:
pip install pycocotools-windows
验证安装是否成功,输入:import pycocotools._mask as _mask
若没有报错,则安装成功。
参考:pycocotools的使用
pycocotools安装失败 compiler_compat/ld
项目场景
安装pycocotools出现的问题,python版本是3.6.9,在conda环境下:
gcc -pthread -shared -B /home/hm/anaconda3/envs/lan/compiler_compat -L/home/hm/anaconda3/envs/lan/lib -Wl,-rpath=/home/hm/anaconda3/envs/lan/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/../common/maskApi.o build/temp.linux-x86_64-3.6/pycocotools/_mask.o -o build/lib.linux-x86_64-3.6/pycocotools/_mask.cpython-36m-x86_64-linux-gnu.so
/home/hm/anaconda3/envs/xxx/compiler_compat/ld: build/temp.linux-x86_64-3.6/../common/maskApi.o: unable to initialize decompress status for section .debug_info
/home/hm/anaconda3/envs/xxx/compiler_compat/ld: build/temp.linux-x86_64-3.6/../common/maskApi.o: unable to initialize decompress status for section .debug_info
/home/hm/anaconda3/envs/xxx/compiler_compat/ld: build/temp.linux-x86_64-3.6/../common/maskApi.o: unable to initialize decompress status for section .debug_info
/home/hm/anaconda3/envs/xxx/compiler_compat/ld: build/temp.linux-x86_64-3.6/../common/maskApi.o: unable to initialize decompress status for section .debug_info
build/temp.linux-x86_64-3.6/../common/maskApi.o: file not recognized: file format not recognized
collect2: 错误: ld 返回 1
error: command 'gcc' failed with exit status 1</font>
问题描述
安装pycocotools失败
原因分析
应该是系统动态链接库和conda环境里的库哪里出了问题,从错误信息里看出gcc使用的是conda环境里的ld,
解决方案
尝试使用系统的ld,因为如果找不到conda里的ld,会自动使用系统的ld
cd到anaconda下环境的目录里,把ld这个文件暂时改成其他名字
不过只是临时解决而已,可能是我操作不当引起的问题
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。