YOLOv3_Detect_Web

Use Yolov3 detect on Web

使用 YOLOv3(PyTorch 和 Django 实现)的对象检测应用程序。

网页和 REST API由Django Web框架实现。

1. Introduction 介绍


1.1 概述

这是一个使用 YOLOv3 提供对象检测并生成 REST API 的 Web 应用程序。

它是使用 Django 框架和 PyTorch(用于 YOLO 模型)实现的。

这里开发了接受图像作为请求的 Django API,API 的响应是 JSON 对象。

输入图像被转换为 float32 类型的 NumPy 数组并传递给 YOLOv3 对象检测模型。

该模型对图像执行对象检测,并生成一个 JSON 对象,其中包含所有对象的名称及其在图像中各自的置信度。

1.2 视频Demo

2. Required Libraries 依赖库对应版本及环境配置


2.1 所需依赖库

下面提到了所需的库及其版本:

  • Python (3.7)
  • Django (3.0.3)
  • PyTorch (1.3.1)
  • Pillow (7.1.2)
  • OpenCV (4.2.0)
  • NumPy (1.18.5)

可见requirements.txt。

2.2 配置测试环境

  • 利用Anaconda创建名为web的虚拟环境
  1. conda create -n web python=3.7
  • 进入虚拟环境
  1. conda activate web
  • 根据requirements文件在清华源下进行依赖库安装(推荐使用)
  1. pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3. Required files for Detection 检测必需的文件


要使用预训练模型的对象检测,我们需要三个重要文件,分别为以下:

  • yolov3.cfg - cfg:

    该文件用来逐块描述网络的布局。官方 cfg 文件可在Darknet github 存储库中找到。

    但是,为了获得更好的性能,我对配置文件做了一些更改。
  • yolov3.weights:

    我们使用来自 darknet53 模型的权重。
  • coco.names:

    文件包含我们的模型经过训练可以识别的不同对象的名称。

4.Steps to Follow (Working)


这个存储库可以做两件事:

  1. 基于YOLOv3和Django的网页程序应用实现
  2. REST API的生成(API测试使用POSTMAN完成)

4.1 网页应用实现

  • step-1.克隆 GitHub 存储库
  1. git clone https://github.com/isLinXu/YOLOv3_Detect_Web.git
  • step-2.将目录更改为克隆的 Repository 文件夹。
  1. cd YOLOv3_Detect_Web
  • step-3.由于.cfg 和 coco.names 文件已在此存储库中默认设置好, 可根据需要进行自行修改。

    现在,我们需要做的就是下载权重文件。

    在命令提示符中使用以下命令下载 yolov3.weights:
  1. wget https://pjreddie.com/media/files/yolov3.weights
  • step-4.安装所有必需的库。
  • step-5.执行下面的代码:(这条命令只需要执行一次,用来初始化创建)
  1. python manage.py collectstatic

此命令启动 Django 并收集所有静态文件。

  • step-6.然后,开始服务:
  1. python manage.py runserver

此命令启动 Django 服务器。

现在我们都准备好运行应用程序了。

  • step-7..执行上述代码后,您将看到如下内容:

  • step-8.点击链接。这会将您定向到 Web 浏览器。

  • step-9.通过拖放或浏览模式选择图像。

  • setp-10:上传图片



  • step-11: 点击DEDECT-OBJECT,进行检测图片,这时会将结果解析为json并显示出来。

    Django Web-app 的输入是一个图像。此输入图像被转换为​​ float32 类型的 NumPy 数组并传递给 YOLOv3 模型。

    该模型对图像执行对象检测,并生成一个 JSON 对象,其中包含所有对象的名称及其在图像中各自的频率。



    表单响应是 JSON 对象。此 JSON 对象如上所示显示。

  • step-12: 单击“Show Predictions”显示检测结果,查看带有边界框的图像。

  • step-13: 要尝试其他图像,请单击"Choose a New File"

4.2 REST API 实现——POSTMAN

Postman 是一个可扩展的 API 测试工具。要遵循的步骤是:

  1. 按照上面提到的前 6 个步骤进行操作。

  2. 确保服务器正常运行

  3. 打开 POSTMAN 并选择 POST 选项。输入上面显示的服务器链接并将 /object_detection/api_request/ 附加到它。

  4. 点击body,输入key value作为"image",选择图片文件点击“Send”进行发送

  5. 输入图像被转换为 float32 类型的 NumPy 数组并传递给 YOLOv3 模型。该模型对图像执行对象检测,并生成一个 JSON 对象,其中包含所有对象的名称及其在图像中各自的频率。

  6. HttpResponse 是 JSON 对象。其中此 JSON 对象如上所示显示。

例如:127.0.0.1:8000/object_detection/api_request/

[Open Source]基于YOLOv3与Django框架的Web应用-YOLOv3_Detect_Web的更多相关文章

  1. django框架搭建web服务

    一.工具 环境:windows 7 python 2.7.7     下载地址:https://www.python.org/downloads/release/python-2713/   ps:这 ...

  2. Django框架开发web网站的网页优化—页面静态化

    网站优化-页面静态化 1)概念 提前将页面所用到的数据从数据库查询出来,然后生成一个静态页面,之后用户来访问的时候,直接返回静态页面. 举例:首页静态化:获取首页用到的数据表中的数据,生成静态首页in ...

  3. 初识Django框架——环境搭建前你需要了解的几点

    Django是一个开放源代码的Web应用框架,由Python写成. 采用了MVC的框架模式,即模型M,视图V和控制器C. 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是C ...

  4. Django框架的安装与使用

    Django框架的安装与使用 在使用Django框架开发web应用程序时,开发阶段同样依赖wsgiref模块来实现Server的功能,我们使用Django框架是为了快速地开发application, ...

  5. Python学习笔记_04:Django框架简介

    目录 1 什么是Django? 2 Django框架的开发环境搭建 3 Django操作MySql数据库简介 4 功能强大的Django管理工具应用 1 什么是Django? Django是应用于We ...

  6. Django框架基于session的登录/注销实现

    博主最近想基于Django框架开发一个测试平台,第一版先实现查看下载自动化的测试报告文件 第一步:前端框架 网上选择一款开源boostrap的前端框架 AdminLTE,这里给个链接  https:/ ...

  7. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  8. Django框架 之 基于Ajax中csrf跨站请求伪造

    Django框架 之 基于Ajax中csrf跨站请求伪造 ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({     data: {csrfmiddlewaretoken: ...

  9. 解析基于keras深度学习框架下yolov3的算法

    一.前言 由于前一段时间以及实现了基于keras深度学习框架下yolov3的算法,本来想趁着余热将自己的心得体会进行总结,但由于前几天有点事就没有完成计划,现在趁午休时间整理一下. 二.Keras框架 ...

随机推荐

  1. k8s使用ceph的rbd作后端存储

    k8s使用rbd作后端存储 k8s里的存储方式主要有三种.分别是volume.persistent volumes和dynamic volume provisioning. volume: 就是直接挂 ...

  2. nodejs-npm模块管理器

    JavaScript 标准参考教程(alpha) 草稿二:Node.js npm模块管理器 GitHub TOP npm模块管理器 来自<JavaScript 标准参考教程(alpha)> ...

  3. Ruby Gems更换淘宝源方法

    官方的 Rubygems 源由于有些资源放在 Amazon S3 上面,所以有时会抽风,在 Linux 下我用 proxychains gem install xxx 实现了指定程序实行 Shadow ...

  4. 监控网站是否异常的shell脚本

    本节内容:shell脚本监控网站是否异常,如有异常就自动发邮件通知管理员. 脚本检测流程,如下:1,检查网站返回的http_code是否等于200,如不是200视为异常.2,检查网站的访问时间,超过M ...

  5. Python 如何管理类的创建行为

    问题 如果我们要给类加上一个属性,只需在定义的时候加上属性就可以了: class Animal: can_fly = True 如果这样的类有很多,我们可以定义一个父类,让其它类继承他就可以了: cl ...

  6. LuoguB2013 温度表达转化 题解

    Content 输入华氏温度 \(F\),请将其转化为摄氏温度 \(C\),精确到小数点后 \(5\) 位. 数据范围:\(F\geqslant -459.67\). Solution 简单的输入输出 ...

  7. java 编程基础:注解(Annotation Processing Tool)注解处理器 利用注解解读类属性生成XML文件

    APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具 ...

  8. python获取命令行传参的两种种常用方法argparse解析getopt 模块解析

    方法一:argparse解析 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/5/20 10:38 # @Author:zhan ...

  9. react组件配置样式hover效果的实现

    需求 react 自定义一个组件,组件内部样式可以灵活配置 问题 一般样式都可以通过属性传入,比如:颜色,字号等,但是对于一些有hover效果的地方,属性传入后,按照平时css的使用方式不太容易实现 ...

  10. JAVA获得websocket请求路径前缀

    /** * 获得websocket请求路径前缀(线程安全 速度相对慢) * @param request * @return */ public static String getWebsocketU ...