动物分类识别教程+分类释义+界面展示

1.项目简介

动物分类教程+分类释义+界面展示

动物分类是生物学中的一个基础知识,它是对动物进行分类、命名和描述的科学方法。本教程将向您介绍动物分类的基本原则和方法,并提供一些常见的动物分类释义。

  1. 动物分类的基本原则

动物分类根据动物的形态、结构、生活习性、遗传等特征进行分类。动物分类的基本原则包括以下几点:

(1)分类的基础:分类应该以形态学为基础,主要从外部形态、内部结构、发育过程和生理生化特征等方面进行分类。

(2)系统的体系分类:采用分层次、阶梯式的分类方法,把各个分类单元按一定顺序排列成一个大的分类系统。

(3)分类的稳定性:分类的稳定性是指在一定的时间和空间范围内,由于物种的进化和分化关系而形成的分类不会轻易发生变动。

  1. 常见动物分类释义

(1)哺乳动物:是一类具有乳腺并能哺育幼崽的动物,如猫、狗、猪、牛等。

(2)鸟类:是一类具有翅膀和羽毛的脊椎动物,如鹰、鸽子、鸡等。

(3)爬行动物:是一类冷血动物,具有鳞片、角质板、甲壳等外壳,如蛇、龟、鳄鱼等。

(4)两栖动物:是一类既能在水中生活,也能在陆地上生活的动物,如青蛙、蝾螈等。

  1. 界面展示

本教程提供了一个简单易用的动物分类界面,用户可以上传自己拍摄的动物图片,系统会自动识别出动物的种类,并显示相应的分类释义。同时,用户还可以通过界面查看其他用户上传的动物图片及其分类结果,以便更好地了解动物分类知识。

总之,本教程旨在向广大用户介绍动物分类的基本原则和方法,帮助用户更好地了解动物世界,同时提供一个方便快捷的界面,让用户可以轻松地进行动物分类。
在这里插入图片描述

主要功能:利用tinker封装InceptionV3[论文]MOD进行图像分类的一个小Demo

环境anaconda+Python3+tensorflow

IDEpycharm + jupyter notebook

2.代码框架

需要的库模块:

  • os
    tarfile
    requests
    tensorflow
    numpy
    translate
    PIL
    

一共四个代码文件:

  • get_Inception_model.py

    方法模块,下载模型将模型保存到本地

    def download_inception_model(): #下载模型将模型保存到本地'......'
  • nodelookup.py

    类文件,主要功能将官方标签解码成可读文本

    class NodeLookup(object):def __init__(self):self.node_lookup  # 字典,id to string'......'@staticmethoddef _load(labels_path, uids_path):  # 输入:node_id, 输出:id to string字典'......'return dictdef id_to_string(self, node_id):  # 输入:node_id, 输出:可读字符串'......'return str
    
  • tensorflow_predictor.py

    类文件,主要功能实现图像预测

    class TensorflowPredictor():def __init__(self):  # 加载模型,新建session,'......'def predict_image(self, image_path):  # '......'return str
  • gui.py

    界面代码,面向用户

    btn_sel  # 选择图片按钮
    img_label  # 这是是显示预测图片的全局变量
    res_label  # 这是是显示预测文字的全局变量def translator_prediction_result(pre_res):# 翻译模块 输入:英文字符串,输出:格式化中文字符串'......'return resdef selector_image():  # 选择图片按钮点击发生的事件'......'root.mainloop()  # 进入消息循环
    

3.实现细节

3.1.下载模型

3.1.1.实现功能

下载模型将模型保存到本地

3.1.2.Inception文件简介

Inception_v3模型源码下载

Inception为Google开源的CNN模型,至今已经公开四个版本,每一个版本都是基于大型图像数据库ImageNet中的数据训练而成。因此我们可以直接利用Google的Inception模型来实现图像分类。本项目主要以Inception_v3模型为基础。分类一张图像可以在几秒内完成。

3.1.3.流程图

Created with Raphaël 2.3.0 不存在"inception_model"文件夹? 创建"inception_model"文件夹 下载模型压缩包inception-2015-12-05.tgz 解压inception-2015-12-05.tgz 打印"Done." 结束 yes no

3.1.4.代码

# get_Inception_model.pyimport tarfile
import requestsdef download_inception_model():# inception_v3模型下载inception_pre_mod_url = 'http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz'# 模型存放地址inception_pre_mod_dir = "inception_model"if not os.path.exists(inception_pre_mod_dir):os.makedirs(inception_pre_mod_dir)# 获取文件名,以及文件路径filename = inception_pre_mod_url.split('/')[-1]filepath = os.path.join(inception_pre_mod_dir, filename)# 下载模型if not os.path.exists(filepath):print('Downloading: ', filename)r = requests.get(inception_pre_mod_url, stream=True)with open(filepath, 'wb') as f:for chunk in r.iter_content(chunk_size=1024):if chunk: f.write(chunk)print("Done: ", filename)# 解压文件tarfile.open(filepath, 'r:gz').extractall(inception_pre_mod_dir)

3.2.标签解码

3.2.1.实现功能

将标签编码和标签内容一一对应(解码)

3.2.2.文件

官方下载的文件夹下有两个文件

  • imagenet_synset_to_human_label_map.txt

在这里插入图片描述

  • imagenet_2012_challenge_label_map_proto.pbtx

在这里插入图片描述

target_class对应着一个class_string,这里我们要做的任务就是将traget_class与human_string一一对应

3.2.3.代码

# nodelookup.pyimport tensorflow.compat.v1 as tf
tf.disable_v2_behaviorclass NodeLookup(object):def __init__(self):labels_path = 'inception_model/imagenet_2012_challenge_label_map_proto.pbtxt'uids_path = 'inception_model/imagenet_synset_to_human_label_map.txt'self.node_lookup = self.load(labels_path, uids_path)@staticmethoddef _load(labels_path, uids_path):uid_to_human = {}for line in tf.gfile.GFile(uids_path).readlines():items = line.strip('\n').split('\t')uid_to_human[items[0]] = items[1]node_id_to_uid = {}for line in tf.gfile.GFile(labels_path).readlines():if line.startswith('  target_class:'):target_class = int(line.split(': ')[1])if line.startswith('  target_class_string:'):target_class_string = line.split(': ')[1]node_id_to_uid[target_class] = target_class_string[1:-2]node_id_to_name = {}for key, val in node_id_to_uid.items():name = uid_to_human[val]node_id_to_name[key] = namereturn node_id_to_namedef id_to_string(self, node_id):if node_id not in self.node_lookup:return ''return self.node_lookup[node_id]

3.3.运行模型

3.3.1.流程图

Created with Raphaël 2.3.0 图像文件 模型预测函数 预测结果字符串

3.3.2.代码

import tensorflow.compat.v1 as tftf.disable_v2_behavior
import numpy as np
import nodelookupclass TensorflowPredictor():def __init__(self):self.sess = tf.Session()with tf.gfile.FastGFile('./inception_model/classify_image_graph_def.pb', 'rb') as f:graph_def = tf.GraphDef()  # 定义一个计算图graph_def.ParseFromString(f.read())  #tf.import_graph_def(graph_def, name='')self.softmax_tensor = self.sess.graph.get_tensor_by_name('softmax:0')def predict_image(self, image_path):# 载入图片image_data = tf.gfile.FastGFile(image_path, 'rb').read()predictions = self.sess.run(self.softmax_tensor, {'DecodeJpeg/contents:0': image_data})  # 图片格式是jpg格式predictions = np.squeeze(predictions)  # 把结果转为1维# 打印图片路径及名称res_str = ''res_str += '图片路径: ' + image_path + '\n'# 排序top_k = predictions.argsort()[-5:][::-1]node_lookup = nodelookup.NodeLookup()for node_id in top_k:# 获取分类名称name_str = node_lookup.id_to_string(node_id)# 获取该分类的置信度score = predictions[node_id] * 100res_str += '(%.2f' % (score) + '%), ' + name_str + '\n'return res_str

3.4.GUI

3.4.1.运行图

在这里插入图片描述

3.4.2.代码

import os
import tkinter
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk
from translate import Translatorimport get_Inception_model
from tensorflow_predictor import TensorflowPredictorroot = tkinter.Tk()  # 生成root主窗口
root.title("图像分类")  # 设置窗体标题
root.geometry("800x800")  # 设置窗体大小if not os.path.exists('./inception_model/classify_image_graph_def.pb'):  # 如果没下载model,则下载modelget_Inception_model.download_inception_model()  # 下载modeltranslator = Translator(to_lang="chinese")  # 新建Translator对象def translator_prediction_result(pre_res):  # 翻译模块res = pre_res.split("\n")[0] + '\n'for line in pre_res.split("\n")[1:-1]:s = translator.translate(line.split(',')[1])res += line + " (机翻结果: " + s + ")\n"return res  # 返回翻译结果img_label = Label(root, width='800', height='533')  # 这是是显示预测图片的全局变量
res_label = Label(root)  # 这是是显示预测文字的全局变量
pdt = TensorflowPredictor()  # 新建预测类(自己写的)def selector_image():  # 选择图片按钮点击发生的事件img_path = filedialog.askopenfilename(initialdir='./images')  # 弹窗选择图像文件返回图像地址pre_res = pdt.predict_image(image_path=img_path)  # 利用地址调用预测函数返回结果字符串pre_res = translator_prediction_result(pre_res)  # 机器翻译结果字符串photo = ImageTk.PhotoImage(file=img_path)img_label.config(imag=photo)  # 更新图片img_label.pack()res_label.config(text=pre_res, justify=LEFT)  # 更新文字res_label.pack()root.mainloop()  # 进入消息循环returnbtn_sel = tkinter.Button(root, text='选择图片', command=selector_image)  # 选择图片按钮
btn_sel.pack()root.mainloop()  # 进入消息循环(必需组件)
果字符串photo = ImageTk.PhotoImage(file=img_path)img_label.config(imag=photo)  # 更新图片img_label.pack()res_label.config(text=pre_res, justify=LEFT)  # 更新文字res_label.pack()root.mainloop()  # 进入消息循环returnbtn_sel = tkinter.Button(root, text='选择图片', command=selector_image)  # 选择图片按钮
btn_sel.pack()root.mainloop()  # 进入消息循环(必需组件)

总结

  • Inception 是一种深度学习模型,主要用于图像分类任务。它是由 Google 团队于 2014 年开发的,并在 ImageNet
    图像识别竞赛中取得了很好的成绩。
  • Inception 模型的设计目标是在保持高准确率的同时,降低模型的计算复杂度。它采用了一种称为 Inception
    模块的特殊结构,该模块可以同时应用多个不同大小的卷积核和池化操作,并将它们的输出拼接在一起。这样可以捕捉到不同尺度和层次的图像特征。
  • Inception
    模型的核心思想是使用多个并行的卷积操作来处理输入图像,并通过合并它们的输出来提取更丰富的特征表示。这种设计可以减少网络的参数数量,并增加模型的计算效率。
  • Inception 模型的经典版本是 Inception V3,它包含多个 Inception
    模块,每个模块都包含多个并行的卷积和池化操作。Inception V3 在 ImageNet
    数据集上取得了很好的性能,同时也被广泛应用于其他图像分类任务。

除了 Inception V3,还有其他版本的 Inception 模型,如 Inception V1、Inception V2 等,每个版本在模型结构和性能上都有所不同。

总结起来,Inception 是一种用于图像分类任务的深度学习模型,通过使用多个并行的卷积操作和池化操作来提取图像特征。它在准确率和计算效率方面取得了良好的平衡,并被广泛应用于图像分类领域。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务是什么

分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。 数据库事务 我们先从数据库事务说起。数据库事务可能大家…

(001)Unit 编译 UTF8JSON

文章目录 编译 Dll编译报错附录 编译 Dll 新建工程: 注意 UnityEngineDll 的选择!2022 版本的太高了!!! 下载包,导入unity : 3. 将 unf8json 的源码拷贝到新建的工程。 4. 编译发布版本: 编译…

ggkegg玩转KEGG数据 | 富集 | 可视化

本期内容 写在前面 今天分享一个关于KEGG通路图绘制的R包,也许在你后面的分析中可以使用得到。 在KEGG富集分析中,若我们要绘制某一个富集通路,一般回到KEGG官网中寻找该通路的富集图。然后,通过AI,PPT等等一系列手段…

【MySQL】数据库之小题练习(完全备份和增量备份的数据恢复,以及断点恢复)

目录 先创建库,创建表,完成三次数据的录入以及第一次的完全备份,第二次和第三次的增量备份; 第一次完全备份操作 第二次插入后做增量备份操作 第三次 插入后做增量备份操作 1、完全备份恢复,获取一班的人的成绩 …

内网穿透中微子代理搭建使用

内网穿透中微子代理搭建使用 环境准备服务器端部署客户端安装服务器开启端口 环境准备 中微子代理项目地址 最新版是2.0.1版本,需要java21的环境,考虑到现在项目大多数环境都是java8,稳重使用1.9版本搭建,jar下载地址: 准备一台有公网ip的服务器(或云服务器),本文中使用阿里…

【教程】从gitee或者github,下载单个文件或文件夹命令

1.打开git 2.初始化 git init 3.设置允许下载子目录 (不需要修改任何,只要原样复制,需要按照个人状况修改的话我会标注) git config core.sparseCheckout true 4. 选择要下载的单个文件夹的路径 这里单引号内部需要修改&…

redis基本用法学习(C#调用FreeRedis操作redis)

FreeRedis属于常用的基于.net的redis客户端,EasyCaching中也提供适配FreeRedis的包。根据参考文献4中的说法,FreeRedis和CsRedis算是近亲(都是GitHub中账号为2881099下的开源项目),因此其用法特别相似。FreeRedis的主要…

论文阅读<CF-YOLO: Cross Fusion YOLO for Object Detection in Adverse Weather.....>

论文链接:https://arxiv.org/pdf/2309.08152.pdfhttps://arxiv.org/pdf/2206.01381.pdfhttps://arxiv.org/pdf/2309.08152.pdf 代码链接:https://github.com/DiffPrompter/diff-prompter 目前没有完整代码放出。 恶劣天气下的目标检测主要有以下三种解…

docker笔记1-安装与基础命令

docker的用途: 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各种环境部署。可以将镜像(image)启动成容器(container),并提供多容器的生命周期进行管理(…

iPad绘画之旅:从小白到文创手账设计的萌系简笔画探索

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 iPad的出现,不仅改变了我们对电子设…

孔夫子二手书采集

文章目录 项目演示软件采集单本数据网页搜索数据对比 使用场景概述部分核心逻辑Vb工程图数据导入与读取下拉框选择参数设置线程 使用方法下载软件授权导入文件预览处理后的数据 项目结构附件说明 项目演示 操作视频详见演示视频,以下为图文演示 软件采集单本数据 …

mac传输文件到windows

前言 由于mac系统与windows系统文件格式不同,通过U盘进行文件拷贝时,导致无法拷贝。 几种文件格式说明: NTFS 文件格式:只适用于 windows 系统,不适用于 mac 系统; APFS 文件格式:mac 系统格式…

云HIS源码 云HIS解决方案 支持医保功能

云HIS系统重建统一的信息架构体系,重构管理服务流程,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决方案。 云HIS作为基于云计算的B/S构架的HIS系统,为基层医疗机构(包括诊所、社区卫生服务中心、乡镇卫…

Anylogic Pro 8.8.x for Mac / for Linux Crack

Digital twins – a step towards a digital enterprise AnyLogic是唯一一个支持创建模拟模型的方法的模拟建模工具:面向过程(离散事件)、系统动态和代理,以及它们的任何组合。AnyLogic提供的建模语言的独特性、灵活性和强大性使…

IP应用场景的规划

IP地址作为互联网通信的基石,在现代社会中扮演着至关重要的角色。本文将深入探讨IP地址在不同应用场景中的规划与拓展,探讨其在网络通信、安全、商业、医疗和智能城市等领域的关键作用与未来发展趋势。 IP地址的基本原理 IP地址是分配给网络上设备的数…

基于flask和echarts的新冠疫情实时监控系统源码+数据库,后端基于python的flask框架,前端主要是echarts

介绍 基于flask和echarts的新冠疫情实时监控系统 软件架构 后端基于python的flask框架,前端主要是echarts 安装教程 下载到本地,在python相应环境下运行app.py,flask项目部署请自行完成 使用说明 flaskProject文件夹中 app.py是flask项目主运行文…

自动驾驶中的“雷达”

自动驾驶中有好几种雷达,新手可能会混淆,这里统一介绍一下它们。 首先,所有雷达的原理都是发射波,接收回波(可能是声波或电磁波),并通过发射和接收的时间差以及波的速度计算距离。只不过发射的…

普中STM32-PZ6806L开发板(烧录方式)

前言 有两种方式, 串口烧录和STLink方式烧录;串口烧录 步骤 开发板USB转串口CH340驱动板接线到USB连接PC使用自带工具普中自动下载软件.exe烧录程序到开发板 ST Link方式 这种方式需要另外进行供电, 我买的如下,当年用于调试STM8的,也可…

vsetvli/vsetivli/vsetvl

转载自:【《RISC-V “V“ Vector Extension Version 1.0》阅读笔记】_risc v的rvv-CSDN博客 上述指令的作用:快速配置 vl 和 vtype 中的值以匹配应用程序需求; vset{i}vl{i} 指令根据参数设置 vtype 和 vl CSR,并将 vl 的新值写入…

搭建Nginx文件下载站点

一、下载Nginx 首先,确保你的服务器上已经安装了Nginx,使用编译安装,下载最新版Nginx。 wget https://nginx.org/download/nginx-1.25.3.tar.gz tar -xf nginx-1.25.3.tar.gz二、安装Fancyindex和Nginx-Fancyindex-Theme模块 # 下载Fancyin…