天天看點

Python基于 ImageAI 子產品實踐 idenprof資料集識别預測分析!usr/bin/env pythonencoding:utf-8

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

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

繼續閱讀