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版權聲明:本文為部落客原創文章,轉載請附上博文連結!