赞
踩
人工智能的一个重要领域是计算机视觉。计算机视觉是一门能够识别和理解图像和场景的计算机和软件系统的科学。计算机视觉还包括图像识别、目标检测、图像生成、图像超分辨率等多个方面。目标检测可能是计算机视觉中最深刻的方面,因为它有大量的实际用例。在本教程中,我将简要介绍现代目标检测的概念、软件开发人员所面临的挑战、团队提供的解决方案以及执行高性能对象检测的代码教程。
目标检测是指计算机和软件系统在图像/场景中定位目标并识别每个目标的能力。物体检测已广泛应用于人脸检测、车辆检测、行人计数、网页图像、安全系统和无人驾驶汽车等领域。像其他所有的计算机技术一样,目标检测的广泛的创造性和惊人的用途肯定来自计算机程序员和软件开发人员的努力。
ImageAI是一个python库,它可以让程序员和软件开发人员轻松地将最先进的计算机视觉技术集成到他们现有的和新的应用程序中,只需要几行代码。
要使用ImageAI执行对象检测,您需要做的就是
pip install tensorflow==2.4.0
pip install keras==2.4.3 numpy==1.19.3 pillow==7.0.0 scipy==1.4.1 h5py==2.10.0 matplotlib==3.3.2 opencv-python keras-resnet==0.2.0
pip install imageai --upgrade
现在已经安装了依赖项,可以编写第一个对象检测代码了。创建一个Python文件并给它一个名称(例如,firstdetection.py
),然后将下面的代码写入其中。将想要检测的RetinaNet
模型文件和图像复制到包含python文件的文件夹中。
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.1.0.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
然后运行代码并等待结果, 结果在控制台中打印。将结果打印到控制台后,转到firstdetect .py
所在的文件夹,您会发现保存了一个新图像。
原图:
检测结果:
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
在上面的3行中,我们在第一行导入了ImageAI对象检测类,在第二行导入了python的os类,并定义了一个变量来保存python文件、RetinaNet模型文件和图像所在的文件夹的路径。
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
在上面的5行代码中,第一行我们定义对象检测类,然后第二行将模型类型设置为RetinaNet,第三行设置模型路径,第四行将该模型加载到对象检测类,第五行设置模型的输入图像路径和输出图像路径,并返回检测结果。
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
在上面的两行代码中,我们在第一行中遍历detector.detectobjectsfromimage函数
返回的所有结果,然后在第二行中打印出图像中检测到的每个对象的名称和概率百分比。
ImageAI支持许多强大的对象检测过程定制。其中之一是能够提取图像中检测到的每个物体的图像。通过解析detectObjectsFromImage函数
额外参数extract_detected_objects = True
,对象检测类将创建一个文件夹,文件夹中包含图像中提取到的每个对象并返回一个数组,其中包含每个图像的路径。
detections, extracted_images = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"), extract_detected_objects=True)
让我们把它应用到图片上,看看下面的结果:
所有的行人照片都被提取的很好。我没有包括所有的他们,他们会占用不必要的空间。
ImageAI为对象检测任务的定制和生产部署提供了更多有用的特性。支持的一些功能有:
https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。