jjzjj

深入解析 pycocotools 的安装和运行报错 && 安装 mmcv-full and mmpycocotools

Flying Bulldog 2025-02-11 原文
  1. pycocotools库的主要作用:下载coco数据集,并使得操作数据集的数据更加方便。
  2. MMCV 是一个面向计算机视觉的基础库,它支持了很多开源项目。
  3. 好的习惯:学会在官方文档中解决的问题。

目录

一、安装Visual Studio 2022(其他版本也可以)

二、下载 pycocotools

三、解析 Why?

四、安装 mmpycocotools 库(mmcv 有用到)

五、安装 mmcv-full 库

(1)介绍 mmcv

(2)安装 mmcv


一、安装Visual Studio 2022(其他版本也可以)

直接去官方下载:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com)

注意:

  • 网上有很多教程,建议可以根据自己的要求下载所需的组件,官方有解释说明;
  • VC IDE 需要安装在 c 盘,否则会报错;
  • pycocotools 需要配置VC环境。

环境配置:

  • 第一个配置在用户变量的path中,后两个配置在系统变量的path之中
  • Microsoft Visual Studio\2022\Community\Common7\IDE
  • Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
  • Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe

二、下载 pycocotools

两种方法:

  1. pip install pycocotools-windows -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. 直接到PyPI的官网找到包 pycocotools-windows,下载最新版本即可,下载完毕,放到自己的环境中(本人环境: D:\python\ancanda\candaAPP\envs\pytorch\Lib\site-packages)

举一个例子,验证是否成功:

  • 点击 Pycharm 中的 Python Console,并输入下行代码进行调试:
  • import pycocotools._mask as _mask
  • 运行结果:成功运行,否则会报错 no module pycocotools._mask

三、解析 Why?

(1)使用命令 pip install pycocotools-windows 下载后的后台文件夹和文件如下所示:

 

 (2)而使用命令 pip install pycocotools 下载后的文件内容如下:

(3) 可以看到两个 mask 文件的不同:

  • 正确:_mask.cp37-win_amd64.pyd;
  • 错误:_mask.c(c语言文件,不能直接在python中调用);
  • pycocotools-windows 把 c 文件转换成 pyd 文件,可以在 python 中调用。

 (4)PyPI官方 pycocotools 库

可以看到有很多版本的 pycocotools,点击 pycocotools-windows ,可以看到此库仅仅为 windows 而工作( only works on Windows)。

 

四、安装 mmpycocotools 库(mmcv 有用到)

两种方法:

  1. pip install mmpycocotools
  2. 直接到PyPI的官网找到包 mmpycocotools,下载最新版本即可,下载完毕,放到自己的环境中(本人环境: D:\python\ancanda\candaAPP\envs\pytorch\Lib\site-packages)

五、安装 mmcv-full 库

MMCV 官方中文文档:

安装 MMCV — mmcv 1.5.1 文档https://mmcv.readthedocs.io/zh_CN/latest/get_started/installation.html注意:

请不要在同一个环境中安装两个版本,否则可能会遇到类似 ModuleNotFound 的错误。在安装一个版本之前,需要先卸载另一个。如果CUDA可用,强烈推荐安装mmcv-full

*****************************以下是总结,也可以自己去官方看看安装过程******************************


(1)介绍 mmcv

MMCV 是一个面向计算机视觉的基础库,它支持了很多开源项目。

MMCV 提供了如下众多功能:

  • 通用的 IO 接口
  • 图像和视频处理
  • 图像和标注结果可视化
  • 常用小工具(进度条,计时器等)
  • 基于 PyTorch 的通用训练框架
  • 多种 CNN 网络结构
  • 高质量实现的常见 CUDA 算子

mmcv 的完整版与精简版

  • mmcv-full: 完整版,包含所有的特性以及丰富的开箱即用的 CUDA 算子。注意完整版本可能需要更长时间来编译。
  • mmcv: 精简版,不包含 CUDA 算子但包含其余所有特性和功能,类似 MMCV 1.0 之前的版本。如果你不需要使用 CUDA 算子的话,精简版可以作为一个考虑选项。

(2)安装 mmcv

 根据自己电脑的 CUDA and Torch 版本安装 mmcv-full

  1. 查看CUDA版本:nvcc --version

  2. 查看Torch版本:activate 环境 >>> pip list

  3. 安装命令:pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html

    >>>如有疑问,欢迎评论区一起探讨 

有关深入解析 pycocotools 的安装和运行报错 && 安装 mmcv-full and mmpycocotools的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  3. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  4. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  7. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  8. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  9. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  10. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

随机推荐