chineseocr / darknet-ocr

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

跑的过程经常遇到:cuda.c:36: check_error: Assertion `0' failed. #55

Open deeroad opened 4 years ago

deeroad commented 4 years ago

python3: ./src/cuda.c:36: check_error: Assertion `0' failed. 在Ubuntu上部署了服务,长时间运行后,经常出现这个错误,有人遇到过吗? 显存不足?(部署在阿里云GPU服务器上)

deeroad commented 4 years ago

难倒是多线程调用导致的? 我是在后台程序直接POST请求的。

deeroad commented 4 years ago

应该是高并发显存不足导致的,加了一个semaphone来限制并发,可以了。

wenlihaoyu commented 4 years ago

并发要改为异步的方式

deeroad commented 4 years ago

并发要改为异步的方式 是修改darknet c代码还是在python中修改? 我测试了多次,目前的代码并发也是可以调用的,但是并发高的话显存更容易不足,所以才加了请求队列。 但是目前也还是偶尔会崩溃,所以暂时性又做了一个守护程序定时检测。 如有更好方案还望不吝赐教。

wenlihaoyu commented 4 years ago

C或者python修改都可以,python性能有一些损失,用C会更好一些。python的话,就用nginx+uwsgi的方式,修改的地方很少。要性能更好,把文字检测和识别进行拆分,识别环节并行。

panjinya commented 4 years ago

我也有这个问题,请问具体是改了哪儿?

deeroad commented 4 years ago

我也有这个问题,请问具体是改了哪儿?

改成单线程也是偶尔会崩溃,可以探讨下(QQ 1815691977)

jiojio1973 commented 4 years ago

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