Python基于 ImageAI 模块实践 idenprof数据集识别预测分析
Python基于 ImageAI 模块实践 idenprof数据集识别预测分析
图像识别早已不是很新鲜的话题了,很多数据处理的任务到最后都会归为图像识别中,在之前的很多工作中,我陆陆续续也接触了很多相关的工作,从最开始数据处理,到模型搭建与最终上线也都经历,大多数时候模型都是自己搭建的,虽然说现在keras的出现极大地简化了模型的搭建工作,但是整个过程还是需要自己去实践完成的,对于很多的初学者来说并不是很容易的。
今天发现了一个好玩的库——ImageAI,简单的说一下我的理解就是对keras的又一层封装,但又不全是这样。ImageAI简化了整个图像识别和目标检测的工作,今天想来简单看看,整个模块的能力。
使用的使用网上公开的数据集 idenprof ,分为train和test两个数据集,每个集合里面共有10个类别,数据集截图如下:
具体实践如下:
!usr/bin/env python
encoding:utf-8
from future import division
"""
__Author__:沂水寒城
功能: python基于 ImageAI 模块实现 idenprof 数据集预测识别
当前官网中 ImageAI 主要提供四种类型的预测模型分别如下:
SqueezeNet(预测速度最快 正确率中等)
ResNet50 (预测速度快 正确率较高)
InceptionV3(预测速度慢 正确率高)
DenseNet121(预测速度更慢 正确率最高)
"""
import os
import threading
from imageai.Prediction import ImagePrediction
from imageai.Prediction.Custom import ModelTraining
from imageai.Prediction.Custom import CustomImagePrediction
def modelPredictDemo(model_path='officeModels/resnet_model_ex-020_acc-0.651714_idenprof.h5',
class_path='officeModels/model_class_idenprof.json', pic_dir='idenprofTestPic/',classNum=10,resNum=1,flag=True): ''' 图像识别模型demo ''' right=0 if flag: prediction=CustomImagePrediction() else: prediction=ImagePrediction() prediction.setModelTypeAsResNet() prediction.setModelPath(model_path) prediction.setJsonPath(class_path) prediction.loadModel(num_objects=classNum) all_files=[] pic_list=os.listdir(pic_dir) for one_pic in pic_list: all_files.append(pic_dir+one_pic) for one_pic in all_files: predictions,probabilitys=prediction.predictImage(one_pic,result_count=resNum) true_label=one_pic.split('/')[-1].split('.')[0].strip() for predict,probability in zip(predictions,probabilitys): print(true_label,'===>',predict, " : ", str(probability)) if true_label.split('-')[0].strip()==predict: right+=1 acc=right/len(all_files) print('Accuracy: ',acc)
if __name__=='__main__':
modelPredictDemo(model_path='officeModels/resnet_model_ex-020_acc-0.651714_idenprof.h5', class_path='officeModels/model_class_idenprof.json', pic_dir='idenprofTestPic/',classNum=10,resNum=1,flag=True)
模型输出如下:
由于自己的PC机太次了,我没有选择去自己训练模型,直接下载了官方提供的预训练模型,随机抽取了250张图片数据作为测试使用,粗略地计算了一下准确度达到了55.64%以上。
感觉ImageAI使用起来的确是简单了很多,但是模型的种类和灵活性反而不如自己搭建模型了,这里更像是一个社区,自己可以贡献自己的数据集和预训练模型供别人使用,总之,好的东西总是会为开发者提供便利的,记录学习!
作者:Together_CZ
来源:CSDN
原文:https://blog.csdn.net/Together_CZ/article/details/96714163
版权声明:本文为博主原创文章,转载请附上博文链接!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Mock工具wiremock-py
作者 | 咪咪 wiremock-py wiremock-py 是基于WireMock实现的, 使用Python批量生成不同 测试场景 下不同HTTP API的 mock 数据, 然后作为mock server快速全面地对 API 进行测试。 背景 在数澜地产应用的前端测试中, 前端一般依赖于后端的数据, 前端通过后端在网关上发布的 HTTP API 获取数据. 要对前端进行充分的测试, 理想的做法是, 等待后端部署完成, 并且在数据层直接输入不同类型的数据源, 然后前端直接调用后端发布在网关上的 API 进行测试。 然而现实的情况是, 前端和后端的开发进度不完全一致, 如果前端先开发完成了, 必须要等后端对应的 API 开发完成后才能开始测试, 而且数据层的数据也不容易构造。 为了解决这个问题, 网关平台做了简单的 mock 功能, 每个 API 可以填写一个 mock数据, 然后前端调用 API 时直接使用这个 mock数据: 这种方式下, 网关充当了mock server: 但由于大家都使用同一个网关, 一个 API 只能保存一份 mock 数据, 所以有以下一些缺点: 不同的测...
- 下一篇
java 通过jni调用linux so动态库
java 通过jni调用linux so动态库准备开发javaC++总结java 通过jni调用linux so动态库欢迎转载 地址:https://blog.csdn.net/qq_15122663/article/details/96732890 最近有个项目需要java调用C++的动态库,所以重温一下操作步骤记录一下。 准备使用环境intellij idea clion 系统环境centos:平时开发使用开发环境是windows 所以部署到linux 上面 调试起来比较麻烦所以开发jni调试还是挺麻烦的,毕竟开发环境和部署环境不一样 1.下载linux版本的jdk,linux上面也要安装jdk环境,不要忘记这一步;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html clion需要环境是MinGW,所有下载一个MinGW; linux上面安装 gcc , gcc-c++ install gcc , gcc-c++ -y 把linux版本的jdk里面文件夹includ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块