Dlib 是一个 C++ 工具库,包含机器学习算法,图像处理,网络及一些工具类库。在工业界,学术界都得到广泛使用。接下来的几篇文章中,我将会分享 dlib
库在人脸识别中的应用。这篇文章,将介绍dlib
库的安装及基础使用。
安装
推荐使用编译源码的方式安装dlib库。我们使用 dlib-19.16
版本进行说明,首先下载源码.
curl https://github.com/davisking/dlib/archive/v19.16.zip -o dlib-19.16.zip
unzip dlib-19.16.zip
我们将通过使用 python
使用 dlib 库,安装之前,电脑上应安装 python。
在编译之前,然后确保电脑系统上,有 CMake 和 C++
编译环境。
Linux 操作系统下,可通过安装包管理工具 apt-get
或者yum
安装对应的 cmake
及 g++
。e.g.
sudo apt-get install cmake
sudo apt-get install gcc g++
Mac OS X 上,可以通过 brew
安装 cmake
及 g++
.
Windows 操作系统,到 CMake 官网下载页下载对应的安装包,如 Win 64 版本的安装包。C++ 编译环境,建议安装 Visual Studio 2017
。
下载源依赖之后,进入 dlib 源码目录,进行编译.
cd dlib-19.16
python3 setup.py install
安装完成后,验证是否安装成功
python3 -c "import dlib"
如果没有报错,则说明安装成功。
基础使用
接下来,我们将介绍 dlib
在图像处理上的基础使用。
目标检测
dlib
中的函数 find_candidate_object_locations()
能够识别指定的图片,并把可能存在目标的对象找出来。实现方法基于 Koen van de Sande 的论文 Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al.。这个方法可以快速找到候选目标的区域,我们可以使用这些区域进行后续操作。
示例代码 如下:
import dlib
image_file = 'bbt1.jpg'
img = dlib.load_rgb_image(image_file)
# Locations of candidate objects will be saved into rects
rects = []
dlib.find_candidate_object_locations(img, rects, min_size=500)
print("number of rectangles found {}".format(len(rects)))
for k, d in enumerate(rects):
print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
k, d.left(), d.top(), d.right(), d.bottom()))
代码中, 函数 load_rgb_image(...)
接受一个文件名称,然后返回 numpy 数组对象,这个作为 find_candidate_object_locations(...)
函数的输入。函数 find_candidate_object_locations(...)
第二个参数 rects
为列表,保存找到候选推向所在的区域,第三个参数 min_size
表示找到的区域大小不应该小于指定的像素值。