无法检测卡通图像的人脸

Unable to detect faces of cartoon images

我正在尝试使用 opencv 和 python 实现一个简单的卡通人脸检测代码。虽然我使用的代码适用于人脸,但我无法使用它来检测卡通脸。有什么方法可以让它也检测卡通脸吗

import cv2
import matplotlib.pyplot as plt

imagePath = 'frame179.jpg'
cascPath = '/Users/tonystark/opencv/data/haarcascades/haarcascade_frontalface_default.xml'

faceCascade = cv2.CascadeClassifier(cascPath)
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor=1.1,
    minNeighbors=40,
    minSize=(24, 24),
    flags=cv2.CASCADE_SCALE_IMAGE
)

图像是human for which I am able to get the location of the face, whereas for cartoon,我无法获取人脸的位置。

提前致谢!

Haar 级联仅用于检测一个特定的事物,在您的情况下,它已被训练为仅检测人脸。您将不得不创建另一个 haar 级联来检测卡通面孔。

制作一个可以参考这个视频-https://www.youtube.com/watch?v=jG3bu0tjFbk

因此,由于卡通图像与人类的图像非常不同,我们需要为它们分别从头开始训练模型。 我实现了一个YOLO模型,并训练了它,结果非常好!

labelImg可用于准备数据集。

我引用了这个博客:Darknet YOLO using OpenCV to create my own YOLO detector in which the github repository Darknet YOLO 是克隆和修改的。

编辑: 我的 project on github

其实我同意以上所有评论。没有针对 catroon 对象的现成解决方案,我已经尝试了很多模型但没有任何效果(ORB、Haar Cascade、SuperPixel 等)并且没有 AutoML 解决方案(来自 Google 或 Amazon)也不起作用。只有一种方法可以在卡通对象中进行人脸识别。该解决方案是首先制作自己的标记图像数据集,然后尝试训练一些模型来检测物体。所以我选择了这种方式,结果很好,准确率91%。