本周文件交换选择

我们最好的用户反馈

深度学习人脸检测

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

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

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

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

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

这就引出了今天的精选。

犹斯丁的提交工具多任务级联卷积网络(MTCCN)解决人脸检测问题。有选择是件好事;内置模型则不然总是工作:

请注意,在这两种情况下都有大量的假阳性。

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

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

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

持有Xs = landmarks(:,:, 1);Ys = landmarks(:,:, 2);Ii = 1:大小(xs, 1)Jj = 1:size(xs, 2) 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アカウントにサインインするか新しいMathWorksアカウントを作成します。