【python】动漫人脸检测算法汇总(lbp+mlp+hog+ssd)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不同算法检测结果对比图


1. 写在前面

本文章是对Github上基于Python的动漫人脸检测(Anime Face Detection)算法汇总!

2. 测试样例

在这里插入图片描述

3. 测试设备

  • CPU:12 Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz
  • GPU:8 NVIDIA GeForce GTX 1080 Ti

4. 人脸检测

4.1. 基于LBP的动漫人脸检测

4.1.1. 仓库地址

https://github.com/nagadomi/lbpcascade_animeface

4.1.2. 环境配置

4.1.3. 示例代码

lbp_anime_face_detect.py

import cv2
import sys


def lbp_anime_face_detect(file_name):
    img = cv2.imread(file_name)  # 读取图片
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片灰度化
    img_gray = cv2.equalizeHist(img_gray)  # 直方图均衡化
    face_cascade = cv2.CascadeClassifier('../model/lbp_anime_face_detect.xml')  # 加载级联分类器
    faces = face_cascade.detectMultiScale(img_gray)  # 多尺度检测
    for x, y, w, h in faces:  # 遍历所有检测到的动漫脸
        img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 255), 5)  # 绘制矩形框
    cv2.imwrite(f'../result/lbp_anime_face_detect_{file_name[-5]}.jpg', img)  # 保存检测结果


if __name__ == '__main__':
    lbp_anime_face_detect(sys.argv[1])

4.1.4. 检测结果

实检漏检误检耗时
13111.20s

在这里插入图片描述

4.2. 基于MLP的动漫人脸检测

4.2.1. 仓库地址

https://github.com/nya3jp/python-animeface

4.2.2. 环境配置

  • 系统要求:仅限Linux系统
  • 依赖模块:pip install pillow opencv-python animeface

注意:如果pip install animeface报错,请下载已经编译好的animeface-1.1.0-cp37-cp37m-manylinux1_x86_64.whl.whl文件,然后使用如下命令安装:(不过用这种方法安装,强制要求Python版本是3.7

pip install animeface-1.1.0-cp37-cp37m-manylinux1_x86_64.whl

4.2.3. 示例代码

mlp_anime_face_detect.py

import cv2
import animeface
from PIL import Image
import sys


def mlp_anime_face_detect(file_name):
    img = cv2.imread(file_name)  # 读取图片
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片灰度化
    img_gray = cv2.equalizeHist(img_gray)  # 直方图均衡化
    faces = animeface.detect(Image.fromarray(img_gray))  # 人脸检测
    for each in faces:  # 遍历所有检测到的动漫脸
        temp = each.face.pos
        x = temp.x
        y = temp.y
        w = temp.width
        h = temp.height
        img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 255), 5)  # 绘制矩形框
    cv2.imwrite(f'../result/mlp_anime_face_detect_{file_name[-5]}.jpg', img)  # 保存检测结果


if __name__ == '__main__':
    mlp_anime_face_detect(sys.argv[1])

4.2.4. 检测结果

实检漏检误检耗时
170428.28s

在这里插入图片描述

4.3. 基于HOG的动漫人脸检测

4.3.1. 仓库地址

https://github.com/marron-akanishi/AFD

4.3.2. 环境配置


注意:对于Windwos系统,dlib库下载后还需要用C++编译器编译,因此你需要安装Visual Studio并配置C++编译环境,如果你已经安装并配置,那么请忽略;如果没有,请看这篇教程。

4.3.3. 示例代码

hog_anime_face_detect.py

import cv2
import dlib
import sys


def hog_anime_face_detect(file_name):
    img = cv2.imread(file_name) # 读取图片
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片灰度化
    img_gray = cv2.equalizeHist(img_gray)  # 直方图均衡化
    face_detector = dlib.simple_object_detector('../model/hog_anime_face_detect.svm') # 加载检测器
    faces = face_detector(img_gray)
    for face in faces: # 遍历所有检测到的动漫脸
        left = face.left()
        top = face.top()
        right = face.right()
        bottom = face.bottom()
        cv2.rectangle(img, (left, top), (right, bottom), (255, 0, 255), 5) # 绘制矩形框
    cv2.imwrite(f'../result/hog_anime_face_detect_{file_name[-5]}.jpg', img)  # 保存检测结果


if __name__ == '__main__':
    hog_anime_face_detect(sys.argv[1])

4.3.4. 检测结果

实检漏检误检耗时
10302.42s

在这里插入图片描述

4.4. 基于SSD的动漫人脸检测

4.4.1. 仓库地址

https://github.com/WynMew/AnimeFaceBoxes

4.4.2. 环境配置

4.4.3. 示例代码

ssd_anime_face_detect.py(代码太长,不宜展示,请下载后查看)

4.4.4. 检测结果

实检漏检误检耗时
13000.72s

在这里插入图片描述

5. 其它实验

5.1. 测试样例

在这里插入图片描述

【画师】ゆりりん【P站ID】88049646

在这里插入图片描述

【画师】Nahaki【P站ID】84678881

在这里插入图片描述

【画师】A.one【P站ID】66996496

在这里插入图片描述

【画师】D.【P站ID】68074033

5.2. 检测结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 结果分析

基于MLP的动漫人脸检测算法速度太慢,达不到实际应用的要求。而其它三个算法都各有千秋,目标图片不同,检测的精度也不同。

7. 完整代码

本文所有代码均可在Github上查看:https://github.com/XavierJiezou/anime-face-detection

8. 下步计划

9. 引用参考

https://github.com/nagadomi/lbpcascade_animeface
https://github.com/nya3jp/python-animeface
https://github.com/marron-akanishi/AFD
https://github.com/WynMew/AnimeFaceBoxes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值