返回顶部
首页 > 资讯 > 后端开发 > Python >imageAI图像识别,并用pytho
  • 311
分享到

imageAI图像识别,并用pytho

图像imageAIpytho 2023-01-31 08:01:46 311人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

imageai是一套开源免费的,可以用于图像智能识别的python应用包,使用门槛不高,基本上按照官方文档去写就可以简单实现利用已经训练好的模型识别图像中的物体。imageai图像预检目前实现了四种模型的算法支持,分别是SqueezeNe

imageai是一套开源免费的,可以用于图像智能识别的python应用包,使用门槛不高,基本上按照官方文档去写就可以简单实现利用已经训练好的模型识别图像中的物体。
imageai图像预检目前实现了四种模型的算法支持,分别是SqueezeNet,ResNet,InceptionV3 和 DenseNet。不同的包对应的训练模型大小不一致,精度也不一致。

  • SqueezeNet(文件大小:4.82 MB,预测时间最短,精准度适中)
  • ResNet50 by Microsoft Research (文件大小:98 MB,预测时间较快,精准度高)
  • InceptionV3 by Google Brain team (文件大小:91.6 MB,预测时间慢,精度更高)
  • DenseNet121 by Facebook AI Research (文件大小:31.6 MB,预测时间较慢,精度最高)

imageai不仅可以用于图像识别,还可以进行图形对象检测,视频对象预测和跟踪,自定义训练模型等。对于机器学习不够深入的人员非常友好,可以几行代码实现一个AI应用。

更多深入的内容可以查看原文

下面,简单了解一下如何在Python本地服务中搭建一个图像识别应用。

安装imageAI的依赖

imageAI的依赖

python(>=3.5.1)
Tensorflow(>=1.4.0)
Numpy(>=1.13.1)
SciPy(>=0.19.1)
OpenCV
pillow
matplotlib
h5py
keras

若安装好了pip3 可以直接运行 pip3 install tensorflow numpy scipy opencv-python pillow matplotlib h5py keras imageai

imageAI的训练模型

imageAI支持使用在ImageNet-1000数据集上训练的4种不同的机器学习算法,也支持在CoCo数据集集上训练的对象检测。

图像预检

需要下载一个训练模型。

这里就直接使用facebookAI的训练模型DenseNet121。

废话不多说,上代码:

from imageai.Prediction import ImagePrediction
import os,JSON

execution_path = os.getcwd() # 当前命令行执行路径
prediction = ImagePrediction() # 获取这个图像预测实例
prediction.setModelTypeAsDenseNet() # facebook AI,此处要根据下一步加载的模型文件来确立对应的model类型,其他还有setModelTypeAsSqueezeNet(普通) setModelTypeAsResNet(微软模型) setModelTypeAsInceptionV3(谷歌模型),训练识别精确度依次提升,facebook最准确
prediction.setModelPath(os.path.join(execution_path, "DenseNet-BC-121-32.h5")) # 加载模型文件,就是刚刚下载好的那个
prediction.loadModel(prediction_speed="fast") # 速度调节,如果配置这个则需要使用精确度较高的模型,否则会出现识别率下降的问题
predictions, probabilities =prediction.predictImage(os.path.join(execution_path, "test.jpg"), result_count=6) # 对应的图像识别路径,以及相应的返回结果数量
predictionDict = {}
for eachPrediction, eachProbability in zip(predictions, probabilities):
     predictionDict[eachPrediction] = eachProbability
res = json.dumps(predictionDict)

print(res) # 输出结果
虽然这里设置了"fast",但其实对于单核来说运行速度仍然比较慢,如果你的运行服务器是多核的,可以试试并行计算,把多个核都用起来,效率会有不少提升。

代码对应行都有相应注释,看一下打印结果:

{"loudspeaker": 33.06401073932648, "modem": 26.803183555603027, "hard_disc": 7.0777274668216705, "projector": 4.804840311408043, "lighter": 2.9418328776955605, "electric_fan": 1.8662691116333008}

返回的是key-value的json格式,key代表物品名,value代表可能性性百分比数值,最高100,最低0,分别表示准确识别和不可能,由于训练模型使用的是FacebookAI类型的,所以标签名也是英文的,这对于中文用户来说可能需要一个转译的过程。

如何使用python进行中英文翻译,这里不赘述,pip安装googletrans试试看,不过需要翻墙。

好了,基本的识别逻辑有了,我们可以搭建一个Http服务,使用get请求来接收一个图片文件名,然后让Python帮我们识别上传的图片里都有什么内容。

上代码:

from http.server import httpserver,BaseHTTPRequestHandler
import io,shutil,urllib
from imageai.Prediction import ImagePrediction
import os,json

class MyHttpHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        name=""
        if '?' in self.path:
            self.queryString=urllib.parse.unquote(self.path.split('?',1)[1])
            #name=str(bytes(params['name'][0],'GBK'),'utf-8')
            params=urllib.parse.parse_qs(self.queryString)
            name=params["name"][0] if "name" in params else None
        r_str=name
        enc="UTF-8"
        encoded = ''.join(r_str).encode(enc)
        if name:
            execution_path = os.getcwd()
            if execution_path == '' or execution_path == '/':
                execution_path = '/www-root/blog' # 因为网关模式执行Python可能导致当前执行路径为'/'或者空的情况。
            prediction = ImagePrediction()
            
            prediction.setModelTypeAsDenseNet() # facebook AI
            prediction.setModelPath(os.path.join(execution_path, "DenseNet-BC-121-32.h5"))
          
            prediction.loadModel(prediction_speed="fast")
            predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "image/"+name), result_count=3)
            predictionDict = {}
            for eachPrediction, eachProbability in zip(predictions, probabilities):
                predictionDict[eachPrediction] = eachProbability
            res = json.dumps(predictionDict)
            encoded = ''.join(res).encode(enc)
        f = io.BytesIO()
        f.write(encoded)
        f.seek(0)
        self.send_response(200)
        self.send_header("Content-type", "text/html; charset=%s" % enc)
        self.send_header("Content-Length", str(len(encoded)))
        self.end_headers()
        shutil.copyfileobj(f,self.wfile)


httpd=HTTPServer(('',8080),MyHttpHandler)
print("Server started on 127.0.0.1,port 8080.....")
httpd.serve_forever()

在服务器运行python3 你的脚本名.py就可以完美运行啦!

curl -X GET 'http://127.0.0.1:8080?name=IMG_8590.JPG'
# response
{"loudspeaker": 33.06401073932648, "modem": 26.803183555603027, "hard_disc": 7.0777274668216705, "projector": 4.804840311408043, "lighter": 2.9418328776955605, "electric_fan": 1.8662691116333008}

结尾

本文只介绍了图像识别以及如何加在python http server中方便内部调用,其实还可以做得更多,比如图形对象检测,视频对象跟踪等,你也可以自定义训练模型,按照对应的4种算法处理模型数据,搞一个自定义AI产品。

--结束END--

本文标题: imageAI图像识别,并用pytho

本文链接: https://lsjlt.com/news/192939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • imageAI图像识别,并用pytho
    imageai是一套开源免费的,可以用于图像智能识别的python应用包,使用门槛不高,基本上按照官方文档去写就可以简单实现利用已经训练好的模型识别图像中的物体。imageai图像预检目前实现了四种模型的算法支持,分别是SqueezeNe...
    99+
    2023-01-31
    图像 imageAI pytho
  • Python基于ImageAI实现图像识别详解
    目录背景简介图像预测算法引入目标检测图像目标检测视频目标检测背景简介 ImageAI是一个面向计算机视觉编程的Python库,支持最先进的机器学习算法。主要图像预测,物体检测,视频对...
    99+
    2023-02-01
    Python ImageAI图像识别 Python 图像识别 Python ImageAI
  • 【python 图像识别】图像识别从菜鸟
    一、安装配置(python2.7) 1.pip install pytesseract 2、pip install pyocr 3、pip install pillow 4、安装tesseract-ocr:http://jaist...
    99+
    2023-01-31
    图像 菜鸟 python
  • Python3 图像识别(二)
    Infi-chu: http://www.cnblogs.com/Infi-chu/ 以图搜图的使用已经非常广泛了,我现在来介绍一下简单的以图搜图的相关算法及其实践。 一、感知hash算法 感知哈希算法:感知哈希算法(Perceptual...
    99+
    2023-01-30
    图像
  • Python3 图像识别(一)
    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、环境准备: 1.Python3.x(我是用的是Python3.6.5),这个问题不大,只要3.4以上就OK。 2.Numpy(直接pip安装即可) ...
    99+
    2023-01-30
    图像
  • Python怎么识别图像
    这篇文章主要介绍“Python怎么识别图像”,在日常操作中,相信很多人在Python怎么识别图像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么识别图像”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • 使用python如何做图像识别
    在python中使用pytesseract模块实现一个图像识别,具体方法如下:import pytesseract #导入pytesseract模块from PIL import Imageclass GetImageDate(object...
    99+
    2024-04-02
  • Python图像识别及操作
    导语 自动化测试实施过程中,由于Android或web部分控件和区域无法通过uiautomator或hierarchy、selenium等系统提供的方式获取相关区域属性,无法通过控件属性访问指定区域,...
    99+
    2023-09-04
    python 开发语言
  • Python中AI图像识别实现身份证识别
    目录需求分析步骤申请华为云OCR接口获取token调用身份证识别接口总结图像识别说白了就是把一张照片上面的文字进行提取,提供工作效率 需求分析 身份证识别主要是把一张身份证照片上面的文字信息进行提取,不用再使用人工去...
    99+
    2022-06-02
    Python 身份证识别 Python AI图像识别
  • 如何用 Python 进行 OCR 图像识别
    这篇文章主要介绍“如何用 Python 进行 OCR 图像识别”,在日常操作中,相信很多人在如何用 Python 进行 OCR 图像识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用 Python 进行...
    99+
    2023-06-15
  • 如何使用Python实现图像识别?
            在当今的数字化时代,图像识别技术已经成为了人工智能领域中的一个热门话题。图像识别技术可以将数字图像转换为可供计算机程序理解的数据,并对图像内容进行分析和处理。Python是目前最受欢迎的编程语言之一,也是图像识别技术中最常用...
    99+
    2023-09-01
    python
  • 如何使用PHP进行图像识别?
    随着人工智能技术的发展,图像识别在各个领域的应用越来越广泛。而PHP作为一种流行的Web编程语言,也可用于图像识别的应用。本文将介绍如何使用PHP进行图像识别。一、什么是图像识别?图像识别,也被称为图像分类或图像识别,是通过计算机程序对数字...
    99+
    2023-05-21
    机器学习 PHP 图像识别
  • 怎么利用PyTorch实现图像识别
    这篇文章主要介绍“怎么利用PyTorch实现图像识别”,在日常操作中,相信很多人在怎么利用PyTorch实现图像识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用PyTorch实现图像识别”的疑惑有所...
    99+
    2023-07-05
  • java图像识别技术怎么应用
    Java图像识别技术可以应用于多个领域,包括但不限于以下几个方面: 人脸识别:可以使用Java图像识别库来开发人脸识别系统,用于...
    99+
    2023-10-27
    java
  • Android图片处理:识别图像方向并显示实例教程
    在Android中使用ImageView显示图片的时候发现图片显示不正,方向偏了或者倒过来了。 解决这个问题很自然想到的分两步走: 1、自动识别图像方向,计算旋转角度; 2、对...
    99+
    2022-06-06
    教程 Android
  • pytorch实现图像识别(实战)
    目录1. 代码讲解1.1 导库1.2 标准化、transform、设置GPU1.3 预处理数据1.4 建立模型1.5 训练模型1.6 测试模型1.7结果1. 代码讲解 1.1 导库 ...
    99+
    2024-04-02
  • PyTorch怎么实现图像识别
    这篇文章主要介绍“PyTorch怎么实现图像识别”,在日常操作中,相信很多人在PyTorch怎么实现图像识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PyTorch怎么实现图像识别”的疑惑有所帮助!接下来...
    99+
    2023-06-29
  • 基于OpenMV的图像识别之数字识别功能
    目录基于OpenMV的图像识别一、数字识别基于OpenMV的图像识别 OpenMV简介 什么是OpenMV OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视...
    99+
    2024-04-02
  • Java如何使用Tess4J实现图像识别
    这篇文章主要为大家展示了“Java如何使用Tess4J实现图像识别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何使用Tess4J实现图像识别”这篇文章吧。Java Tess4J实现图...
    99+
    2023-06-25
  • Java使用Tess4J实现图像识别方式
    目录Java Tess4J实现图像识别首先,下载Tess4J的相关资源(一个压缩包)项目的的目录如下lib中的文件如下(tess4J.jar也在该目录下)再在eclipse中打开项目...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作