iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么实现实时目标检测
  • 552
分享到

Python中怎么实现实时目标检测

2023-06-16 14:06:13 552人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python中怎么实现实时目标检测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 设置要求:Tensorflow版本在1.15.0或以上执行pip insta

今天就跟大家聊聊有关python中怎么实现实时目标检测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1. 设置要求:

  • Tensorflow版本在1.15.0或以上

  • 执行pip install TensorFlow安装最新版本

一切就绪,现在开始吧!

2. 设置环境

GitHub上下载或复制TensorFlow目标检测的代码到本地计算机

在终端运行如下命令:

git clonehttps://github.com/tensorflow/models.git

安装依赖项

下一步是确定计算机上配备了运行目标检测器所需的库和组件。

下面列举了本项目所依赖的库。(大部分依赖都是TensorFlow自带的)

  • Cython

  • contextlib2

  • pillow

  • lxml

  • matplotlib

若有遗漏的组件,在运行环境中执行pip install即可。

安装Protobuf编译器

谷歌的Protobuf,又称Protocol  buffers,是一种语言无关、平台无关、可扩展的序列化结构数据的机制。Protobuf帮助程序员定义数据结构,轻松地在各种数据流中使用各种语言进行编写和读取结构数据。

Protobuf也是本项目的依赖之一。点击这里了解更多关于Protobufs的知识。接下来把Protobuf安装到计算机上。

打开终端或者打开命令提示符,将地址改为复制的代码仓库,在终端执行如下命令:

cd models/research  wget -Oprotobuf.zip Https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-osx-x86_64.zip unzipprotobuf.zip

注意:请务必在models/research目录解压protobuf.zip文件。

Python中怎么实现实时目标检测

来源:Pexels

编辑Protobuf编译器

从research/ directory目录中执行如下命令编辑Protobuf编译器:

./bin/protoc object_detection/protos/*.proto--Python_out=.

用Python实现目标检测

现在所有的依赖项都已经安装完毕,可以用Python实现目标检测了。

在下载的代码仓库中,将目录更改为:

models/research/object_detection

这个目录下有一个叫object_detection_tutorial.ipynb的ipython  notebook。该文件是演示目标检测算法的demo,在执行时会用到指定的模型:

ssd_mobilenet_v1_coco_2017_11_17

这一测试会识别代码库中提供的两张测试图片。下面是测试结果之一:

Python中怎么实现实时目标检测

要检测直播视频中的目标还需要一些微调。在同一文件夹中新建一个Jupyter notebook,按照下面的代码操作:

[1]:

import numpy as np import os import six.moves.urllib as urllib import sys import tarfile import tensorflow as tf import zipfile from distutils.version import StrictVersion from collections import defaultdict from io import StringIO from matplotlib import pyplot as plt from PIL import Image # This isneeded since the notebook is stored in the object_detection folder. sys.path.append("..") from utils import ops as utils_ops if StrictVersion(tf.__version__) < StrictVersion( 1.12.0 ):     raise ImportError( Please upgrade your TensorFlow installation to v1.12.*. )

[2]:

# This isneeded to display the images. get_ipython().run_line_magic( matplotlib ,  inline )

[3]:

# Objectdetection imports # Here arethe imports from the object detection module. from utils import label_map_util from utils import visualization_utils as vis_util

[4]:

# Modelpreparation  # Anymodel exported using the `export_inference_graph.py` tool can be loaded heresimply by changing `PATH_TO_FROZEN_GRAPH` to point to a new .pb file. # Bydefault we use an "SSD with Mobilenet" model here.  #See https://github.com/tensorflow/models/blob/master/research/object_detection/g3Doc/detection_model_zoo.md #for alist of other models that can be run out-of-the-box with varying speeds andaccuracies. # Whatmodel to download. MODEL_NAME=  ssd_mobilenet_v1_coco_2017_11_17  MODEL_FILE= MODEL_NAME +  .tar.gz  DOWNLOAD_BASE=  http://download.tensorflow.org/models/object_detection/  # Path tofrozen detection graph. This is the actual model that is used for the objectdetection. PATH_TO_FROZEN_GRAPH= MODEL_NAME +  /frozen_inference_graph.pb  # List ofthe strings that is used to add correct label for each box. PATH_TO_LABELS= os.path.join( data ,  mscoco_label_map.pbtxt )

[5]:

#DownloadModel opener =urllib.request.URLopener() opener.retrieve(DOWNLOAD_BASE+ MODEL_FILE, MODEL_FILE) tar_file =tarfile.open(MODEL_FILE) for file in tar_file.getmembers():     file_name= os.path.basename(file.name)     if frozen_inference_graph.pb in file_name:         tar_file.extract(file,os.getcwd())

[6]:

# Load a(frozen) Tensorflow model into memory. detection_graph= tf.Graph() with detection_graph.as_default():     od_graph_def= tf.GraphDef()     withtf.gfile.GFile(PATH_TO_FROZEN_GRAPH,  rb ) as fid:         serialized_graph= fid.read()         od_graph_def.ParseFromString(serialized_graph)         tf.import_graph_def(od_graph_def,name=  )

[7]:

# Loadinglabel map # Labelmaps map indices to cateGory names, so that when our convolution networkpredicts `5`, #we knowthat this corresponds to `airplane`.  Here we use internal utilityfunctions,  #butanything that returns a dictionary mapping integers to appropriate stringlabels would be fine category_index= label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS,use_display_name=True)

[8]:

defrun_inference_for_single_image(image, graph):     with graph.as_default():         with tf.Session() as sess:             # Get handles to input and output tensors             ops= tf.get_default_graph().get_operations()             all_tensor_names= {output.name for op in ops for output in op.outputs}             tensor_dict= {}             for key in [                    num_detections ,  detection_boxes ,  detection_scores ,                    detection_classes ,  detection_masks ]:                 tensor_name= key +  :0                  if tensor_name in all_tensor_names:                     tensor_dict[key]= tf.get_default_graph().get_tensor_by_name(tensor_name)             if detection_masks in tensor_dict:                 # The following processing is only for single image                 detection_boxes= tf.squeeze(tensor_dict[ detection_boxes ], [0])                 detection_masks= tf.squeeze(tensor_dict[ detection_masks ], [0])                 # Reframe is required to translate mask from boxcoordinates to image coordinates and fit the image size.                 real_num_detection= tf.cast(tensor_dict[ num_detections ][0], tf.int32)                 detection_boxes= tf.slice(detection_boxes, [0, 0], [real_num_detection, -1])                 detection_masks= tf.slice(detection_masks, [0, 0, 0], [real_num_detection, -1, -1])                 detection_masks_reframed= utils_ops.reframe_box_masks_to_image_masks(                 detection_masks,detection_boxes, image.shape[1],image.shape[2])                 detection_masks_reframed= tf.cast(                 tf.greater(detection_masks_reframed,0.5),tf.uint8)                 # Follow the convention by adding back the batchdimension                 tensor_dict[ detection_masks ] =tf.expand_dims(                                     detection_masks_reframed,0)             image_tensor= tf.get_default_graph().get_tensor_by_name( image_tensor:0 )             # Run inference             output_dict= sess.run(tensor_dict, feed_dict={image_tensor: image})             # all outputs are float32 numpy arrays, so convert typesas appropriate             output_dict[ num_detections ] =int(output_dict[ num_detections ][0])             output_dict[ detection_classes ] =output_dict[                        detection_classes ][0].astype(np.int64)             output_dict[ detection_boxes ] =output_dict[ detection_boxes ][0]             output_dict[ detection_scores ] =output_dict[ detection_scores ][0]             if detection_masks in output_dict:                 output_dict[ detection_masks ] =output_dict[ detection_masks ][0]         return output_dict

[9]:

import cv2 cam =cv2.cv2.VideoCapture(0) rolling = True while (rolling):     ret,image_np = cam.read()     image_np_expanded= np.expand_dims(image_np, axis=0)     # Actual detection.     output_dict= run_inference_for_single_image(image_np_expanded, detection_graph)     # Visualization of the results of a detection.     vis_util.visualize_boxes_and_labels_on_image_array(       image_np,       output_dict[ detection_boxes ],       output_dict[ detection_classes ],       output_dict[ detection_scores ],       category_index,       instance_masks=output_dict.get( detection_masks ),       use_nORMalized_coordinates=True,       line_thickness=8)     cv2.imshow( image , cv2.resize(image_np,(1000,800)))     if cv2.waiTKEy(25) & 0xFF == ord( q ):         break         cv2.destroyAllwindows()         cam.release()

看完上述内容,你们对Python中怎么实现实时目标检测有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python中怎么实现实时目标检测

本文链接: https://www.lsjlt.com/news/283943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中怎么实现实时目标检测
    今天就跟大家聊聊有关Python中怎么实现实时目标检测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 设置要求:TensorFlow版本在1.15.0或以上执行pip insta...
    99+
    2023-06-16
  • opencv-python+yolov3怎么实现目标检测
    这篇文章给大家分享的是有关opencv-python+yolov3怎么实现目标检测的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。目标检测概况目标检测是?目标检测,粗略来说就是:输入图片/视频,经过处理,得到:目标...
    99+
    2023-06-15
  • opencv-python+yolov3实现目标检测
    目录目标检测概况目标检测是?目标检测算法?yolov3模型简介性能介绍架构介绍opencv-python实现why opencv?正文因为最近的任务有用到目标检测,所以昨天晚...
    99+
    2024-04-02
  • YOLO v5 实现目标检测
    本文用于学习记录 文章目录 前言一、YOLO v5 环境配置1.1 安装 anaconda 与 pycharm1.2 创建虚拟环境1.3 进入 pytorch 环境1.4 安装 pyto...
    99+
    2023-08-31
    目标检测 python
  • python目标检测基于opencv实现目标追踪示例
    目录主要代码信息封装类更新utilspython-opencv3.0新增了一些比较有用的追踪器算法,这里根据官网示例写了一个追踪器类 程序只能运行在安装有opencv3.0以上版本和...
    99+
    2024-04-02
  • 怎么用YOLOv5实现多路摄像头实时目标检测功能
    这篇文章将为大家详细讲解有关怎么用YOLOv5实现多路摄像头实时目标检测功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言YOLOV5模型从发布到现在都是炙手可热的目标检测模型,被广泛运用于各大场景之...
    99+
    2023-06-29
  • Qt+OpenCV实现目标检测详解
    目录一、创建项目&UI设计二、代码与演示演示效果拓展阅读一、创建项目&UI设计 创建项目,UI设计如下 文件类型判断 简单的判断文件类型 QString file(...
    99+
    2024-04-02
  • 用PaddlePaddle实现目标检测任务
    PaddlePaddle是一个深度学习框架,可以用于实现目标检测任务。下面是一个使用PaddlePaddle实现目标检测任务的示例代...
    99+
    2023-09-20
    任务
  • python实时目标跟踪怎么实现
    这篇“python实时目标跟踪怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python实时目标跟踪怎么实现”文章吧...
    99+
    2023-07-05
  • Python可视化目标检测框的实现代码
    目录1 引言2 举个栗子3 实现3.1 函数讲解3.2 读入图像3.3 标签美化3.4 角点美化3.5 综合效果4 透明效果实现5 扩展应用6 总结7 参考1 引言 随着计算机视觉算...
    99+
    2024-04-02
  • 如何在Caffe中实现目标检测任务
    在Caffe中实现目标检测任务通常需要遵循以下步骤: 准备数据集:首先需要准备包含目标类别和对应标注框的数据集。可以使用标记工具...
    99+
    2024-04-02
  • 如何在Torch中实现目标检测任务
    在Torch中实现目标检测任务通常可以使用以下步骤: 准备数据集:首先需要准备包含目标类别标签的数据集,可以使用COCO、PAS...
    99+
    2024-04-02
  • Keras如何实现目标检测任务
    在Keras中实现目标检测任务通常需要使用一些特定的模型架构,例如Faster R-CNN、YOLO或SSD。这些模型通常由两部分组...
    99+
    2024-04-02
  • Python中怎么实现异常检测
    Python中怎么实现异常检测,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。公式和过程与我之前解释过的其他机器学习算法相比,这要简单得多。该算法将使用均值和方差来计算每个训...
    99+
    2023-06-16
  • Python中怎么实现人脸检测
    Python中怎么实现人脸检测,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先需要安装这些包,以Ubuntu为例:$ sudo apt-g...
    99+
    2023-06-17
  • 【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
    ‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 🍻上期文章:...
    99+
    2023-09-07
    目标检测 YOLO 计算机视觉 深度学习 人工智能 原力计划
  • python利用opencv调用摄像头实现目标检测
    目录使用到的库实现思路实现代码2020/4/26更新:FPS计算FPS记录的原理FPS实现代码使用到的库 好多人都想了解一下如何对摄像头进行调用,然后进行目标检测,于是我做了这个小B...
    99+
    2024-04-02
  • 怎么在html5中实现input输入实时检测
    这期内容当中小编将会给大家带来有关怎么在html5中实现input输入实时检测,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一想法是input 上的onchange()方法,试了一下,不好用,是值等更改...
    99+
    2023-06-09
  • 教你用YOLOv5实现多路摄像头实时目标检测功能
    目录前言一、YOLOV5的强大之处二、YOLOV5部署多路摄像头的web应用1.多路摄像头读取2.模型封装3.Flask后端处理4.前端展示总结前言 YOLOV5模型从发布到现在都是...
    99+
    2024-04-02
  • C++ OpenCV标记点检测怎么实现
    这篇文章主要介绍“C++ OpenCV标记点检测怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ OpenCV标记点检测怎么实现”文章能帮助大家解决问题。效果如下:导...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作