chineseocr / darknet-ocr

darknet text detect and darknet cnn ocr
MIT License
1.14k stars 287 forks source link

部分图片一识别就奔溃。CUDA Error: invalid configuration argument #59

Open deeroad opened 4 years ago

deeroad commented 4 years ago

CUDA Error: invalid configuration argument python3: ./src/cuda.c:36: check_error: Assertion `0' failed. 大部分图片都正常,只有部分图片会这样,一识别就崩溃。 如下图片: https://i.niupic.com/images/2020/02/13/6qpg.png

deeroad commented 4 years ago

已经找到原因: 是因为图片分割(detect_lines)后,如果被分割的图片宽度小于一定的数值,predict_image就会崩溃,应该是跟训练有关系。解决也很简单,做个判断就可以。darknet.py 主动抛个异常,其它地方捕获一下就行了。 ` def array_to_image(image): boxed_image = np.array(image) boxed_image = np.array(cv2.split(boxed_image)) c = boxed_image.shape[0] h = boxed_image.shape[1] w = boxed_image.shape[2] if w < 50: raise Exception("width not supported")

image = boxed_image.flatten()
data = c_array(c_float, image)
im = IMAGE(w, h, c, data)
return im`
junthy-me commented 4 years ago

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

wwzh2015 commented 4 years ago

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

win10系统无法运行这个项目,感觉有点鸡肋

junthy-me commented 4 years ago

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

win10系统无法运行这个项目,感觉有点鸡肋

我在ubuntu下运行遇到了问题,请问能请教一下你吗?😥运行ocr.py遇到 python:段错误(核心已转储)。如果方便的话,能加一下我的QQ吗?QQ:1126654139,验证问题答案:胡军涛。万分感谢,真的比较着急。🙏

deeroad commented 4 years ago

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

win10系统无法运行这个项目,感觉有点鸡肋

我是Ubuntu 18.4,目前正常,Win10 cpu模式识别结果乱码。

chenzeng11 commented 4 years ago

您好,我是在colab上运行,也是好多图片一跑就崩溃。根据您的解答确实可以避免崩溃,但是我没太搞明白为什么w需要>=50,我看代码里只是判断了w<8,而且h的大小也只是32.

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

win10系统无法运行这个项目,感觉有点鸡肋

我是Ubuntu 18.4,目前正常,Win10 cpu模式识别结果乱码。

chenzeng11 commented 4 years ago

您好,我是在colab上运行,也是好多图片一跑就崩溃。根据您的解答确实可以避免崩溃,但是我没太搞明白为什么w需要>=50,我看代码里只是判断了w<8,而且h的大小也只是32.

@deeroad 你好,请问你是在linux环境下还是在windows环境下运行的。

win10系统无法运行这个项目,感觉有点鸡肋

我是Ubuntu 18.4,目前正常,Win10 cpu模式识别结果乱码。

崩溃的问题解决了,我的解决方案是在读完图片后进行了旋转。所以,可能是因为照片在旋转后无法进行识别(旋转180度没有尝试)。

qianlongzju commented 4 years ago

@deeroad 大佬,你这个是怎么定位出来的,我解决了这个问题,但又有相似情况,不知道定位的步骤,直接c代码就出问题。

jiojio1973 commented 4 years ago

ocr.py 里有outW = int(np.ceil(w/4)-3),这也是网络输出特征的outW,如果输入小于13,则输出特征图的宽为0,会报错;所以把84行 if w<8: 改为 w<13即可。

chenzeng11 commented 3 years ago

@jiojio1973 ,不只是在outW那儿报错,当w=8时,在res = predict_image(ocrNet, im)这一句会输出一个 python: ,然后就退出了