如何加速dlib中的反序列化功能 我使用一个C++版本的DLIB来提取图像中的面部标志的位置。我想减少执行时间。现在,运行一个已编译的文件并在单个图像上检测地标大约需要2.5秒

如何加速dlib中的反序列化功能 我使用一个C++版本的DLIB来提取图像中的面部标志的位置。我想减少执行时间。现在,运行一个已编译的文件并在单个图像上检测地标大约需要2.5秒,c++,performance,gcc,computer-vision,dlib,C++,Performance,Gcc,Computer Vision,Dlib,经过分析,我发现主要的瓶颈是反序列化函数,该函数获取指向形状预测器的路径并将此文件加载到形状预测器对象。此功能需要1.5秒 下面是代码片段 shape_predictor sp; deserialize("shape_predictor_68_face_landmarks.dat") >> sp; 我想知道是否有办法加速反序列化功能。瓶颈来自读取硬盘驱动器。反序列化之后,您是在缓存数据,还是在循环的每次迭代中都进行反序列化?确保缓存结果。如果是这种情况,DLIB中可能会有一些多线

经过分析,我发现主要的瓶颈是反序列化函数,该函数获取指向形状预测器的路径并将此文件加载到形状预测器对象。此功能需要1.5秒

下面是代码片段

shape_predictor sp;
deserialize("shape_predictor_68_face_landmarks.dat") >> sp; 

我想知道是否有办法加速反序列化功能。

瓶颈来自读取硬盘驱动器。反序列化之后,您是在缓存数据,还是在循环的每次迭代中都进行反序列化?确保缓存结果。如果是这种情况,DLIB中可能会有一些多线程选项用于此目的。你可以做的其他事情是得到一个更快的硬盘驱动器或得到一个固态驱动器。最后一件事是将*.dat文件中的数据存储在内存数据库(如memcached)或基于web服务的数据库(如dynamodb)中,并编写自己的自定义逻辑以始终从该数据库中提取数据。