本周文件交换精选

我们最好的用户意见书

基于深度学习的人脸检测

布雷特本周的“选择”是MTCNN人脸检测,通过贾斯汀Pinkney他是我们咨询部的同事。

从2012年开始,我们就提供了使用MathWorks工具检测人脸的功能。我们的面部探测器,就在计算机视觉的工具箱,依靠Viola-Jones算法,并且非常容易实现:

img = imread (“visionteam.jpg”);imshow(img) faceDetector = vision.CascadeObjectDetector();bboxes = step(faceDetector, img);图imshow (img)标题(使用级联对象检测器的人脸检测draw矩形():size(bboxes, 1)“位置”bboxes (ii),“facealpha”, 0);结束

(可调的)级联对象检测器的默认模型使用分类和回归树分析(CART)“Haar-like”特性.正如你在上面看到的,这些模型通常工作得很好。此外,你可以使用“FrontalFaceLBP”模型来检测人脸“局部二进制模式。”这两种模型都能很好地检测上面的图像,以检测正面朝上的人脸。

你可以使用CascadeObjectDetector调用其他的检测模型,包括'UpperBody', 'EyePair'(大的和小的),'LeftEye'和' righye '(两个选项),'ProfileFace', 'Mouth'和'Nose'。(另外,你可以随时训练你自己的!

这让我想到了今天的《选择》。

贾斯汀的提交实现多任务级联卷积网络(MTCCN)解决人脸检测问题。有选择是好事;内置的模型没有总是工作:

请注意,在这两种情况下,都存在大量的误报。

相比之下,MTCCN模型在这个图像上表现得非常好:

[bboxes, scores, landmarks] = mtcnn.detectFaces(img);图imshow (img)标题(“MTCNN”draw矩形():size(bboxes, 1)“位置”bboxes (ii),“facealpha”, 0);结束

我欣赏的另一件事是,面部地标自动提供作为MTCNN模型的输出:

持有x = landmarks(:,:, 1);Ys =地标(:,:,2);Ii = 1:size(xs, 1)plot(xs(ii, Jj), ys(ii, Jj),“r”。结束结束

MTCNN模型似乎也相当稳健;它甚至对“摄影师”的图像也有效,尽管图像中的脸显然不是朝前的。(包括视力。CascadeObjectDetector面部检测器在图像上失败,至少在默认参数下失败。)

我还应该注意到,虽然内置的工具箱函数可以适应RGB或灰度图像,但MTCNN检测器只对RGB图像进行操作。但这是个很容易解决的问题:

如果Size (img, 3) == 1 img = repmat(img, [1 1 3]);结束

谢谢,贾斯汀!这是对我们的检测工具的一个很好的补充!

一如既往,我欢迎你想法和意见




MATLAB®R2021a发布

|
  • 打印
  • 发送电子邮件

评论

请点击留下评论在这里登录到你的MathWorks帐户或创建一个新的。