基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(一)

目录

  • 前言
  • 总体设计
    • 系统整体结构图
    • 系统流程图
  • 运行环境
    • 爬虫
      • 1.安装Anaconda
      • 2.安装Python3.6
      • 3.更换pip源
      • 4.安装Python包
      • 5.下载phantomjs
    • 模型训练
      • 1.安装依赖
      • 2.安装lmageAl
    • 实际应用
      • 1.前端
      • 2.安装Flask
      • 3.安装Nginx
  • 相关其它博客
  • 工程源代码下载
  • 其它资料下载


在这里插入图片描述

前言

本项目通过爬虫技术获取图片,利用OpenCV库对图像进行处理,识别并切割出人物脸部,形成了一个用于训练的数据集。通过ImageAI进行训练,最终实现了对动漫人物的识别模型。同时,本项目还开发了一个线上Web应用,使得用户可以方便地体验和使用该模型。

首先,项目使用爬虫技术从网络上获取图片。这些图片包含各种动漫人物,其中我们只对人物脸部进行训练,所以我们会对图像进行处理,并最终将这些图像将作为训练数据的来源。

其次,利用OpenCV库对这些图像进行处理,包括人脸检测、图像增强等步骤,以便准确识别并切割出人物脸部。这一步是为了构建一个清晰而准确的数据集,用于模型的训练。

接下来,通过ImageAI进行训练。ImageAI是一个简化图像识别任务的库,它可以方便地用于训练模型,这里用于训练动漫人物的识别模型。

最终,通过项目开发的线上Web应用,用户可以上传动漫图像,系统将使用训练好的模型识别图像中的动漫人物,并返回相应的结果。

总的来说,本项目结合了爬虫、图像处理、深度学习和Web开发技术,旨在提供一个便捷的动漫人物识别服务。这对于动漫爱好者、社交媒体平台等有着广泛的应用前景。

总体设计

本部分包括系统整体结构图和系统流程图。

系统整体结构图

系统整体结构如图所示。

在这里插入图片描述

系统流程图

系统流程如图所示。

在这里插入图片描述

运行环境

本部分包括爬虫、模型训练及实际应用运行环境。

爬虫

安装Python3.6以上及Selenium3.0.2版本。

1.安装Anaconda

使用Anaconda管理Python环境。在Windows环境下载Anaconda完成安装,下载地址为https://www.anaconda.com/。

验证安装。单击菜单【开始】→Anaconda3(64-bit)→Anaconda Navigator,若可以成功启动Anaconda Navigator则说明安装成功。

2.安装Python3.6

打开计算机的cmd命令行窗口,新建Python3.6环境,名称为TensorFlow:

conda create --name tensorflow python=3.6

激活环境:

conda activate tensorflow

3.更换pip源

由于网络问题,需要更换Python包管理工具pip的下载源来提高下载速度。按Win+R组合键打开用户目录%HOMEPATH%,在此目录下创建pip文件夹以及pip.ini文件,成功更换pip的源为清华镜像。内容如下:

[global]
timeout = 60000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

4.安装Python包

新建一个.txt文件并命名为crawler_requirements.txt,写入如下内容:

future==0.16.0
futures==3.0.5
requests==2.12.1
selenium==3.0.2

在启动的Python环境cmd窗口输入:

pip install -r crawler_requirements.txt

即可安装爬虫所需要的包。

5.下载phantomjs

Selenium是用于Web应用程序测试的工具,其测试直接在浏览器中运行,需要使用phantomjs。在Linux环境下的phantomjs是完整的,可以直接使用pip安装使用,但是在Windows环境下需要下载phantomjs.exe文件来引用。新建bin文件夹用于存储phantomjs.exe可执行文件。

官网下载地址:https://phantomjs.org/download.html

模型训练

本部分包括安装依赖、安装ImageAI。

1.安装依赖

TensorFlow 1.4.0(及更高版本)安装或通过pip安装:

pip3 install -- upgrade tensorflow

Numpy1.13.1(及更高版本)安装或通过pip安装:

pip3 install numpy

SciPy0.19.1(及更高版本)安装或通过pip安装:

pip3 install scipy

OpenCV安装或通过pip安装:

pip3 install opencv - python

pillow安装或通过pip安装:

pip3 install pillow

Matplotlib安装或通过pip安装:

pip3 install matplotlib

h5py安装或通过pip安装:

pip3 install h5py

Keras2.x安装或通过pip安装:

pip3 install keras

2.安装lmageAl

可以直接通过下面命令安装ImageAI:

pip3 install imageai

也可以先下载imageai-2.0.1-py3-none-any.whl

下载地址为https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

然后在下载目录下,运行如下命令安装ImageAI:

pip3 install imageai-2.0.1-py3-none-any.whl

实际应用

实际应用包括前端开发环境和后端环境的搭建。

1.前端

实际应用过程中需要在官网下载Jquery3.5.0.jsbootstrap 4.4.1.jstemplate.js0.8.0.js等3个文件。

2.安装Flask

通过ask1.1.2接收和发送用户请求,使用pip直接安装:

pip install -y Flask

3.安装Nginx

本地开发完成后,需要在服务器端运行。配置服务器端的环境为Nginx,Nginx(enginex),是高性能的HTTP和运行代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx负责接收和转发用户请求,同时保证服务器端的负载均衡。

安装Nginx。选择稳定版本:服务器端的Linux环境为CentOS 6.2x86_64。使用Linux下包管理工具yum安装缺少的依赖包:

# yum -y install gcc gcc-c++make libtoolzlib zlib zlib-devel openssl openssl-devel pcre pcre-devel

如果yum上没有这些软件包,可以下载源码编译安装,编译时默认安装的目录,确保在安装Nginx时找到动态库文件。从网站http://nginx.org/en/download.html下载稳定版nginx-1.6.3.tar.gz到/usr/local/src下解压。

另外下载2个插件模块——nginx_upstream_check_module-0.3.0.tar.gznginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz(建议在/usr/local/src下解压后将目录重命名为nginx-sticky-module-ng-1.2.5),前者用于检查后端服务器的状态,后者用于后端做负载均衡解决报错(sessions ticky问题)。注意插件与Nginx的版本兼容问题,一般插件越新越好,Nginx则无须追求最新的版本。

启动Nginx服务,命令如下:

systemctl start nginx

修改Nginx的配置文件。

打开/etc/nginx/nginx.conf文件,修改server部分。相关代码如下:

server {
		#监听端口
		listen 80;
		#访问城名
		server_name localhost;
		#编码格式,若网页格式与此不同,将被自动转码
		#charset koi8
		#虚拟主机访问日志定义
		#access_log logs/host.access.log main;
		#对URL进行匹配
		location / {
			#访问路径,可以是相对路径也可以是绝对路径
			root html;
			#首页文件,以下按顺序匹配
			index l index.htm;
			}
}

本项目在阿里云的控制台开放服务器端口才能被用户访问,Nginx服务器默认为80端口。

相关其它博客

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(二)

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(三)

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(四)

工程源代码下载

详见本人博客资源下载页


其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/184485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM-基础

jdk7及以前: 通过-XX:PermSize 来设置永久代初始分配空间,默认值是20.75m -XX:MaxPermSize来设定永久代最大可分配空间,32位是64m,64位是82m jdk8及之后: 通过-XX:MetaspaceSize 来设置永久代初始分配空间&#xff…

Linux python安装 虚拟环境 virtualenv

根目录创建 venvs 文件夹 sudo mkdir /venvs 进入 /venvs 目录 cd /venvsp 创建虚拟环境,前提要按照 python3 安装 的 命令 sudo apt install python3 sudo python3 -m venv 虚拟环境名 激活虚拟环境 source /venvs/zen-venv/bin/activate 安装flask pip install fl…

小程序中的大道理之二--抽象与封装

继续扒 接着 上一篇 的叙述, 健壮性也有了, 现在是时候处理点实际的东西了, 但我们依然不会一步到底, 让我们来看看. 一而再地抽象(Abstraction Again) 让我们继续无视那些空格以及星号等细节, 我们看到什么呢? 我们只看到一整行的内容, 当传入 3 时就有 3 行, 传入 4 时就…

2023-11-24 事业-代号s-行业数据研报网站-记录

摘要: 2023-11-24 事业-代号s-行业数据研报网站-记录 行业数据研报网站 1、萝卜投研:https://robo.datayes.com 看数据、下载研报、上市公司PE/PB研究等。2、镝数聚:www.dydata.io 全行业数据&报告查找下载平台,覆盖100行业报…

关于python 语音转字幕,字幕转语音大杂烩

文字转语音 Python语音合成之第三方库gTTs/pyttsx3/speech横评(内附使用方法)_python_脚本之家 代码示例 from gtts import gTTStts gTTS(你好你在哪儿!,langzh-CN)tts.save(hello.mp3)import pyttsx3engine pyttsx3.init() #创建对象"""语速"…

Unity使用DOTween实现分段进度条

文章目录 需求下载安装 DOTween实现实现效果 需求 用组件进度条(Slider),利用分段加载进行以假乱真的进度效果,比如说2秒钟到达20%的进度,10秒钟加载20%到50%进度,1分钟加载50%到90%的进度,30秒…

JMeter测试报错422 Unprocessable Entity

添加HTTP信息头: ​ HTTP请求-》添加-〉配置元件-》HTTP信息头管理器 ​ 如果需要送json,需要添加Content-Type:application/json,否则会报【422 Unprocessable Entity】

基于单片机的光伏发电并网系统设计(论文+源码)

1.系统设计 片作为主控制器。由于太阳能板本身的能量输出受到负载影响,因此需要在太阳能板后面加入一级DC/DC电路,来实现最大功率跟踪,以提高整个系统的效率。接着,由于光伏逆变器需要产生220V的交流电给居民使用,因此…

win10 eclipse安装教程 (java)

前言:安装eclipse之前必须安装JDK,JDK是编译环境,eclipse是集成开发平台。 一、JDK的安装 Java Development Kit 简称 JDK (一) 官方下载地址: Java Archive Downloads - Java SE 8u211 and later (oracle.com) 找到&#xff…

麒麟KYSEC使用方法04-开启及关闭fpro

原文链接:麒麟KYSEC使用方法04-开启及关闭fpro hello,大家好啊,今天给大家带来麒麟KYLINOS的kysec使用方法系列文章第四篇内容----使用命令开启及关闭fpro,文件保护策略有两种模式,off/on,今天给大家介绍一…

JSP EL 算数运算符逻辑运算符

除了 empty 我们这边还有一些基本的运算符 第一种 等等于 jsp代码如下 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> …

多线程Thread(初阶二:Thread类及常⻅⽅法)

目录 一、Thread 的常⻅构造⽅法 继承Thread代码&#xff1a; 实现Runnable接口代码: 二、Thread 的⼏个常⻅属性 1、id&#xff1a; 2、获取线程的名字。 3、进程的状态&#xff1a; 4、在java中设置的优先级&#xff0c; 5、是否后台线程&#xff0c; 6、是否存活&a…

OpenAI惊天100小时,事件全记录

以下内容为结合这次OpenAI事件经过所做的梳理和总结&#xff0c;里面包含各种八卦和谣言&#xff0c;也是此次事件的狼人杀同人传记&#xff0c;借用了狼人杀游戏中的各种桥段&#xff0c;请各位看官酌情服用。 剧中人物&#xff1a; 好人阵营&#xff08;Sam&Greg&#xf…

【深度学习】基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率&#xff0c;图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…

在自己的项目中调用别人的库的方法(static lib库,dynamic lib库以及dll动态库)

众所周知&#xff0c;出现.lib, .dll这种文件的原因是为了保护源代码&#xff0c;这个就不细说了。 用OpenCV的开源库来举个例子看一下就知道了&#xff1a; bin文件夹里面放的都是dll文件&#xff1b; lib文件夹里面放的都是伴随dll文件的动态lib文件&#xff1b; staticli…

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回 2023/11/24 12:19 百度&#xff1a;RK3399 Android10 右键返回 https://blog.csdn.net/danhu/article/details/122467256 android9/android10 鼠标右键返回(已验证) danhu 于 2022-01-13 09:46:42 发布 android10 …

Django JSONField/HStoreField SQL注入漏洞(CVE-2019-14234)

漏洞描述 Django 于2019年8月1日 日发布了安全更新&#xff0c;修复了 JSONField 和 HStoreField 两个模型字段的 SQL 注入漏洞。 参考链接&#xff1a; Django security releases issued: 2.2.4, 2.1.11 and 1.11.23 | Weblog | DjangoDjango JSONField SQL注入漏洞&#x…

【Git】一文教你学会 submodule 的增、查、改、删

添加子模块 $ git submodule add <url> <path>url 为想要添加的子模块路径path 为子模块存放的本地路径 示例&#xff0c;添加 r-tinymaix 为子模块到主仓库 ./sdk/packages/online-packages/r-tinymaix 路径下&#xff0c;命令如下所示&#xff1a; $ git subm…

让工作效率提升10倍:十大AIGC工具评测【建议收藏】

AI技术的普及已经在近年来不断增长。这种技术已经改变了我们与电脑的互动方式&#xff0c;让我们能够更高效、更自然地完成任务。本文将展示10个基于ChatGPT、GPT-3.5和 GPT-4.0 AI模型构建的最强大的资源&#xff0c;使您更容易充分利用它们的潜力。因此&#xff0c;如果您想利…

C语言--不创建第三个变量,实现对两个数字的交换

我们先来看一下&#xff0c;创建第三个变量交换两个数字。 #include<stdio.h> {int a2;int b3;int tmp0;tmpa;ab;btmp;return 0; } 再看一下不创建的方法 法一&#xff1a; //加减法 缺点可能会溢出 int main() {int a3;int b5;printf("before:a%d b%d\n"…