
目标检测是指通过计算机和软件系统在图像或场景中定位和识别目标的任务。目标检测已经广泛应用于许多领域,如人脸检测、车辆检测、交通统计、网络图像、安全系统和无人驾驶等。
早期的目标检测是基于经典算法的,例如OpenCV(一个流行的计算机视觉库)支持的算法。然而,这些经典算法可以在不同的条件下不能达到稳定的性能。
2012年,随着深度学习的突破性进展和快速普及,R-CNN、Fast-RCNN、Faster-RCNN、RetinaNet以及SSD、YOLO等快速高精度的目标检测算法应运而生。这些基于深度学习和机器学习的算法需要一定的数学基础和深度学习框架。数以百万计的专业计算机程序员和软件开发人员希望集成和创建基于对象检测算法的新产品。同时,由于理解和实际使用的复杂性,一直无法实现。如何开发一个高效的目标检测代码?
ImageAI应运而生。
0ImageAI让代码简洁。ImageAI是一个python库,只需要几行代码,程序员和软件开发人员就可以轻松地将最先进的计算机视觉技术集成到他们现有的或新的应用程序中。图像AI已经在Github上开源。Github地址:
https://github.com/OlafenwaMoses/ImageAI
Image目前支持使用在ImageNet-1000数据集上训练的四种不同的机器学习算法进行图像预测和训练。ImageAI还支持使用RetinaNet、YOLOv3和TinyYOLOv3在COCO数据集上训练的物体检测、文章检测和物体跟踪。最后,ImageAI允许训练定制模型来执行新目标的检测和识别。ImageAI库依赖于其他Python库,所以在用ImageAI开发之前需要导入其他包。
02使用ImageAI进行目标检测的准备工作,仅需要以下四个步骤:
在您的计算机上安装Python
安装ImageAI并配置相关环境
下载目标检测模块文件
运行示例代码(只有10行)
以下按部就班详细展开:
(1)从Python官网链接地址:https://python.org下载安装Python3
(2)使用pip命令安装以下依赖包:
pipinstalltensorflowpippiinstallnumpypiinstallscipypipinstallopencv-python pipinstallpillowppiinstallmatplotlibpipiinstallh 5 pypipiinstallkeraspip 3安装Imageai -升级注意:首次安装Imageai库,需要下载相应版本的。whl文件。对于Python3,需要下载imageai-2.0.2-py3-none-any.whl文件,然后转移到对应的文件夹中。您可以通过执行以下命令来安装它:
Pip图像AI-2.0.2-py3-none-any.whl.whl文件链接地址:3359 github . com/olafenwamoses/imageai/releases/download/2 . 0 . 2/imageai-2 . 0 . 2-py3-none-any . whl
(3)下载用于目标检测的RetinaNet模型文件。链接地址:https://github . com/olafenwamoses/imageai/releases/download/1.0/resnet 50 _ coco _ best _ v 2 . 0 . 1 . H5
03打开目标检测的第10行代码。在这里,您已经安装了所有的依赖项,您可以开始编写您的第一个目标检测代码。创建一个Python文件并命名(比如FirstDetection.py),然后将以下代码写入文件。将待检测的RetinaNet模型文件和图像复制到包含Python文件的文件夹中。FirstDetection.py
来自imageai。检测导入对象检测导入OS execution _ path=OS . getcwd()detector=object detection()detector . setmodeltypeasretinanet()detector . setmodelpath(OS . path . join(execution _ path,resnet 50 _ coco _ best _ v 2 . 0 . 1 . H5 ))detector . load model()detections=detector . detectobjectsfroimage(input _ image=OS . path . join(execution _ path,image.jpg ),output _ image _ path=OS . path . join(execution _ path,imagenew.jpg ))foreach object in detections:print(each object[姓名] ,' '每个对象[百分比_概率] )
然后运行代码,等待结果输出。显示结果后,可以在FirstDetection.py所在的文件夹中找到保存的新图像。
在Spyder编译器中运行的结果如下:
输出目标检测精度结果:人:57.203186544983人:584607人:7868人:人:BIC . 28848.888888888884周期:81.03842139244 408人:83.6622464566 1462人:89.8884844卡车:66.
输出目标检测精度结果:人:62.456647884827人:56661987人:26623人:26884846儿子:54.657559389 25171摩托车:65.845048484 2758 179公共汽车:99.4866546
04代码解释
这里这10行代码是如何工作的:
来自ImageAI . detection importobjectdetectionimport OS execution _ path=OS . getcwd()在上面三行代码中,第一行导入了imageai的目标检测类;第二行,导入Python的os类;在第三行中,定义了一个变量来保存Python文件、RetinaNet模型文件和图像所在文件夹的路径。detector=object detection()detector . setmodeltypeasretinanet()detector . setmodelpath(OS . path . join(execution _ path,resnet 50 _ coco _ best _ v 2 . 0 . 1 . H5 ))detector . load model()detections=detector . detectobjectsfroimage(input _ image=OS . path . join(execution _ path,Image.jpg ),output _ image _ path=OS . path . join(execution _ path,imagenew.jpg ).在上面的五行代码中,我们在第一行定义了目标检测类的一个实例;在第二行中,将实例的模型类型设置为RetinaNet;在第三行中,将模型路径设置为RetinaNet模型的路径;在第四行中,将模型加载到目标检测类的实例中;调用第五行中的检测函数,将文件输入输出路径作为参数传入。检测中的foreach object:print(each object[姓名] ,' '每个对象[百分比_概率] )
在上面两行代码中,第一行用于迭代检测器返回的所有结果。DetectObjectsFromImage函数,第二行用于输出图片中检测到的每个目标的名称和概率。05自定义目标检测
此外,ImageAI还支持强大的自定义目标检测。其中之一是能够提取图像中检测到的每个对象。只有参数需要被
Extract_detected_objects=True被传递给detectObjectsFromImage函数,如下所示。对象检测类将为图像对象创建一个文件夹,提取每个图像,将每个子图像保存到创建的新文件夹中,并返回一个包含每个图像路径的数组。detections,extracted _ images=detector . detectobjectsfroimage(input _ image=OS . path . join(execution _ path,image.jpg ),Output _ image _ path=OS . path . join(execution _ path,imagenew.jpg ),extract _ detected _ objects=true)。应用到第一张图中,得到如下结果:所有行人都被很好地提取出来,为了节省空间,这里只显示一部分。06图像人工智能的其他功能
ImageAI提供了很多功能,可以用来定制和部署目标探测任务。它支持的功能包括:
调整最小概率:默认情况下,概率小于50%的对象不会显示。当需要高精度时,可以增加该值;对于需要检测所有可能的对象的情况,可以减小该值。
自定义目标检测:提供的CustomObject类使检测类能够检测一个或几个特定的目标。
检测速度:通过将检测速度设置为快速,快速或者最快可以减少检测图像所需的时间。
类型:可以指定并解析图像的文件路径,以Numpy数组或图像文件流作为输入。
输出类型:您可以指定detectObjectsFromImage函数以文件或Numpy数组的形式返回图像。
japan quarterly 日本季刊









