breezedeus / CnSTD

CnSTD: 基于 PyTorch/MXNet 的 中文/英文 场景文字检测(Scene Text Detection)、数学公式检测(Mathematical Formula Detection, MFD)、篇章分析(Layout Analysis)的Python3 包
https://www.breezedeus.com/article/cnocr
Apache License 2.0
674 stars 106 forks source link

推理设置GPU时报错 #3

Closed kevinconan closed 3 years ago

kevinconan commented 4 years ago

报错信息为 CachedOp requires all inputs to live on the same context. But data is on gpu(0) while _mobilenetv30_first-3x3-conv-conv2d_weight is on cpu(0)

kevinconan commented 4 years ago

在多个平台测试过,均有问题,Window下MXNet-cu100版本,Jetson TX2 下是ubuntu18.04+cuda10.0,报错也一模一样

breezedeus commented 4 years ago

看起来是个bug

yerui2018 commented 4 years ago

我在ubuntu下的cuda90下 也有报错 不过没记录报错的信息

kevinconan commented 4 years ago

我初步定位了下问题,先修改了部分向量的初始化代码,根据context初始化了,然后发现仍然有问题,是在feature.py,异常抛出在net.py的hybrid_forward函数,发现是向FPNFeatureExpander输入的的时候报错了,也就是self.feature(x)那一行,确定输入的x的context是在GPU中。但是没想通为什么这个在初始化Feature的时候用的CPU,参数都传的没问题。后来感觉应该可以copy到GPU的,但是对MXNet实在是不熟悉。直接在FPNFeatureExpander的init函数里调用net.collect_params().reset_ctx()是不行的,提示我网络没有初始化。到这里我就放弃了QAQ~~

liyandongpy commented 4 years ago

image GPU下推理会报错,CPU正常

breezedeus commented 4 years ago

https://github.com/breezedeus/cnocr/issues/117 解决方法

breezedeus commented 4 years ago

发布了 v0.1.1,修复此问题