概要

本文主要总结了识别检测类系统该如何做,其步骤有哪些
这里以火焰识别系统为列来说明

前期准备

首先是完成数据采集与标准的工作,这里推荐使用精灵标注助手

其次是训练模型的选取,一般识别系统都是基于图片或者视频来实现的,所以模型的般都是通过对图像进行卷积操作进行特征提取。现在用的比较多的神经网络框架有SSD、YOLO、VGG、Fasrer R-CNN等,在后面会详细介绍

最后都准备好后就可以进行模型训练了,因为标注的文件读取需要按照一定规则,pytroch中需要重写utils文件中data的Dataset类,在U-Net语义分割中,小编详细阐述过。训练后就可以得到系统的识别模型了

识别目标的可疑区域提取

该部分就到如何识别了,所有的识别检测类系统都是通过寻找识别目标的可疑区域,再通过机器学习或者深度学习的方法对可疑区域进行识别,筛选出识别目标所在的区域。提取可疑区域主流方法有以下几种:规则限定、神经网络、机器学习

特征提取

特征提取主要是通过计算特征,找到大概的图片位置,如火焰检测可以通过火焰的颜色特征确定火焰的大概位置,小编共实验了多个颜色空间
RGB颜色空间规则如下:

 def rule_rgb(image):image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)r = image[:, :, 0]g = image[:, :, 1]b = image[:, :, 2]# r_avg = np.mean(r)g_avg = np.mean(g)tmp1 = cv2.compare(r, ColorSpace.redThre, cv2.CMP_GT)tmp2 = cv2.compare(g, g_avg, cv2.CMP_GT)tmp_1 = cv2.multiply(tmp1, tmp2)tmp1 = cv2.compare(r, g, cv2.CMP_GT)tmp2 = cv2.compare(g, b, cv2.CMP_GT)tmp_2 = cv2.multiply(tmp1, tmp2)tmp = cv2.multiply(tmp_1, tmp_2)empty_img = cv2.convertScaleAbs(tmp, 1.0 / 255)return empty_img

效果如图:

可以发现rgb颜色空间的提取效果明显不是很好
HSV颜色空间规则如下:

    def rule_hsv(image):image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)R = image[:, :, 0]G = image[:, :, 1]B = image[:, :, 2]min_value = np.array(np.where(R <= G, np.where(G <= B, R, np.where(R <= B, R, B)), np.where(G <= B, G, B)))S = 1 - 3.0 * min_value / (R + G + B + 1)fireImg = np.array(np.where(S > 0.2, np.where(S >= (255 - R) * ColorSpace.saturationTh / ColorSpace.redThre, 255, 0), 0))gray_fire = np.zeros([fireImg.shape[0], fireImg.shape[1], 1], np.uint8)gray_fire[:, :, 0] = fireImggray_fire = cv2.GaussianBlur(gray_fire, (7, 7), 0)gray_fire = contrast_brightness_demo(gray_fire, 5.0, 25)return gray_fire

效果如下图:

发现HSV颜色空间的提取效果也不怎么样,所以有的人就提出结合两种颜色空间

      def rule_rgb_and_hsv(image):B = image[:, :, 0]G = image[:, :, 1]R = image[:, :, 2]min_value = np.array(np.where(R <= G, np.where(G <= B, R, np.where(R <= B, R, B)), np.where(G <= B, G, B)))S = 1 - 3.0 * min_value / (R + G + B + 1)fireImg = np.array(np.where(R > ColorSpace.redThre, np.where(R >= G, np.where(G >= B, np.where(S >= 0.2, np.where(S >= (255 - R) * ColorSpace.saturationTh / ColorSpace.redThre, 255, 0), 0), 0), 0), 0))gray_fire = np.zeros([fireImg.shape[0], fireImg.shape[1], 1], np.uint8)gray_fire[:, :, 0] = fireImggray_fire = cv2.GaussianBlur(gray_fire, (7, 7), 0)gray_fire = contrast_brightness_demo(gray_fire, 5.0, 25)return gray_fire

效果如下图:

效果较未结合时要好的多
YCrCb颜色空间规则如下:

    def rule_ycrcb(image):image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)Y = image[:, :, 0]Cr = image[:, :, 1]Cb = image[:, :, 2]y_avg = np.mean(Y)cr_avg = np.mean(Cr)cb_avg = np.mean(Cb)fireImg = np.array(np.where(abs(Cb - Cr) < 200,np.where(abs(Cb - Cr) > 190,np.where(Cb < cb_avg, np.where(Cr > cr_avg, np.where(Y > y_avg, np.where(Cr > Cb, np.where(Y > Cr, 255, 0), 0), 0), 0), 0), 0), 0))gray_fire = np.zeros([fireImg.shape[0], fireImg.shape[1], 1], np.uint8)gray_fire[:, :, 0] = fireImggray_fire = cv2.GaussianBlur(gray_fire, (7, 7), 0)gray_fire = contrast_brightness_demo(gray_fire, 5.0, 25)return gray_fire


YCrCb的提取效果还是不错的

当然这种方法并不是万能的,因为火焰的颜色特征比较明显所以才采用通过颜色空间的规则来提取火焰的可疑区域。一般来说如果识别的目标具有较明显的特征都可以通过围绕该特征进行设定提取规则,比如火焰还具有动态特征所以可以通过帧差法,背景减法等方法进行提取可疑区域

下一章

识别检测类系统(基于pytorch)(一)相关推荐

  1. python实现文字识别软件_文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别...

    文字识别(OCR)CRNN(基于pytorch.python3) 实现不定长中文字符识别 发布时间:2018-09-26 19:40, 浏览次数:1265 , 标签: OCR CRNN pytorch ...

  2. 文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别

     最近开源了一个之前做的人脸关键点检测的算法,欢迎star GitHub - Sierkinhane/TAB: Think about boundary: Fusing multi-level bou ...

  3. 人员跌倒识别检测算法

    人员跌倒识别检测算法是基于视频的检测方法,通过对目标人体监测,当目标人体出现突然倒地行为时,自动监测并触发报警. 人员跌倒识别检测算法基于计算机识别技术,配合现场摄像头,自动识别如地铁手扶梯/楼梯.老 ...

  4. 未穿厨师服厨师帽穿戴识别检测|明厨亮灶

    未穿厨师服厨师帽穿戴识别检测依据Python基于YOLOv7人工智能技术和图像识别优化算法,对画面中有没有老鼠,厨师不穿厨师服,不佩戴口罩,不戴厨师帽,不戴手套,抽烟,玩手机等行为实时分析监测.YOL ...

  5. 安全帽佩戴识别检测 YOLOv5

    安全帽佩戴识别检测通过Python基于YOLOv5深度学习框架模型,对现场画面中进行分析检测.Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分为 7x7=49 个网格(gr ...

  6. 基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标,利用深度学习算法可实现图片.视频.摄像头等方式的家禽猪目标检测识别,另外支持结果可视化与图片或视频检测结果的导 ...

  7. 基于深度学习的高精度交警检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度交警检测识别系统可用于日常生活中检测与定位交警目标,利用深度学习算法可实现图片.视频.摄像头等方式的交警目标检测识别,另外支持结果可视化与图片或视频检测结果的导出.本系统采用 ...

  8. 基于深度学习的高精度水果检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度水果(苹果.皇冠梨.火龙果.榴莲.葡萄.柠檬.甜瓜.网纹甜瓜.橘子.菠萝和西瓜)检测识别系统可用于日常生活中来检测与定位水果目标,利用深度学习算法可实现图片.视频.摄像头等方 ...

  9. 基于深度学习的高精度塑料瓶检测识别系统(PyTorch+Pyside6+YOLOv5模型)

    摘要:基于深度学习的高精度塑料瓶检测识别系统可用于日常生活中或野外来检测与定位塑料瓶目标,利用深度学习算法可实现图片.视频.摄像头等方式的塑料瓶目标检测识别,另外支持结果可视化与图片或视频检测结果的导 ...

最新文章

  1. keras神经网络回归预测_如何使用Keras建立您的第一个神经网络来预测房价
  2. Nagios+mutt+msmtp 无法发送邮件的问题!
  3. MS CRM 2011——让活动实体在活动菜单中显示
  4. Polygon Cruncher减边用法
  5. 今天聊:做好前端的 10 个习惯
  6. java 多线程基础(一)
  7. JS中移动端项目取余数和switch于PC端的不同
  8. IAR for 8051安装教程
  9. 在谷歌云盘训练YOLOV5模型
  10. 2.5音频编辑软件2.6语音识别技术
  11. 一文详解神经网络 BP 算法原理及 Python 实现
  12. ubuntu镜像源的配置
  13. mysql操作入门(四)-----数据排序(升序、降序、多字段排序)
  14. 怎样利用python做一个软件,python可以自己做软件吗
  15. 设计公司该怎样开展业务?
  16. 常见字读音(粤语)---(2)
  17. BIND9手册【转】
  18. Java跨年祝福语代码_春节语音祝福短信java也疯狂
  19. Socket 【网络通信 - Socket】
  20. 阿丹学财报(2)- 资产负债表

热门文章

  1. 数字签名(RSA签名、ElGamal签名、Schnorr签名、DSS、DSA、离散对数签名、特殊性质的签名算法、Chaum盲签名、Chaum-Antwerpen不可否认签名、群签名、MUO代理签名)
  2. 堆漏洞挖掘——fastbin attack漏洞
  3. python设置时间过期改变状态_将Python程序设置为在特定天数后过期
  4. 安装程序出现 NSIS ERROR的错误提示
  5. 网站被K多种情况解析 怎么做才能快速恢复?
  6. 北航周号益:从“鹦鹉”到“乌鸦”,AI的本质是探索通用智能的可能性
  7. [SCOI2012]滑雪 洛谷p2573
  8. win10重置网络后搜索不到无线网(wifi没了)
  9. 【MATLAB】求反函数
  10. 【CodeForces】Codeforces Round 583