深度学习目标检测-交通标志检测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

相关文章

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实