在从二次元毕业之前,我们经常都会看到"这个人物是谁?哪个番的?"之类的问题,在学习图像识别的过程中,实现了一个动漫人物的识别的例子,直接使用现有的两个成熟的工具OpenCV与 ImageAI通过人物头像来进行动漫人物的识别,作为一个入门的例子。而在实际情况下,动漫人物时有撞脸的情况发生,这个时候还需要通过服饰,甚至结合知识图谱关联图像中出现的其他角色来进行更加精确的识别。下面直接上demo:

一、获取图像中的人物头像:

这里首先使用fate的一张图像作为例子,代码如下:

1、引入必要的库:

import cv2
import sys
import os.path

2、使用opencv进行动漫人物头像的提取,这里采用某宅界前辈提供的lbpcascade_animeface.xml:

    cascade = cv2.CascadeClassifier('../lbpcascade_animeface.xml') #引入xmlimage = cv2.imread('timg8.jpg', cv2.IMREAD_COLOR) #读入一幅彩色图片gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #色彩空间转换gray = cv2.equalizeHist(gray)#图像直方图均衡化faces = cascade.detectMultiScale(gray,# detector optionsscaleFactor = 1.1,minNeighbors = 5,minSize = (24, 24))

3、展示人物头像提取的结果,并把提取的头像切割下来保存在faces文件中,为后续的识别做准备:

    i = 0for (x, y, w, h) in faces:cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)face = image[y: y+h, x:x+w, :]face = cv2.resize(face,(96,96))save_filename = '%s_%d.png' % (os.path.basename(filename).split('.')[0],i)cv2.imwrite("faces/"+save_filename,face)i = i + 1cv2.imshow("AnimeFaceDetect", image)cv2.waitKey(0)cv2.imwrite("out2.png", image)

头像识别的结果:

faces文件中保持的头像:

二、使用ImageAI 进行模型的训练,由于本机性能有限,这里只做实例,对四个人物进行训练,每个人物训练集15张,测试集5张(实际使用中请使用高性能的机器进行,图像的数量也建议在400-600张左右,图像质量较好):

1、准备训练集和测试集,这里对四个角色进行训练:

2、训练代码如下:

from imageai.Prediction.Custom import ModelTraining
model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("pg") #训练的目录
model_trainer.trainModel(num_objects=4, num_experiments=50, enhance_data=True, batch_size=5, show_network_summary=True)

使用imageai工具,代码非常精简。通过ResNet模型进行训练,训练对象为4个,训练50次,每批次训练5张,生成副本并在控制台打印训练过程。

3、训练结果:

训练结果包括json和models。其中json表面了对象对象的索引值。models中是每次训练的结果,其中ex-后面的是训练的次数,0.450000是此次训练在测试集上的精准度,可以看到训练20次精准度是0.45(最大是1).

4、通过训练的结果在识别提取的头像:

from imageai.Prediction.Custom import CustomImagePrediction
import os
execution_path = os.getcwd()prediction = CustomImagePrediction()
prediction.setModelTypeAsResNet() #设置ResNet模型
prediction.setModelPath(os.path.join(execution_path, "pg/models/model_ex-040_acc-0.800000.h5"))
prediction.setJsonPath(os.path.join(execution_path, "pg/json/model_class.json"))prediction.loadModel(num_objects=4)predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "timg8_2.png"), result_count=1)for eachPrediction, eachProbability in zip(predictions, probabilities):print(eachPrediction + " : " + eachProbability)

图像预测的代码也比较简洁,设置使用ResNet模型,采用的json和h5文件(训练结果),要预测的图像和预测的结果数量,最后打印出预测的结果:

最终预测是saber的概率是85%。

以上demo采用现有的库,实现过程也比较简单。但是在实际使用中还需要注意很多影响训练和预测结果的问题,比如图像的质量,训练的次数等等。可以看到本实例采用的是model_ex-040_acc-0.800000.h5,也即是说在测试集上训练的模型的准确率也只有80%(5张正确4张),效果不是很佳。同时,为了提高提取的人物头像的质量,还可以使用图像超分辨率进行处理,提升图像细节。

基于OpenCV与 ImageAI 的动漫人物识别相关推荐

  1. 深度学习之基于DCGAN实现动漫人物的生成

    注:因为硬件原因,这次的实验并没有生成图片,但是代码应该是没有问题的,可以参考学习一下. 本次基于DCGAN实现动漫人物的生成.最终的效果可以参考大神**K同学啊**的博客.与上篇文章基于DCGAN生 ...

  2. 如何通过DCGAN实现动漫人物图像的自动生成?

    深度学习领域在近几年取得了重大突破,其中大部分研究成果都基于感知技术,计算机通过模仿人类的思维方式,感知物体.识别内容.生成对抗网络的理念由Goodfellow于2014年提出的,它的发展历程只有六年 ...

  3. 基础 | 如何通过DCGAN实现动漫人物图像的自动生成?

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 文章来源:淘系技术 背景 基于生成对抗网络(GAN)的动漫人物生成近年来兴起的动漫 ...

  4. 怎么画动漫人物的五官:耳鼻眼嘴

    今天给大家带来的是动漫人物五官教程,动漫人物五官怎么画呢?下面就是动漫人物五官的详细绘画步骤,不知道怎么画动漫人物五官的童鞋,赶紧学习吧! 动漫人物五官的画法你学会了吗?学会动漫人物五官是很重要的哦

  5. 动漫人物脸型怎么画?如何画好动漫人物脸型?

    人物脸型怎么画?对于一些新手来说,可能画人物的脸非常的困难,那是因为没有掌握一定技巧的缘故,其实,我们画动漫人物的脸部,也并不是非常困难的,当然,会者不难,难者不会,为了让大家能够更好的掌握这些画动漫 ...

  6. 网页中的动漫人物互动——看板娘

    相信我们在很多博客页面中看到过页面下面有个动漫人物的 , 人物还可以互动 , 那么这是怎么实现的呢? 实现功能很简单 , 我们只需要添加如下三行代码在html中即可 <script src=&q ...

  7. 孩子像谁软件在线测试,测试你最像哪个动漫人物官方版

    测试你最像哪个动漫人物官方版是一款趣味主打的娱乐游戏,动漫是一路陪伴我们童年成长的东西,你是否在某一个时刻去崇拜过其中的一位角色了?它会承接着你的梦想,不断的给你动力,火影之中的鸣人,以天才生自居的佐 ...

  8. HTML5期末大作业:动漫人物介绍网站设计——柯南(5页) 含报告 HTML+CSS+JavaScript dw网页设计 web网页设计与开发

    HTML5期末大作业:动漫人物介绍网站设计--柯南(5页) 含报告 HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计 ...

  9. HTML5期末大作业:动漫人物介绍网站设计——哆啦A梦(5页) HTML+CSS+JavaScript 学生动漫网页设计模板下载 哆啦A大学生HTML网页制作作品 简单漫画网页设计成品...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 游 ...

  10. HTML5期末大作业:动漫人物介绍网站设计——柯南(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 学生动漫网页设计模板下载

    HTML5期末大作业:动漫人物介绍网站设计--柯南(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材 ...

最新文章

  1. Smarty模板的基础
  2. 利用人脑神经突触进行网络模型剪枝
  3. 第三百二十七天 how can I 坚持
  4. 多个视频切换时,只改变SourceFilter,不改变Filter Graph中其他Filter的C#实现
  5. JSP页面如何调用自己写的.class文件
  6. Oracle使用startup与startup force启动的区别
  7. [05] Session概要
  8. iOS: 图解Xcode常用的快捷键
  9. 基金委通报科研诚信违规违纪案件查处情况
  10. 深度学习-参数与超参数
  11. vue js 和原生app调用回调方法问题
  12. Ant部署测试出错(关键字:Ant NoClassDefFoundError xml-apis/jar)
  13. Apache PIO 操作Excel
  14. linux时间有几个,Linux下与文件相关的几个时间的介绍
  15. 《jQuery EasyUI开发指南》——导读
  16. 想问问大家,使用qt开发的wps安装包是如何做到32位64位系统兼容的
  17. 【量化笔记】时间序列--ARCH模型及GARCH模型
  18. OkHttp简单封装
  19. JAVA——从基础学起(五)类和对象
  20. java 点名器_java随机点名器 课程设计.docx

热门文章

  1. A002-185-2531
  2. CCIE红头发讲解CCNA、CCNP视频教程
  3. 操作系统概念第三章部分作业题答案
  4. 操作系统概念第四章部分作业题答案
  5. adb工具包的安装和使用方法
  6. Citrix 桌面云 XenApp_XenDesktop_7.15 部署系列(六)配置虚拟桌面控制器
  7. 老兵戴辉:华为操作系统28年史
  8. 惠普服务器硬件检测软件吗,惠普硬件检测工具DST HP PC Hardware Diagnostics UEFI 6.8.0.0 Rev.A 使用方法...
  9. python科学计算-python科学计算
  10. Cannot load driver ‘C:\Keil_v5\ARM\Segger\JL2CM3.dll 报错解决方法。