搜索
您的当前位置:首页正文

10行Python代码实现AI目标检测技术【推荐】

来源:六九路网
10⾏Python代码实现AI⽬标检测技术【推荐】

只需10⾏Python代码,我们就能实现计算机视觉中⽬标检测。

from imageai.Detection import ObjectDetectionimport os

execution_path = os.getcwd()

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\"))for eachObject in detections:

print(eachObject[\"name\"] + \" : \" + eachObject[\"percentage_probability\"] )

没错,⽤这寥寥10⾏代码,就能实现⽬前AI产品中应⽤⼴泛的⽬标检测技术。

看完了代码,下⾯容我们聊聊⽬标检测背后的技术背景,并解读这10⾏Python代码的由来和实现原理。⽬标检测简介

⼈⼯智能的⼀个重要领域就是计算机视觉,它是指计算机及软件系统识别和理解图像与视频的科学。计算机视觉包含很多细分⽅向,⽐如图像识别、⽬标检测、图像⽣成和图像超分辨率等。其中⽬标检测由于⽤途⼴泛,在计算机视觉领域的意义最为深远。

⽬标检测是指计算机和软件系统能够定位出图像/画⾯中的物体,并识别出它们。⽬标检测技术已经⼴泛应⽤于⼈脸检测、车辆检测、⼈流量统计、⽹络图像、安防系统和⽆⼈车等领域。和其它计算机视觉技术⼀样,⽬标检测未来会进⼀步成为⼈⼯智能的重要组成部分,有着⼴阔的发展前景。

不过,在软件应⽤和系统中使⽤现代⽬标检测⽅法以及根据这些⽅法创建应⽤,并⾮简单直接。早期的⽬标检测实现主要是应⽤⼀些经典算法,⽐如OpenCV中⽀持的算法。然⽽这些算法的表现并不稳定,在不同情况下差异巨⼤。

2012年深度学习技术的突破性进展,催⽣了⼀⼤批⾼度精准的⽬标检测算法,⽐如R-CNN,Fast-RCNN,Faster-RCNN,RetinaNet和既快⼜准的SSD及YOLO。使⽤这些基于深度学习的⽅法和算法,需要理解⼤量的数学和深度学习框架。现在全世界有数以百万计的开发者在借助⽬标检测技术创造新产品新项⽬,但由于理解和使⽤较为复杂困难,仍有很多⼈不得要领。

为了解决这个困扰开发者们的问题,计算机视觉专家Moses Olafenwa带领团队推出了Python库ImageAI,能让开发⼈员只需寥寥数⾏代码就能很容易的将最先进的计算机视觉技术应⽤到⾃⼰的项⽬和产品中。

我们开头所⽰的10⾏代码实现,就是要⽤到ImageAI。如何借助ImageAI轻松实现⽬标检测

使⽤ImageAI执⾏⽬标检测,你只需以下4步:1.在电脑上安装Python2.安装ImageAI及其环境依赖3.下载⽬标检测模块⽂件

4.运⾏⽰例代码,就是我们展⽰的那10⾏下⾯我们⼀步步详细讲解。

1)从Python官⽹下载和安装Python 32)通过pip安装如下环境依赖1.Tensorflow

pip install tensorflow

2.Numpy

pip install numpy

3.SciPy

pip install scipy

4.OpenCV

pip install opencv-python

5.Pillow

pip install pillow

6.Matplotlib

pip install matplotlib

7.H5py

pip install h5py

8.Keras

pip install keras

9.ImageAI

pip install

3)通过该 下载RetinaNet 模型⽂件⽤于⽬标检测。

到了这⾥我们已经安装好了所有依赖,就可以准备写⾃⼰的⾸个⽬标检测代码了。 创建⼀个Python⽂件,为其命名(⽐如FirstDetection.py),然后将如下代码写到⽂件中,再把RetinaNet模型⽂件以及你想检测的图像拷贝到包含该Python⽂件的⽂件夹⾥。FirstDetection.py

from imageai.Detection import ObjectDetectionimport os

execution_path = os.getcwd()

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\"))for eachObject in detections:

print(eachObject[\"name\"] + \" : \" + eachObject[\"percentage_probability\"] )

然后运⾏代码,等待控制台打印结果。等控制台打印出结果后,就可以打开FirstDetection.py所在的⽂件夹,你就会发现有新的图像保存在了⾥⾯。⽐如下⾯两张⽰例图像,以及执⾏⽬标检测后保存的两张新图像。⽬标检测之前:

⽬标检测之后:

我们可以看到图像上显⽰了检测出的物体名称及概率。解读10⾏代码

下⾯我们解释⼀下这10⾏代码的⼯作原理。

from imageai.Detection import ObjectDetectionimport 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的模型类型,在第三⾏将模型路径设置为RetinaNet模型的路径,在第四⾏将模型加载到⽬标检测类中,然后我们在第五⾏调⽤检测函数,并在输⼊和输出图像路径中进⾏解析。

for eachObject in detections:

print(eachObject[\"name\"] + \" : \" + eachObject[\"percentage_probability\"] )

在上⾯两⾏代码中,我们迭代了第⼀⾏中detector.detectObjectFromImage函数返回的所有结果,然后打印出第⼆⾏中模型对图像上每个物体的检测结果(名称和概率)。

ImageAI⽀持很多强⼤的⽬标检测⾃定义功能,其中⼀项就是能够提取在图像上检测到的每个物体的图像。只需将附加参数extract_detected_objects=True解析为detectObjectsFromImage函数,如下所⽰,⽬标检测类就会为图像物体创建⼀个⽂件夹,提取每张图像,将它们保存在新创建的⽂件夹中,并返回⼀个包含通过每张图像的路径的额外数组。

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提供了很多功能,能够⽤于各类⽬标检测任务的⾃定义和⽣产部署。包括:-调整最⼩概率:默认概率⼩于50%的物体不会显⽰,如有需要,你可以⾃⾏调整这个数字。-⾃定义⽬标检测:使⽤提供的CustomObject类,你可以检测⼀个或多个特定物体。-调整检测速度:可以通过将检测速度设为“快”“更快”“最快”三个不同等级,调整检测速度。-输⼊输出类型:你可以⾃定义图像的路径,Numpy数组或图像的⽂件流为输⼊输出。

诚然,单看这10⾏代码每⼀⾏,谈不上惊艳,也借助了不少库,但是仅⽤10⾏代码就能让我们轻松实现之前很⿇烦的⽬标检测,还是能谈得上“给⼒”⼆字。总结

以上所述是⼩编给⼤家介绍的10 ⾏Python 代码实现 AI ⽬标检测技术,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top