python⼀句代码打印10⾏_只需10⾏Python代码,就能实现计
算机视觉中⽬标检测!...
只需10⾏Python代码,我们就能实现计算机视觉中⽬标检测。
from imageai.Detection import ObjectDetectionimport osexecution_path = os.getcwd()detector = ObjectDetection()detector.setModelTypeAsRetinaNet()de 没错,⽤这寥寥10⾏代码,就能实现⽬前AI产品中应⽤⼴泛的⽬标检测技术。
看完了代码,下⾯容我们聊聊⽬标检测背后的技术背景,并解读这10⾏Python代码的由来和实现原理。
⽬标检测简介
⼈⼯智能的⼀个重要领域就是计算机视觉,它是指计算机及软件系统识别和理解图像与视频的科学。计算机视觉包含很多细分⽅向,⽐如图像识别、⽬标检测、图像⽣成和图像超分辨率等。其中⽬标检测由于⽤途⼴泛,在计算机视觉领域的意义最为深远。
⽬标检测是指计算机和软件系统能够定位出图像/画⾯中的物体,并识别出它们。⽬标检测技术已经⼴泛应⽤于⼈脸检测、车辆检测、⼈流
量统计、⽹络图像、安防系统和⽆⼈车等领域。和其它计算机视觉技术⼀样,⽬标检测未来会进⼀步成为⼈⼯智能的重要组成部分,有着⼴阔的发展前景。
不过,在软件应⽤和系统中使⽤现代⽬标检测⽅法以及根据这些⽅法创建应⽤,并⾮简单直接。早期的⽬标检测实现主要是应⽤⼀些经典算法,⽐如OpenCV中⽀持的算法。然⽽这些算法的表现并不稳定,在不同情况下差异巨⼤。
2012年深度学习技术的突破性进展,催⽣了⼀⼤批⾼度精准的⽬标检测算法,⽐如R-CNN,Fast-RCNN,Faster-RCNN,RetinaNet和既快⼜准的SSD及YOLO。使⽤这些基于深度学习的⽅法和算法,需要理解⼤量的数学和深度学习框架。现在全世界有数以百万计的开发者在借助⽬标检测技术创造新产品新项⽬,但由于理解和使⽤较为复杂困难,仍有很多⼈不得要领。
为了解决这个困扰开发者们的问题,计算机视觉专家Moses Olafenwa带领团队推出了Python库ImageAI,能让开发⼈员只需寥寥数⾏代
码就能很容易的将最先进的计算机视觉技术应⽤到⾃⼰的项⽬和产品中。
进:960410445 即可获取这⼗⾏代码!
我们开头所⽰的10⾏代码实现,就是要⽤到ImageAI。
如何借助ImageAI轻松实现⽬标检测
使⽤ImageAI执⾏⽬标检测,你只需以下4步:
1.在电脑上安装Python
2.安装ImageAI及其环境依赖
3.下载⽬标检测模块⽂件
4.运⾏⽰例代码,就是我们展⽰的那10⾏
下⾯我们⼀步步详细讲解。
1)从Python官⽹下载和安装Python 3
python新手代码图案如何保存/
2)通过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
Keras
pip install keras
ImageAI
pip install
3)通过该链接下载RetinaNet 模型⽂件⽤于⽬标检测。
到了这⾥我们已经安装好了所有依赖,就可以准备写⾃⼰的⾸个⽬标检测代码了。 创建⼀个Python⽂件,为其命名(⽐如
FirstDetection.py),然后将如下代码写到⽂件中,再把RetinaNet模型⽂件以及你想检测的图像拷贝到包含该Python⽂件的⽂件夹⾥。FirstDetection.py
from imageai.Detection import ObjectDetectionimport osexecution_path = os.getcwd()detector = Obj
ectDetection()detector.setModelTypeAsRetinaNet()de
然后运⾏代码,等待控制台打印结果。等控制台打印出结果后,就可以打开FirstDetection.py所在的⽂件夹,你就会发现有新的图像保存
在了⾥⾯。⽐如下⾯两张⽰例图像,以及执⾏⽬标检测后保存的两张新图像。
⽬标检测之前:
⽬标检测之后:
我们可以看到图像上显⽰了检测出的物体名称及概率。
解读10⾏代码
下⾯我们解释⼀下这10⾏代码的⼯作原理。
from imageai.Detection import ObjectDetectionimport osexecution_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"))d
在上⾯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.jo 我们⽤前⾯的第⼀张图像作为例⼦,可以得到图像中检测到的各个物体的单独图像:
ImageAI提供了很多功能,能够⽤于各类⽬标检测任务的⾃定义和⽣产部署。包括:
-调整最⼩概率:默认概率⼩于50%的物体不会显⽰,如有需要,你可以⾃⾏调整这个数字。 -⾃定义⽬标检测:使⽤提供的CustomObject类,你可以检测⼀个或多个特定物体。 -调整检测速度:可以通过将检测速度设为“快”“更快”“最快”三个不同等级,调整检测速度。 -输⼊输出类型:你可以⾃定义图像的路径,Numpy数组或图像的⽂件流为输⼊输出。
诚然,单看这10⾏代码每⼀⾏,谈不上惊艳,也借助了不少库,但是仅⽤10⾏代码就能让我们轻松实现之前很⿇烦的⽬标检测,还是能谈
得上“给⼒”⼆字。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论