不同算法检测结果对比图

文章目录

  • 1. 写在前面
  • 2. 测试样例
  • 3. 测试设备
  • 4. 人脸检测
    • 4.1. 基于LBP的动漫人脸检测
      • 4.1.1. 仓库地址
      • 4.1.2. 环境配置
      • 4.1.3. 示例代码
      • 4.1.4. 检测结果
    • 4.2. 基于MLP的动漫人脸检测
      • 4.2.1. 仓库地址
      • 4.2.2. 环境配置
      • 4.2.3. 示例代码
      • 4.2.4. 检测结果
    • 4.3. 基于HOG的动漫人脸检测
      • 4.3.1. 仓库地址
      • 4.3.2. 环境配置
      • 4.3.3. 示例代码
      • 4.3.4. 检测结果
    • 4.4. 基于SSD的动漫人脸检测
      • 4.4.1. 仓库地址
      • 4.4.2. 环境配置
      • 4.4.3. 示例代码
      • 4.4.4. 检测结果
  • 5. 其它实验
    • 5.1. 测试样例
    • 5.2. 检测结果
  • 6. 结果分析
  • 7. 完整代码
  • 8. 下步计划
  • 9. 引用参考

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. 环境配置

  • 依赖模块:pip install opencv-python
  • 检测模型:lbp_anime_face_detect.xml

4.1.3. 示例代码

lbp_anime_face_detect.py

import cv2
import sysdef 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. 检测结果

实检 漏检 误检 耗时
13 1 1 1.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 sysdef 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.posx = temp.xy = temp.yw = temp.widthh = temp.heightimg = 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. 检测结果

实检 漏检 误检 耗时
17 0 4 28.28s

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

4.3.1. 仓库地址

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

4.3.2. 环境配置

  • 依赖模块:pip install opencv-python dlib
  • 检测模型:hog_anime_face_detect.svm

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

4.3.3. 示例代码

hog_anime_face_detect.py

import cv2
import dlib
import sysdef 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. 检测结果

实检 漏检 误检 耗时
10 3 0 2.42s

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

4.4.1. 仓库地址

https://github.com/WynMew/AnimeFaceBoxes

4.4.2. 环境配置

  • 依赖模块:pip install opencv-python numpy torch
  • 检测模型:ssd_anime_face_detect.pth

4.4.3. 示例代码

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

4.4.4. 检测结果

实检 漏检 误检 耗时
13 0 0 0.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. 下步计划

  • 基于Faster-RCNN的动漫人脸检测:https://github.com/qhgz2013/anime-face-detector/
  • 基于CNN的轻量级的动漫人脸检测:https://github.com/ShiqiYu/libfacedetection
  • 其它相关项目:https://github.com/search?p=1&q=anime+face+detection&type=Repositories

9. 引用参考

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

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

  1. GitHub动漫人脸检测项目lbpcascade animeface

    GitHub动漫人脸检测项目lbpcascade animeface GitHub开源项目 动漫人脸检测 环境需求 使用说明 GitHub开源项目 https://github.com/nagadom ...

  2. 【深度学习】卡通动漫人脸检测

    此文主要记录一些论文和博客的观点 难点 相比于人脸较为固定的高宽比,动漫人脸则夸张地多,卡通人脸中大约有10%的比例大于2.0或小于0.5: 没有较为统一的特征,人类形象.动植物形象.机甲甚至怪物形象 ...

  3. 动漫人脸识别技术及数据集介绍

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 看过的动漫太多,以至于认角色时有点脸 ...

  4. Python:实现费马检测算法(附完整源码)

    Python:实现费马检测算法 def bin_exp_mod(a, n, b):# mod bassert not (b == 0), "This cannot accept modulo ...

  5. PyTorch实现SRGAN——动漫人脸超分辨率

    文章目录 1. 数据集介绍 2. SRGAN模型的构建 3. 数据读取 4. 损失函数构建 5. 模型训练 6. 测试模型 全部代码: GitHub 1. 数据集介绍 使用的是一个动漫人脸数据集,完整 ...

  6. python 异常点检测 cook距离_异常检测算法汇总

    本文来自:https://github.com/Albertsr 第一部分:无监督异常检测 1. 算法 1.1 孤立森林(Isolation Forest) 算法论文: Isolation Fores ...

  7. Python实战案例,图像识别技术OpenCV,Python实现猫脸检测

    开发工具 Python版本:3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 简单地讲一讲H ...

  8. 异常检测/离群点检测算法汇总

    不存在普遍意义上的最优模型,不过有些模型的表现一直不错,建议优先考虑.对于大数据量和高纬度的数据集,Isolation Forest算法的表现比较好.小数据集上,简单算法KNN和MCD的表现不错. 模 ...

  9. 史上最全综述:3D目标检测算法汇总!

    来源:自动驾驶之心 本文约16000字,建议阅读10+分钟 本文将演示如何通过阈值调优来提高模型的性能.本文的结构安排如下:首先,第2节中介绍了3D目标检测问题的定义.数据集和评价指标.然后,我们回顾 ...

最新文章

  1. 独家 | 图解BiDAF中的单词嵌入、字符嵌入和上下文嵌入(附链接)
  2. JAVA常见算法题(三十)
  3. jQuery遍历函数总结
  4. android将发送短信写入发件箱
  5. Oracle错误:ORA-27121: unable to determine size of shared memory segment
  6. ef mysql db first_Net Core使用EF之DB First
  7. (237)Vivado工程编译时间过长原因总结
  8. 斯坦福 CS224n 中文笔记整理活动 | ApacheCN
  9. Java基础学习总结(48)——Java 文档注释
  10. iOS 应用的启动流程和优化详解
  11. 2021-05-11
  12. java 实现小米商城系统
  13. i = i++ 计算过程还不会?C/C++ 的输出语句与Java 有何不同?
  14. 关于条形码,你知道多少?
  15. 网站被劫持的解决方案、网站被劫持怎么办、网站被劫持有什么解决办法
  16. torch模块常用方法总结
  17. 【MCU】基于STM32CubeMX定时器中断实现LED闪烁
  18. 前端基础--JavaScript
  19. SQL Server 2017的Linked Server配置触发的bug“Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION”...
  20. Win10获取C盘所有权限,所有者TrustedInstaller 变更administrators【强行更改权限有风险,请谨慎使用,初次更改后windows建就打不开开始栏了】

热门文章

  1. 查找Active Directory域账号频繁锁定的原因
  2. 创建用户定义的数据类型
  3. iOS开发关闭暗黑模式
  4. html中js隐藏div的高度,js如何获取div(ul li)元素的宽度和高度(包括width/height和CSS的宽度和高度)...
  5. 1000行代码写小游戏(终)
  6. 韩顺平零基础30天学会Java【章7 面向对象编程(中级)】
  7. 前端React教程第三课 数据是如何在 React 组件之间流动
  8. Python利用OpenCV去除图片水印
  9. 月份加日期前面用on还是in_英语句子日期、月份和星期前面各应该加in还是on?如题.可以的话,帮...-星期前面用on还是in-英语-郑谒牡同学...
  10. mysql 基本语句