深度学习目标检测-交通标志检测web界面

2023-11-10 02:20

本文主要是介绍深度学习目标检测-交通标志检测web界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习目标检测-交通标志检测web界面

今天我们一起学习利用flask框架将深度学习检测封装为一个界面系统。该界面是基于之前写的一篇文章的训练模型进行检测:
自动驾驶目标检测项目实战(二)—基于Faster-RCNN的交通标志检测

效果

首先看看效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
有识别历史记录。

算法流程

参考这些大佬的代码进行训练:
https://github.com/arindam93/Traffic-Sign-Detection-Faster-RCNN

使用Faster-RCNN进行训练,这是一个二分类的问题,也就是检测是否存在交通标志,而未进行分类。

训练完之后,可以得到pickle文件和hdf5文件:
在这里插入图片描述
这里选用fcnet,也可选择vgg进行训练。

网页设计

使用Flask框架进行网页的搭建。主要代码如下:

# -*- coding: utf-8 -*-
import os
import uuid
import cv2
from flask import (Blueprint, flash, g, redirect, render_template, request, url_for
)
from flask import send_from_directory
from flask_img.db import get_db
import shutil
from test_frcnn import detect_sign # 加载文件函数
import cv2 as cvtable = []  # 识别历史表格
hot = 0 # 编号bp = Blueprint('main', __name__)ALLOWED_EXTENSIONS = {'png', 'jpg', 'bmp'}
IMAGE_FOLDER = os.path.join(bp.root_path, '..', 'images')
TMP_FOLDER = os.path.join(bp.root_path, '..', 'tmps')
CARD_COLOR = {"blue": "蓝色","yello": "黄色","green": "绿色"
}try:shutil.rmtree(IMAGE_FOLDER)os.makedirs(IMAGE_FOLDER)
except OSError:passtry:shutil.rmtree(TMP_FOLDER)os.makedirs(TMP_FOLDER)
except OSError:passdef allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS@bp.route('/', methods=('GET', 'POST'))
def index():if request.method == 'POST':if 'defect_image' not in request.files:flash('请选择识别文件')return redirect(request.url)image = request.files['defect_image']image_path = ""if image.filename == '':flash('请选择识别文件')return redirect(request.url)if not image or not allowed_file(image.filename):flash('文件不存在或后缀不合法')return redirect(request.url)# 原来的文件名写法# image_uuid = uuid.uuid4().hex# filename = ''.join([image_uuid, '.', image.filename.rsplit('.', 1)[1]])# 现在的文件名写法filename = image.filenameimage.save(os.path.join(IMAGE_FOLDER, filename))result = {}try:db = get_db()result = defect_pic(filename, image_path)db.execute('INSERT INTO img_info (img_color_contours, img_only_color, barcode_info)'' VALUES (?, ?, ?)',(result.get('img_color_contours', ''),result.get('img_only_color', ''),' '.join(result['text']) if result.get('text') else ''))db.commit()result.update({'result': '检测成功'})except Exception as e:flash(e)result.update({'result': '检测失败'})return render_template('index.html', result=result)return render_template('index.html')@bp.route('/image/<filename>')
def show_img(filename):return send_from_directory(IMAGE_FOLDER, filename)@bp.route('/tmp/<filename>')
def show_tmp_img(filename):return send_from_directory(TMP_FOLDER, filename)def defect_pic(filename, image_path):pic_path = os.path.join(IMAGE_FOLDER, filename)res, defect_img = detect_sign(pic_path, filename, "绝对路径")has_defect = '否'  # 初始化if res > 0:has_defect = '是'cv2.imwrite(TMP_FOLDER + "/" + "defect_" + filename, defect_img)global hot # 设为全局变量img_his = cv.imread(pic_path)x, y = img_his.shape[0:2]cv2.imwrite(IMAGE_FOLDER + "/" + "hot_" + filename, cv.resize(img_his, (int(y / 2), int(x / 2))))table.append([hot, '/image/' + "hot_" + filename, has_defect, res])hot += 1  # 编号加1return {'defect': True,'img_color_contours': '原始图像','img_color_contours_path': '/image/'+filename,'img_only_color': '检测图像','img_only_color_path': '/tmp/'+ "defect_" + filename,'has_defect': has_defect,'is_defect': res,'table': table,}

注意

1.该界面适合所有检测目标,只需要更改界面的后台检测算法即可。
2.目前算法可以同时支持检测分类,具体可以看:
深度学习目标检测ui界面-交通标志检测识别

需要代码的请私信我

这篇关于深度学习目标检测-交通标志检测web界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379855

相关文章

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去