【python】动漫人脸检测算法汇总(lbp+mlp+hog+ssd)
不同算法检测结果对比图
文章目录
- 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)相关推荐
- GitHub动漫人脸检测项目lbpcascade animeface
GitHub动漫人脸检测项目lbpcascade animeface GitHub开源项目 动漫人脸检测 环境需求 使用说明 GitHub开源项目 https://github.com/nagadom ...
- 【深度学习】卡通动漫人脸检测
此文主要记录一些论文和博客的观点 难点 相比于人脸较为固定的高宽比,动漫人脸则夸张地多,卡通人脸中大约有10%的比例大于2.0或小于0.5: 没有较为统一的特征,人类形象.动植物形象.机甲甚至怪物形象 ...
- 动漫人脸识别技术及数据集介绍
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 看过的动漫太多,以至于认角色时有点脸 ...
- Python:实现费马检测算法(附完整源码)
Python:实现费马检测算法 def bin_exp_mod(a, n, b):# mod bassert not (b == 0), "This cannot accept modulo ...
- PyTorch实现SRGAN——动漫人脸超分辨率
文章目录 1. 数据集介绍 2. SRGAN模型的构建 3. 数据读取 4. 损失函数构建 5. 模型训练 6. 测试模型 全部代码: GitHub 1. 数据集介绍 使用的是一个动漫人脸数据集,完整 ...
- python 异常点检测 cook距离_异常检测算法汇总
本文来自:https://github.com/Albertsr 第一部分:无监督异常检测 1. 算法 1.1 孤立森林(Isolation Forest) 算法论文: Isolation Fores ...
- Python实战案例,图像识别技术OpenCV,Python实现猫脸检测
开发工具 Python版本:3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 简单地讲一讲H ...
- 异常检测/离群点检测算法汇总
不存在普遍意义上的最优模型,不过有些模型的表现一直不错,建议优先考虑.对于大数据量和高纬度的数据集,Isolation Forest算法的表现比较好.小数据集上,简单算法KNN和MCD的表现不错. 模 ...
- 史上最全综述:3D目标检测算法汇总!
来源:自动驾驶之心 本文约16000字,建议阅读10+分钟 本文将演示如何通过阈值调优来提高模型的性能.本文的结构安排如下:首先,第2节中介绍了3D目标检测问题的定义.数据集和评价指标.然后,我们回顾 ...
最新文章
- 独家 | 图解BiDAF中的单词嵌入、字符嵌入和上下文嵌入(附链接)
- JAVA常见算法题(三十)
- jQuery遍历函数总结
- android将发送短信写入发件箱
- Oracle错误:ORA-27121: unable to determine size of shared memory segment
- ef mysql db first_Net Core使用EF之DB First
- (237)Vivado工程编译时间过长原因总结
- 斯坦福 CS224n 中文笔记整理活动 | ApacheCN
- Java基础学习总结(48)——Java 文档注释
- iOS 应用的启动流程和优化详解
- 2021-05-11
- java 实现小米商城系统
- i = i++ 计算过程还不会?C/C++ 的输出语句与Java 有何不同?
- 关于条形码,你知道多少?
- 网站被劫持的解决方案、网站被劫持怎么办、网站被劫持有什么解决办法
- torch模块常用方法总结
- 【MCU】基于STM32CubeMX定时器中断实现LED闪烁
- 前端基础--JavaScript
- SQL Server 2017的Linked Server配置触发的bug“Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION”...
- Win10获取C盘所有权限,所有者TrustedInstaller 变更administrators【强行更改权限有风险,请谨慎使用,初次更改后windows建就打不开开始栏了】
热门文章
- 查找Active Directory域账号频繁锁定的原因
- 创建用户定义的数据类型
- iOS开发关闭暗黑模式
- html中js隐藏div的高度,js如何获取div(ul li)元素的宽度和高度(包括width/height和CSS的宽度和高度)...
- 1000行代码写小游戏(终)
- 韩顺平零基础30天学会Java【章7 面向对象编程(中级)】
- 前端React教程第三课 数据是如何在 React 组件之间流动
- Python利用OpenCV去除图片水印
- 月份加日期前面用on还是in_英语句子日期、月份和星期前面各应该加in还是on?如题.可以的话,帮...-星期前面用on还是in-英语-郑谒牡同学...
- mysql 基本语句