Dlib cuda 人脸检测 .dat 模型在 GTX 1650 上崩溃,而在许多其他 gpu 设备上表现良好
Posted
技术标签:
【中文标题】Dlib cuda 人脸检测 .dat 模型在 GTX 1650 上崩溃,而在许多其他 gpu 设备上表现良好【英文标题】:Dlib cuda face detection .dat model crash on GTX 1650 while being good on many other gpu devices 【发布时间】:2021-01-07 08:14:58 【问题描述】:我得到了与下面相同的 Dockerfile 和相同的代码,但结果不同
一个给出正确的打印输出,而另一个在没有任何消息的情况下崩溃!!
代码
import dlib
import cv2
print(dlib.__version__) # 19.17.99, the same
cnn_face_detector = dlib.cnn_face_detection_model_v1('mmod_human_face_detector.dat')
img = cv2.imread("1.jpg")
rects = cnn_face_detector(img, 1) # one crashes every time on this line
print("Number of faces detected: ".format(len(rects)))
for i, d in enumerate(rects):
face = d.rect
print("Detection : Left: Top: Right: Bottom: Confidence: ".format(i, face.left(), face.top(), face.right(), d.rect.bottom(), d.confidence))
cv2.rectangle(img, (face.left(),face.top()), (face.right(),face.bottom()), (0,0,255),2)
运行命令
nvidia-docker run -it --rm -w="/usr/src/app" -v $(pwd):/usr/src/app myDocEnv test.py
正确的输出
19.17.99
Number of faces detected: 1
Detection 0: Left: 245 Top: 100 Right: 415 Bottom: 269 Confidence: 1.079284906387329
输出不正确
19.17.99
唯一的区别
它们之间唯一的区别是GPU硬件设备
崩溃的人使用 GeForce GTX 1650 而在P620、1050Ti
上运行无故障【问题讨论】:
crashes without any message
表示您没有在脚本中添加任何错误处理或日志记录代码,并且控制台输出不会记录在任何地方。也许你忘记了一些驱动程序?或者输入图像不是您期望的?有 3 条语句可以在你的脚本中抛出
感谢您的回复!我很确定 img 不是 None ,即使使用 try-catch print(img.shape') try: print("happend here!") ' rects = cnn_face_detector(img, 1) # one crashes every time on this line
' print("nothing printed out")
' print("Number of faces detected: ".format(len(rects)))
except Exception as e:
' print(e)
我什么也得不到
【参考方案1】:
RUN mkdir -p /usr/local/cuda/nccl/lib && \
ln -sf /usr/lib/x86_64-linux-gnu/libnccl.so.2 /usr/local/cuda/nccl/lib/ &&\
ln -sf /usr/lib/x86_64-linux-gnu/libcudnn.so.7 /usr/local/cuda/lib64/
RUN apt-get update && apt-get install -y --no-install-recommends \
libcublas10 \
libcublas-dev
RUN apt install -y libprotobuf-dev protobuf-compiler
RUN export CUDA_cublas_LIBRARY=/usr/local/cuda-10.2/targets/x86_64-linux/lib/libcublas.so
添加这几件事解决了我的问题
【讨论】:
以上是关于Dlib cuda 人脸检测 .dat 模型在 GTX 1650 上崩溃,而在许多其他 gpu 设备上表现良好的主要内容,如果未能解决你的问题,请参考以下文章
win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)