上面两个例子都是完成特定目标的识别(数字手写体识别以及人脸识别)。但在实际应用中,往往需要从一张图片中检测出多种物体,这对图像识别提出了更高的要求。下面我们将利用ImageAI来进行目标检测。
ImageAI 为图像的检测和抽取提供了强大的类和函数,它支持使用深度学习算法的模型,例如RetinaNet、YOLOv3 和TinyYOLOv3。下面的例子中我们使用的模型resnet50_coco_best_v2.0.1.h5 是采用COCO数据集提前进行训练过的模型。COCO数据集有超过200 000张图片,有80种物体类别,例如人、自行车、汽车、摩托车、飞机、公共汽车、火车、卡车、船、红绿灯、消防栓等。本程序参考https://imageai-cn.readthedocs.io/zh_CN/latest/ImageAI_Object_Detection.html等内容。
---------------------part 1 安装相应的库---------------------
#在安装ImageAI之前,需要安装多个关联库,包括tensorflow、numpy、scipy、opencv、pillow、matplotlib、h5py、keras。注意tensorflow需用64位的Python版本
pip install--upgrade tensorflow
pip install numpy
pip install scipy
pip install opencv-python
pip install pillow
pip install matplotlib
pip install h5py
pip install keras
#安装ImageAI
pip install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
#或者下载 imageai-2.0.1-py3-none-any.whl 后进行安装
pip install C:/User/MyUser/Downloads/imageai-2.0.1-py3-none-any.whl #路径可自行设定
#安装完之后进入正题,进行图像内容的预测
---------------------part 2 导入相关类---------------------
from imageai.Detection import ObjectDetection #导入ImageAI目标检测类
import os #导入Python 的 os 类
execution_path=os.getcwd()#查看当前所在路径
print(execution_path)
detector=ObjectDetection()#定义目标检测类
---------------------part 3 设置模型---------------------
detector.setModelTypeAsRetinaNet()#将模型的类型设置为RetinaNet
detector.setModelPath(os.path.join(execution_path,"resnet50_coco_best_v2.0.1.h5"))#将模型的路径设置为RetinaNet 模型的路径,前提是需要将文件存入当前路径
detector.loadModel()#将模型加载到目标检测类
---------------------part 4 物品检测---------------------(www.xing528.com)
detections=detector.detectObjectsFromImage(input_image=os.path.join(execution_path,"city.jpg"),output_image_path=os.path.join(execution_path,"citynew.jpg"))#调用目标检测函数,解析输入的和输出的图像路径
for eachObject in detections:
#迭代执行 detector.detectObjectsFromImage()函数并返回所有的结果
#打印出所检测到的每个目标的名称及其概率值
print(eachObject["name"]+":"+eachObject["percentage_probability"])
detections=detector.detectObjectsFromImage(input_image=os.path.join(execution_path,"city.jpg"),output_image_path=os.path.join(execution_path,"citynew.jpg"))
#目标检测类为图像目标创建一个新的文件夹,提取每张图像,并将每张图像都保存到新创建的文件夹中
下面是运行结果。
检测之前的图片
检测之后的图片
检测结果为〔项目和正确率(%)〕:
person:57.92815089225769
person:73.82912039756775
person:95.15230059623718
person:52.494847774505615
person:87.85123825073242
car:90.14939665794373
car:90.89049100875854
car:56.5509557723999
person:76.51398777961731
car:97.46530652046204
本章小结
本章介绍了Python在数字手写体识别、人脸识别和目标检测方面的应用。本章需要重点掌握如何利用Python调用各种已有的机器学习库来实现对图像的处理,以及建立模型的一般方法和步骤。
本章习题
参考本书中的程序,选取照片进行人脸识别
参考本书中的程序,选取照片进行物品辨识。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。