在caffe源码目录下的examples下面有个web_demo演示代码,其使用python搭建了Flask web服务器进行ImageNet图像分类的演示。

首先安装python的依赖库:pip install -r examples/web_demo/requirements.txt

接下来,修改源码,仅三个代码文件:

  • app.py 这是主程序的入口
  • exifutil.py 辅助代码,解决skimage库不能处理exif标志的问题
  • templates/index.html 前端web页面

解决python2中的中文问题:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

exifutil.py中删除img = np.asarray(im).astype(np.float32) / 255.这句归一化的代码(视情况自行修改)。

网络模型调用

将模型加载和前向传播计算的相关代码写在另外的新增的python代码中。如YOLO和SSD均提供了python使用模型进行测试的代码,稍作修改即可。

结果显示

结果框画框代码:

from PIL import Image, ImageDraw

def draw_rectangle(draw, coordinates, color, width=1, draw_ellipse=False):
for i in range(width):
rect_start = (coordinates[0] - i, coordinates[1] - i)
rect_end = (coordinates[2] + i, coordinates[3] + i)
if draw_ellipse:
draw.ellipse((rect_start, rect_end), outline=color)
else:
draw.rectangle((rect_start, rect_end), outline=color) def draw_rectangles(image_pil,det_result):
# draw rectangles
draw = ImageDraw.Draw(image_pil)
for idx, item in enumerate(det_result):
x, y, w, h = item[2]
half_w = w / 2
half_h = h / 2
box = (int(x - half_w+1), int(y - half_h+1), int(x + half_w+1), int(y + half_h+1))
draw_rectangle(draw,box,(0, 255, 0),width=2,draw_ellipse=True)
draw.text((x - half_w + 5, y - half_h + 5), str(idx + 1)+" : "+item[0], fill=(0, 0, 150))
del draw

得到模型的预测结果之后使用上述画框代码画框后在flask.render_template时将画了结果框的图像显示在HTML页面上。

HTML页面内容适配

在调用如下代码时flask会将参数变量传给页面填充部分。

flask.render_template('index.html', has_result=True, result=results,
imagesrc=new_img_base64
)

在html页面代码中可以使用{{ result }}的形式来获取这些参数变量的值,并且可以使用if...else, for等语句控制html代码的填充。此步要做的就是修改app.py和html适配的内容一致。

详细代码在此:https://github.com/makefile/objdet_web

目标检测应用化之web页面(YOLO、SSD等)的更多相关文章

  1. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

  2. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  3. 深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  4. 目标检测:YOLO(v1 to v3)——学习笔记

    前段时间看了YOLO的论文,打算用YOLO模型做一个迁移学习,看看能不能用于项目中去.但在实践过程中感觉到对于YOLO的一些细节和技巧还是没有很好的理解,现学习其他人的博客总结(所有参考连接都附于最后 ...

  5. 目标检测复习之YOLO系列

    目标检测之YOLO系列 YOLOV1: blogs1: YOLOv1算法理解 blogs2: <机器爱学习>YOLO v1深入理解 网络结构 激活函数(leaky rectified li ...

  6. [目标检测]SSD原理

    1 SSD基础原理 1.1 SSD网络结构 SSD使用VGG-16-Atrous作为基础网络,其中黄色部分为在VGG-16基础网络上填加的特征提取层.SSD与yolo不同之处是除了在最终特征图上做目标 ...

  7. (转)Django学习之 第三章:动态Web页面基础

    上一章我们解释了怎样开始一个Django项目和运行Django服务器 当然了,这个站点实际上什么也没有做------除了显示了"It worked"这条信息以外. 这一章我们介绍怎 ...

  8. 【目标检测】SSD:

    slides 讲得是相当清楚了: http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf 配合中文翻译来看: https://www.cnb ...

  9. Anchor-free目标检测综述 -- Keypoint-based篇

      早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...

随机推荐

  1. 带你轻而易举的学习python——八皇后问题

    首先我们来看一下这个著名的八皇后问题 八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...

  2. 5337朱荟潼Java实验报告一

    一.实验内容 1.内容一输出“Hello 名”. import java.util.Scanner;public class Hello{public static void main(String[ ...

  3. Hive问题

    今天一直遇到一个问题: 在查询最热10个关键词时候总是报错,下图为报错最下面 一直关注着failed的内容,头疼了一天.........  结果实验室老哥给指出问题,是yarnException报错, ...

  4. iOS 开发学习-类的创建与实现,与java语言的对比

    Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { //在{}中定义属性(全局变量/实例变量 ...

  5. web窗体之四则运算

    1,计算方法: namespace ASP.NET { public class JiSuan { public int S; public int Result { get { return S; ...

  6. 编写了几个Java类,但是一直运行某一个class,这种是因为:main方法写错

    编写了几个Java类,但是一直运行某一个class,这种是因为:main方法写错

  7. UVA - 10635 Prince and Princess LCS转LIS

    题目链接: http://bak.vjudge.net/problem/UVA-10635 Prince and Princess Time Limit: 3000MS 题意 给你两个数组,求他们的最 ...

  8. js获取浏览器窗口属性

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...

  9. 2016011998+sw

    Coding.net原码仓库地址:https://git.coding.net/laolaf/sw.git 目录 1 需求分析 2 功能设计 3 设计实现 4 算法详解 5 测试运行 6 满意代码 1 ...

  10. java下Mysql基本操作

    https://www.cnblogs.com/centor/p/6142775.html