通过Anaconda搭建CREStereo虚拟测试环境(Win10系统)

2023-10-28 21:59

本文主要是介绍通过Anaconda搭建CREStereo虚拟测试环境(Win10系统),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、搭建CREStereo环境
    • (一)Anaconda下载安装
    • (二)通过Conda搭建环境
      • 1. 创建虚拟环境
      • 2. 安装cuda
      • 3. 安装megengine
      • 5. 安装opencv_python
      • 6. 安装Pillow
      • 7. 安装tensorboardX
      • 8. 查看是否安装成功
      • 9. 删除环境
  • 二、测试
  • 三、测试结果
    • 1. github上测试图
    • 2. Middlebury数据集中的图
    • 3. 自己测试的30w像素图片
    • 4. 自己测试的200w像素图片
    • 5. 自己测试的500w像素图片

一、搭建CREStereo环境

CREStereo的github代码:megvii-research/CREStereo
本文主要是在Windows10上通过Anaconda搭建CREStereo的虚拟测试环境(不是训练环境)。
论文阅读请查看:CREStereo论文阅读


更新:现有版本目前在Windows支持不是很好,模型初始化会卡住。

(一)Anaconda下载安装

Anaconda下载安装本文不再赘述,如有需要请参考:

  1. Anaconda介绍、安装及使用教程 - 知乎 (zhihu.com)
  2. 初学 Python 者自学 Anaconda 的正确姿势是什么? - 猴子的回答 - 知乎

(二)通过Conda搭建环境

主要是参考README.md中的要求安装各种包(本文通过Conda搭建虚拟环境)。
在这里插入图片描述

1. 创建虚拟环境

首先打开Anaconda prompt,创建一个环境:

conda create --name CREStereo python=3.7

注:README.md中要求python版本为3.6.9,但是后面安装pillow的时候该版本python不兼容,而且安装megengine要求Python的版本为3.5-3.8,所以综上安装python3.7的环境即可,不要安装3.6.9
在这里插入图片描述

查看是否创建成功:

conda info -e

在这里插入图片描述

进入到CREStereo中:

activate CREStereo

查看现有的安装:

conda list

在这里插入图片描述
你可以直接使用下面的命令进行安装:

python -m pip install -r requirements.txt

如果安装出错,请参考后面的步骤。

2. 安装cuda

conda install cudatoolkit=10.1 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/

在这里插入图片描述
并且安装cudnn:

conda install cudnn

可以参考这篇文章:Anaconda虚拟环境中安装CUDA

3. 安装megengine


更新:
看到Github上的issue说当前代码不支持MegEngine1.9.0,应该使用MegEngine1.8.2版本,大家下面在下载的时候注意一下这个问题。
具体参考:MegEngine 1.9.0 causes test.py error


进入到官网MegEngine 使用指南,然后选择自己的平台,复制上面的命令:
在这里插入图片描述
然后进入到Anaconda Prompt,粘贴即可。

pip3 install megengine -f https://megengine.org.cn/whl/mge.html

但是我使用这种方式会出错(即使指定了megengine的版本也不可以):
在这里插入图片描述
没办法,网上百度也没有太好的方法,只能自己尝试一下:

进入到该网址MegEngine下载你对应平台的whl文件:
在这里插入图片描述
比如我这里下载的MegEngine-1.9.0-cp37-cp37m-win_amd64.whl,然后通过cd命令进入到该whl文件夹中,注意:如果你的whl文件在其他盘,你首先需要切换盘符,比如我的在F盘,先使用:

f:

切换到F盘,然后再通过cd命令进入到所需文件夹中。

执行:

pip install MegEngine-1.9.0-cp37-cp37m-win_amd64.whl

就可以安装成功啦。安装完成可以打开python,输入:

import megengine

看是否报错。

5. 安装opencv_python

(安装过程中自动安装numpy):

conda install -c https://conda.anaconda.org/menpo opencv

或者:

pip install opencv-python

参考:windows10下安装opencv(通过anaconda)
windows环境下的Anaconda安装与OpenCV机器视觉环境搭建

6. 安装Pillow

conda install Pillow=8.4.0

7. 安装tensorboardX

conda install -c conda-forge tensorboardx

参考:conda 安装tensorboardX

8. 查看是否安装成功

conda list

9. 删除环境

如果当前虚拟环境不想要了,可以使用以下命令来删除该环境

conda remove --name CREStereo --all

到此为止,CREStereo所需要的环境就已经配置好了。

二、测试

从这里下载训练好的模型文件,然后进入CREStereo-master文件夹执行:

python test.py --model_path path_to_mge_model --left img/test/left.png --right img/test/right.png --size 1024x1536 --output disparity.png

注意这里作者README.md使用的其实是python3 test.py --modle...这种命令,使用该命令执行python文件是不会有提示信息的,也就是你执行完也不知道结果对不对,遇到错误也不会报错,所以只需要将python3后面的3去掉,改成python就可以正常运行啦。

还有要将path_to_mge_model改成你的模型文件的所在路径。


更新: 有些同学说下不了模型,我这里放上百度网盘链接,有需要自取:

链接:https://pan.baidu.com/s/1vAeURA-439hyV4v835a26g 
提取码:9rwj

运行报错:
在这里插入图片描述
是因为numpy版本的问题,使用升级numpy到最新版本即可:

pip install -U numpy

如果升级后还不行,先给它降一下版本,然后再重新升级版本:

pip install -U numpy==1.16.5
pip install -U numpy

还不行的话就参考:Numpy报错:ImportError: numpy.core.multiarray failed to import

修改后再次运行程序,如下:
在这里插入图片描述

Loading model: F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\crestereo_eth3d.mge
err: Failed to load cuda API library
err: failed to load cuda func: cuInit
err: failed to load cuda func: cuDeviceGetCount
err: failed to load cuda func: cuGetErrorString
[33m20 16:14:56[mgb] [0m[1;31mWRN cuda unavailable: unknown cuda error(999) ndev=-1[0m
Images resized: 1024x1536
Model Forwarding...
Traceback (most recent call last):File "test.py", line 94, in <module>pred = inference(left_img, right_img, model_func, n_iter=20)File "test.py", line 37, in inferencealign_corners=True,File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\functional\vision.py", line 663, in interpolate[wscale, Tensor([0, 0], dtype="float32", device=inp.device)], axis=0File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\functional\tensor.py", line 405, in concat(result,) = apply(builtin.Concat(axis=axis, comp_node=device.to_c()), *inps)
TypeError: py_apply expects tensor as inputs

修改MegEngine版本为1.8.2之后,重新跑代码,虽然有报错,但是居然跑出来结果了,看起来效果很棒:
在这里插入图片描述
报错如下:
在这里插入图片描述

问了一下其他大佬,一个原因是我这个电脑目前没有显卡,而本代码中用到了CUDA,CUDA是英伟达公司开发的,只能用于英伟达显卡,所以报错不能运行。
还有个大佬说再一个原因可能是现在这个算法对Windows支持不是太好,只能等官方更新一下。

三、测试结果

跑了几幅图片看了下效果和时间:

1. github上测试图

github上作者给的测试图,原尺寸为1280x720。
左图:
在这里插入图片描述
视差图:
在这里插入图片描述

时间(217s):
在这里插入图片描述


resize到1024x1536。

视差图:
在这里插入图片描述
时间(373s):
在这里插入图片描述

2. Middlebury数据集中的图

使用原尺寸,即741x497。
左图:
在这里插入图片描述

视差图:
在这里插入图片描述

时间(81s):
在这里插入图片描述


重新resize尺寸到1024x1536:
视差图:
在这里插入图片描述

时间(364s):
在这里插入图片描述

3. 自己测试的30w像素图片

尺寸为原尺寸640*480。
左图:
请添加图片描述

视差图:
在这里插入图片描述

时间(68s):
在这里插入图片描述


重新resize尺寸到1024x1536:
视差图:
在这里插入图片描述

时间(360s):
在这里插入图片描述

4. 自己测试的200w像素图片

原尺寸为1920*1080。
左图:
在这里插入图片描述

视差图:
在这里插入图片描述

时间(475s):
在这里插入图片描述


重新resize尺寸到1024x1536:
视差图:
在这里插入图片描述

时间(364s):
在这里插入图片描述

5. 自己测试的500w像素图片

原尺寸为2592*1944。
左图:
在这里插入图片描述

如果直接使用500w像素进行测试会出错,看样子是图片太大,内存不够导致的:

(CREStereo) F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\CREStereo-master>python test.py --model_path ../crestereo_eth3d.mge --left img/500_yuy2/img01.jpg --right img/500_yuy2/img02.jpg --size 2592x1944 --output 500_yuy2_disparity.png
Loading model: F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\crestereo_eth3d.mge
err: Failed to load cuda API library
err: failed to load cuda func: cuInit
err: failed to load cuda func: cuDeviceGetCount
err: failed to load cuda func: cuGetErrorString
[33m21 10:43:11[mgb] [0m[1;31mWRN cuda unavailable: unknown cuda error(999) ndev=-1[0m
Images resized: 2592x1944
Model Forwarding...
RuntimeError: failed to allocate memorybacktrace:
2 null3 null4 null5 null6 null7 null8 null9 null10 null11 nullThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "test.py", line 97, in <module>pred = inference(left_img, right_img, model_func, n_iter=20)File "test.py", line 48, in inferencepred_flow = model(imgL, imgR, iters=n_iter, flow_init=pred_flow_dw2)File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\module\module.py", line 149, in __call__outputs = self.forward(*inputs, **kwargs)File "F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\CREStereo-master\nets\crestereo.py", line 157, in forwardfmap1_dw16, fmap2_dw16 = self.self_att_fn(fmap1_dw16, fmap2_dw16)File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\module\module.py", line 149, in __call__outputs = self.forward(*inputs, **kwargs)File "F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\CREStereo-master\nets\attention\transformer.py", line 106, in forwardfeat0 = layer(feat0, feat0, mask0, mask0)File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\module\module.py", line 149, in __call__outputs = self.forward(*inputs, **kwargs)File "F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\CREStereo-master\nets\attention\transformer.py", line 57, in forwardquery, key, value, q_mask=x_mask, kv_mask=source_maskFile "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\module\module.py", line 149, in __call__outputs = self.forward(*inputs, **kwargs)File "F:\Files\lab_2001\Project\PyCharm\02_CREStereo_master\CREStereo-master\nets\attention\linear_attention.py", line 46, in forwardv_length = values.shape[1]File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\tensor.py", line 111, in shapeshape = super().shape
megengine.core._imperative_rt.core2.AsyncError: An async error is reported. See above for the actual cause. Hint: This is where it is reported, not where it happened. You may call `megengine.config.async_level = 0 to get better error reporting.
Error in atexit._run_exitfuncs:
RuntimeError: failed to allocate memorybacktrace:
2 null3 null4 null5 null6 null7 null8 null9 null10 null11 nullThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "E:\ProgramData\Anaconda3\envs\CREStereo\lib\site-packages\megengine\__init__.py", line 114, in _run_exit_handlershandler()
megengine.core._imperative_rt.core2.AsyncError: An async error is reported. See above for the actual cause. Hint: This is where it is reported, not where it happened. You may call `megengine.config.async_level = 0 to get better error reporting.

test.py中有resize操作,可以把图片下采样到200w像素再运行:
视差图:
在这里插入图片描述

时间(505s):
在这里插入图片描述


重新resize尺寸到1024x1536:
视差图:
在这里插入图片描述

时间(366s):
在这里插入图片描述

可以看到对1024x1536分辨率图像进行测试的时间约为370s(6mins)左右。

这篇关于通过Anaconda搭建CREStereo虚拟测试环境(Win10系统)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296216

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda