踩过的坑一个接一个,最后放弃在window环境下去尝试了,看到的大多有效的教程也都是ubuntu系统下的,鉴于我的电脑空间不够造了而且安双系统操作不当可能会导致本来的系统崩溃,所以干脆直接服务器租卡了,本文的环境亲测成功并且目前跑通Demo很顺利没有什么坑,记录一下仅供参考。
下面是我在win11上测试踩过的坑和做过的尝试过的解决方案,探索了有不下一个星期,尝试了30多个版本,踩坑记录多到写不过来,感兴趣的可以看看给自己找找灵感或者各位大佬发现有什么问题欢迎指出或者有解决方案的可以留言评论,感谢!
【踩坑随笔】有坑别跟!!!win11基于Tensorflow2.6GPU版跑通MaskRCNN的Demo纯小白版
【踩坑随笔】Tensorflow-GPU训练踩坑
【踩坑随笔】Mask-RCNN 报错ValueError: Input image dtype is bool. Interpolation is not defined with bool data
【踩坑随笔】error: no instance of overloaded function “atomicAdd“ matches the argument list
【踩坑随笔】MaskRCNN的Demo运行结果为No instances to display
配置并运行Demo
源码链接:https://github.com/leekunhee/Mask_RCNN.git 用git将源码clone到本地或者直接打包下载,直接在本地然后对源码进行修改,把代码里的np.bool
改成np.bool_
即可,注意不要一键替换,点进查找结果确认一下后面是否有下划线再修改,也可以直接下载我修改后的源码(含下载好的权重),CSDN这个资源绑定自动设置成VIP资源了我改不了没有VIP的可以评论留邮箱我发你。。。。
然后在服务器上配置环境,我选的设备配置是如下图,放个我用的服务器链接,我个人对比下是目前相对便宜的或者大家自行找别的也行
镜像选择如下
Tensorflow2.5.0
CUDA11.2
python3.8
然后服务器的jupyter界面,找到hy-tmp目录(别的服务器不一定叫这个,反正就是服务器提供的用户存放数据的文件夹,应该都什么tmp),然后把你修改后的代码文件压缩成zip,直接拖到服务器hy-tmp目录下,等上传的过程中可以先完成后面的依赖包安装,上传完成后在终端进入到hy-tmp目录下,然后执行解压
unzip 你的文件名.zip
安装依赖包
在终端安装下面三个包
pip install scikit-image==0.16.2 imgaug==0.4.0
pip install pycocotools
以上操作都完成就可以打开samples文件夹下的demo文件愉快的运行了,如果报错跟cv有关就按照下面的问题记录解决即可
问题记录
1. 环境报错
首次运行的时候我是正常跑通了的,但是再次运行就报错了
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
libXrender.so.1: cannot open shared object file: No such file or directory
解决方案
pip uninstall opencv-python
pip install --upgrade opencv-contrib-python opencv-contrib-python-headless
2. GPU占满GPU利用率为0
内存问题解决方案:在程序的最开始加入以下代码,动态的分配内存
# 查看可用的gpu
gpu_list = tf.config.experimental.list_physical_devices('GPU')
# 指定使用的GPU
tf.config.experimental.set_visible_devices(gpu_list[0], 'GPU')
# 指定使用的GPU上,按需分配内存
tf.config.experimental.set_memory_growth(gpu_list[0], True)
3. 训练进程挂起不继续也不报错
没有结果也没有报错,直接卡在epoch1,不报错也不继续,后台程序挂起
探索了一下问题所在,发现原因是由于开启了多线程,我查看了进程发现这个训练直接开了72个进程,但是系统的进程管理能力比较拉,搜了一下解决方案都是关于资源优化的但是我纯小白没办法一下消化,所以选择了限制进程数量,直接修改mrcnn文件夹下的model.py
中的works
,我尝试了改为0直接禁用多线程。
程序成功运行起来了,训练有了进展,但是训练过程的输出跟我在win11本地训练的过程很像,具体可以查看这篇【踩坑随笔】Tensorflow-GPU训练踩坑,怀疑结果有可能跟本地训练一样效果不好,等我测试完了来更新