0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现计算机视觉的目标检测10行Python代码帮你实现

电子工程师 来源:未知 2019-02-03 11:35 次阅读

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

fromimageai.DetectionimportObjectDetectionimportosexecution_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"))foreachObjectindetections: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.在电脑上安装Python 2.安装ImageAI及其环境依赖 3.下载目标检测模块文件 4.运行示例代码,就是我们展示的那10行

下面我们一步步详细讲解。

1)从Python官网下载和安装Python 3

https://python.org/

2)通过pip安装如下环境依赖

1.Tensorflow

pipinstalltensorflow

2.Numpy

pipinstallnumpy

3.SciPy

pipinstallscipy

4.OpenCV

pipinstallopencv-python

5.Pillow

pipinstallpillow

6.Matplotlib

pipinstallmatplotlib

7.H5py

pipinstallh5py

Keras

pipinstallkeras

ImageAI

pipinstall

3)通过该链接下载RetinaNet 模型文件用于目标检测。

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

fromimageai.DetectionimportObjectDetectionimportosexecution_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"))foreachObjectindetections:print(eachObject["name"]+":"+eachObject["percentage_probability"])

然后运行代码,等待控制台打印结果。等控制台打印出结果后,就可以打开FirstDetection.py所在的文件夹,你就会发现有新的图像保存在了里面。比如下面两张示例图像,以及执行目标检测后保存的两张新图像。目标检测之前:

目标检测之后:

我们可以看到图像上显示了检测出的物体名称及概率。

解读10行代码

下面我们解释一下这10行代码的工作原理

fromimageai.DetectionimportObjectDetectionimportosexecution_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模型的路径,在第四行将模型加载到目标检测类中,然后我们在第五行调用检测函数,并在输入和输出图像路径中进行解析。

foreachObjectindetections: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行代码就能让我们轻松实现之前很麻烦的目标检测,还是能谈得上“给力”二字。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1776

    文章

    43764

    浏览量

    230551
  • 计算机视觉
    +关注

    关注

    8

    文章

    1591

    浏览量

    45601
  • python
    +关注

    关注

    51

    文章

    4668

    浏览量

    83456

原文标题:只需10行Python代码,就能实现计算机视觉中目标检测

文章出处:【微信号:TheBigData1024,微信公众号:人工智能与大数据技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机视觉技术面临的挑战

    。       当今的计算机视觉的子领域大概可以包括:场景重建、目标检测、事件检测、视频跟踪、目标
    的头像 发表于 07-07 07:55 6342次阅读

    机器视觉计算机视觉的关系简述

    ,以控制相应的行为。因此,可以说,计算机视觉为机器视觉提供图像和景物分析的理论及算法基础,机器视觉计算机
    发表于 05-13 14:57

    【我是电子发烧友】七步带你认识计算机视觉(Computer Vision)

    `计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器
    发表于 06-14 21:06

    计算机视觉目标检测的主要步骤

    计算机视觉目标检测方法汇总
    发表于 06-14 14:49

    如何在FPGA上实现许多计算机视觉算法?

    我打算在FPGA上实现许多计算机视觉算法。 Digilent Atlys是这类应用的良好平台吗?我是初学者,不能自己解决这个问题。Digilent Atlys:http
    发表于 10-28 07:10

    【RISC-V + OpenCV 计算机视觉】用 VisionFive 2 昉·星光 2 进行物体识别

    强大的计算机视觉库,OpenCV提供了丰富的函数和工具,用于处理图像和视频数据,实现各种计算机视觉任务,使
    发表于 09-08 11:42

    基于OpenCV的计算机视觉技术实现

    基于OpenCV的计算机视觉技术实现OpencV是用来实现计算机视觉相关技术的开放源码工作库,是
    发表于 11-23 21:06 0次下载
    基于OpenCV的<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>技术<b class='flag-5'>实现</b>

    计算机视觉应用之OpenCV基础教程

    从工业检测系统到自动驾驶系统,计算机视觉是一个包括许多有趣应用的广泛领域。许多这样的系统在原型和实现阶段都要用到开源计算机
    发表于 11-18 04:45 8986次阅读
    <b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>应用之OpenCV基础教程

    计算机视觉在不同行业实现了商业落地

    计算机视觉作为人工智能的关键领域已逐步在各种不同的行业实现了商业落地。
    的头像 发表于 11-11 10:45 3640次阅读

    计算机视觉与机器视觉区别

     “计算机视觉”,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。计算机
    的头像 发表于 12-08 09:27 1.2w次阅读

    python实现目标检测的源代码免费下载

    本文档的主要内容详细介绍的是python实现目标检测的源代码免费下载
    发表于 04-09 08:00 6次下载
    <b class='flag-5'>python</b><b class='flag-5'>实现目标</b><b class='flag-5'>检测</b>的源<b class='flag-5'>代码</b>免费下载

    用于计算机视觉训练的图像数据集

    计算机视觉使计算机能够理解图像和视频的内容。计算机视觉目标是使人类
    的头像 发表于 02-12 16:13 1161次阅读

    计算机视觉目标检测

    目标检测计算机视觉领域中一个新兴的应用方向。图像分类是对图像进行分类,比如判断图像中是否是车。定位分类不仅要图片分类,而且需要确定目标在图
    发表于 03-06 06:02 2次下载
    <b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>之<b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    目标跟踪在计算机视觉中的重要性

    目标跟踪是计算机视觉中非常重要的任务之一。它刚好在目标检测之后出现。为了完成目标跟踪任务,首先需
    的头像 发表于 10-12 09:40 1045次阅读

    100行Python实现人体肤色检测

    本文中的人体肤色检测功能采用 OpenCV 库实现。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS
    的头像 发表于 05-06 10:46 490次阅读