代码语言:javascript复制
from imageai.Prediction import ImagePrediction #导入ImageAI相关模块用于图像预测
import os #用于文件路径处理
import time #用于程序运行计时
import cv2
#开始计时
start_time=time.time()
#获取当前路径,其中包含需要预测的图像以及训练好的模型文件等
execution_path=os.getcwd()
#对ImagePrediction类进行实例化
prediction=ImagePrediction()
#设置预测模型 有以下四种
#SqueezeNet
#prediction.setModelTypeAsSqueezeNet()
#prediction.setModelPath(os.path.join(execution_path, "squeezenet_weights_tf_dim_ordering_tf_kernels.h5"))
#ResNet50
#prediction.setModelTypeAsInceptionV3()
#prediction.setModelPath(os.path.join(execution_path, "inception_v3_weights_tf_dim_ordering_tf_kernels.h5"))
#DenseNet121
#prediction.setModelTypeAsDenseNet()
#prediction.setModelPath(os.path.join(execution_path, "DenseNet-BC-121-32.h5"))
#InceptionV3
#prediction.setModelTypeAsResNet()
#prediction.setModelPath(os.path.join(execution_path, "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
#设置算法模型类型为ResNet
prediction.setModelTypeAsResNet()#设置模型文件路径
prediction.setModelPath(os.path.join("C:/Users/xpp/Desktop/resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
#加载模型
prediction.loadModel()
'''
对图像进行测试并输出5个预测的可能结果
result_count用于设置想要的预测结果的数量(参数范围为[1,100])
predictImage()函数将返回预测的对象名和相应的百分比概率
'''
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',1)
cv2.imshow('img',img) #重新输出二值化图像
predictions,probabilities=prediction.predictImage(os.path.join(execution_path,"C:/Users/xpp/Desktop/Lena.png"),result_count=5 )
#结束计时
end_time=time.time()
#输出结果
for eachPrediction, eachProbability in zip(predictions,probabilities):
print(eachPrediction ":" str(eachProbability))
print("Total time cost:",end_time-start_time)
cv2.waitKey(0)
cloak:33.81323516368866 Total time cost: 11.468282222747803 bonnet:24.079766869544983 Total time cost: 11.468282222747803 feather_boa:4.112274944782257 Total time cost: 11.468282222747803 brassiere:3.734036535024643 Total time cost: 11.468282222747803 wig:3.7129808217287064 Total time cost: 11.468282222747803
算法:单图像预测是由各种不同算法构建而成的预测器对输入图像或视频帧进行分析解构并返回物体对象名和相应百分比概率(Percentage Probabilities)的过程。