为啥 dlib 面部地标检测器会抛出 RuntimeError?

Posted

技术标签:

【中文标题】为啥 dlib 面部地标检测器会抛出 RuntimeError?【英文标题】:Why dlib facial landmark detector throws RuntimeError?为什么 dlib 面部地标检测器会抛出 RuntimeError? 【发布时间】:2017-07-31 18:14:52 【问题描述】:

我对 python 编程很陌生。我正在尝试运行 dlib 面部标志检测器的示例代码。不幸的是,我收到以下错误:

Traceback (most recent call last):
  File "facial_landmarks.py", line 109, in <module>
    predictor = dlib.shape_predictor(predictor_path)
RuntimeError: Error deserializing object of type long
   while deserializing a dlib::matrix

有人知道如何解决吗?

【问题讨论】:

仅查看错误非常困难。为什么不贴出相关代码? 你解压了它试图加载的模型文件吗? 【参考方案1】:

dlib 的形状预测器缺失:

    下载并提取模型进行形状预测(约 60 MB):

    wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
    bzip2 -dk shape_predictor_68_face_landmarks.dat.bz2
    

    将预测器文件路径作为第一个参数传递给您的 Python 脚本:

    python facial_landmarks.py shape_predictor_68_face_landmarks.dat faces/*.jpg
    

可以在此处找到有关如何使用 dlib 进行面部标志检测的精彩演练:http://www.learnopencv.com/facial-landmark-detection/

【讨论】:

【参考方案2】:

此消息将由以下原因之一引起:

predictor_path 指向的文件损坏或丢失 您忘记解压缩 predictor_path 指向的文件 底层文件系统的一些其他问题无法将数据正确传送到 dlib.shape_predictor(例如磁盘损坏、文件权限、符号链接问题)

更详细地看一下 dlib 示例本身: http://dlib.net/face_landmark_detection.py.html

【讨论】:

以上是关于为啥 dlib 面部地标检测器会抛出 RuntimeError?的主要内容,如果未能解决你的问题,请参考以下文章

使用 dlib 检测眼睛地标

有没有办法在使用 dlib 检测面部标志后选择面部的特定点?

dlib的人脸地标检测程序中如何获取点坐标位置?

使用 Dlib 进行地标检测期间的 Boost.Python.ArgumentError

给定 dlib 的 68 点面部标志,确定它们有多好

地标检测与人脸识别