2024-7-2-人工智能程序转换2d图片为3d模型

之前效果都很差,没法看直到上周试用tripoai感觉一下子厉害了,然而它一个月生成24个,多了要收费。我去看了相关的几个项目,era3d、crm、triposr,安装环境简直都要晕过去了,在线测试下来效果也不好,且每个都需要安装大量的huggingface 上的模型,我不知道这些所谓的权重模型是否能共通,很多名字相同,估计应该是不行的。

anaconda pkg下的tar包可以通过conda clean –all清除掉。anaconda下载慢配置源和代理实测都没用,只有每次pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 才能切换源。pytorch3d的安装必须保证cuda torch torchvision的版本一致,xformers也是,这些玩意儿别自己单个安装,在pytorch官网选好cuda版本以后用run this command来安装。我原来是cuda11.8+cpu这个好像会导致xformers出问题运行不起来,在控制面板-程序里卸载所有nvidia带有11.8版本的程序,然后到cuda官网下载12.1版本。

之后遇到了gradio版本问题,升级了gradio总算127.0.0.1:7680能运行了。第一次运行会下载大量的模型,这导致c盘一下子容量变小,我看了模型跑到了C盘/用户/cache下面,通过网上的介绍配置了系统变量将cache转移了。还有一部分模型需要放在unique3d项目文件夹下建立一个ckpt,模型有15gb左右大小,huggingface下载了好几个小时看不出速度,在84%的时候我放弃了,通过清华云盘下载,直接下很容易一会儿断线,复制链接在迅雷里面速度还快些也稳定。

然后是[ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126,这个问题卡了我昨天一晚上,主要是每次要验证测试效果需要5分钟左右运行之后才知道。作者这里十分概括的说了下要安装tensorRT,tensorRT下载下来是一个压缩包,网上有很多种说法,根据官网的说法需要对tensorRT的lib添加path环境变量,另外还得把lib下的dll文件复制到cuda的bin目录下,我暂时还没测试如果cuda下没有tensorRT的dll文件会如何,根据我国网友的总结,用where命令搜若不在cuda bin目录下,这些tensorRT的dll文件搜不出来,这种情况下会导致ONNXRuntimeError onnxruntime::python::RegisterTensorRTPluginsAsCustomOps Please install TensorRT libraries as mentioned in the GPU requirements page, make sure they’re in the PATH or LD_LIBRARY_PATH, and that your GPU is supported.

这还没完,还需要安装cudnn,关于版本一开始没细看随便选的,后来发现ONNXRuntime对cuda、cudnn是有版本要求的,我一开始随便下了一个8.9.5的后来改回8.9.2。cudnn解压出来的东西要放到NVIDIA GPU Computing Toolkit下建一个cudnn的目录,并配置Path环境变量。nvidia在cudnn早期版本安装提到了需要zlib,后来的安装指导没了,也不知道需不需要,在google搜zlib winimage出来官网,下载win64版本的按照要求放到cudnn对应的目录下。

该做的都做了,我多次关闭anaconda再重开反复测试依旧是[ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126。简直令人万念俱灰,大约凌晨1点多,我测试了网友的办法卸载了rembg再安装rembg[gpu]居然神奇的解决了,今天定睛一看居然22年10月就有相关的问题了。

2024-7-8更新:

在我发布成功运行后的消息并质疑运行速度时,开发人员立刻跟进回复了!我的第一次成功运行用时15分钟,而他说理论上只要2分钟即可,并指出了我的运行在cpu上,onnxruntime-gpu没有正确安装。

后来我根据网上的提示用import onnxruntime onnxruntime.get_device()测试了下,果然是cpu,这并不奇怪,因为是我自己根据网上提示把onnxruntime-gpu删除了,有这个模块的情况下会提示[ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126。后来开发者又继续跟进,提示我把load_onnx.py中的TensorrtExecutionProvider注释掉。我试着做了依旧是同样的报错(这说明应该不是tensorrt安装配置问题),然后我把onnxruntime-gpu从默认的1.18.1版本降到1.17.1版本,不报错LoadLibrary failed with error 126了,但是运行速度十分慢,大约需要半小时才能生成一个模型。

后来我发现onnxruntime-gpu 1.17.1适配的tensorrt版本是TensorRT-8.6.1.6,我重新下载tensorrt取消了TensorrtExecutionProvider的注释,然后报错,网上鲜有相关的信息,这让我折腾了两天搞到凌晨,作者再次提示onnx用于x4超分辨率,需要8gb显存,完整项目需要18gb显存。

我试着注释掉load_onnx.py中的代码,并不成功,这显然逻辑不太对,或者说太草率了,除非大改里面的逻辑要么是在整个代码运行过程中禁止调用x4超分这一块。直到周六也就是前天,我借助chatgpt,对整个程序从127.0.0.1启动开始的每一步运行做监控,查看5次读条分别对应哪些步骤,继而锁定调用x4超分的部分,修改它。最终我成功锁定到调用x4超分的run_sr_fast在multiview_inference.py的geo_reconstruct函数中,img_list = [front_pil] + run_sr_fast(refined_rgbs[1:])把这句的run_sr_fast函数去掉即可,然后修正下面array的resize统一512,512。再次成功测试生成模型只要2分钟,且模型质量没问题!

在后续的测试中我发现成功用2分钟生成mesh后紧接着再次执行任务,耗时会变长,就好像刚刚跑完3公里、5公里需要休息休息一样。是显存、内存、cpu占用还未释放?暂时不清楚,这个项目中除开load_onnx之外还有别处用到tensorrt吗?cuda用于哪些部分逻辑的加速?这些都没有深入研究,再搞下去有些不太合适了吧?毕竟主业是建筑装饰上,我原本的计划是接下来每天抽些时间解读unique3d的代码用于优化速度,目前看来暂时没必要了,能用就行嘛。最多就是搞清楚为啥连续生成会大幅降速,另外启动unique3d会使mumu模拟器自动退出,好像blender也会因此卡住,第二次测试中blender虽然没卡住但是操作时变得比较卡(单个50万面模型)。后来我又测试了几次,主要是第三段读条normal占用时间比较多,长的时候需要5分钟左右,无论是关闭终端重启还是结束本次gradio重启gradio都一样。又一次测试中证实unique3d运行可能会卡掉blender,另外127.0.0.1:7860执行完一次后保持待机,有时候会发生没响应的情况,原因暂时不明。后续测试发现速度掉的更多,去到了8-10分钟,第二段读条refined_rgbs时长来到了2分钟,normal则到了8分钟左右。不过修改后的unique3d运行时至少不会出现网页浏览、操作卡机。基本证实手动关闭anaconda终端再重启可以在一定程度上提速,应该和释放显存、cpu、内存有关系,具体就暂时不深究了,总之若是自己本地生成么注意重启终端。

2024-7-17-理想国译丛娜塔莎之舞kimi人工智能阅读总结 2024-6-21-多个ai工具组合使用构造建筑设计参考思路

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×