六大目标检测算法

目录

0.1.1项目结构

0.1.2项目安排

1.1图像识别背景

1.1.1图像识别三大任务

1.1.2图像识别的发展

1.2什么是目标识别

1.2.1目标检测定义

1.2.1.1物体

1.2.1.2位置

1.3目标检测应用场景

1.3.1行业

1.3.2virtualenv介绍及基本使用

1.3.2.1virtualenv介绍

1.3.2.2virtualenv运行使用

1.3.2 .3启用

1.3.2.4安装依赖

1.3.2.5退出当前系统环境

1.3.2.6virtualenv其他命令

2目标检测算法原理

2.1目标检测任务描述

2.1.1目标算法的分类

2.1.2目标检测任务

2.1.2.1分类原理回顾

2.1.2.2检测的评价指标

2.1.3目标定位的简单实现

2.2R-CNN

2.2.1目标检测 Overfeat模型

2.2.2目标检测的R-CNN模型

2.2.2.1完整的R—CNN结构

2.2.2.2修正候选区域

2.2.3R-CNN 训练过程

2.2.3.1正负样本准备

2.2.3.2预训练(pre-training)

2.2.3.3微调(fine-turning)

2.2.3.4SVM分类器

2.2.3.5bbox回归器训练

2.3SPPNet

2.3.1映射

2.3.1.1spatial pyramind pooling

2.3.2SPPNet总结

2.4Fast R-CNN

2.4.1Fast R-CNN

2.4.1.1Rol pooling

2.4.1.2End-to-End model

2.4.2多任务损失Multi-task loss

2.4.3R-CNN、SPPNet、Fast R-CNN效果对比

2.4.4Fast R-CNN总结

2.5Faster-R-CNN

2.5.1Faster R-CNN

2.5.2RPN原理

2.5.2.1anchors

2.5.2.2候选区域训练

2.5.3Faster R-CNN训练

2.5.4效果对比

2.5.5Faster R-CNN总结

2.6YOLO(You only look once)

2.6.1.1结构

2.6.1.2流程理解

2.6.2单元格(grid cell)

2.3.2.1网格输出筛选

2.6.3非最大抑制(NMS)

2.6.4训练

2.6.5与Faster R-CNN比较

2.6.6YOLO总结

2.7SSD(Single Shot MultiBox Detector)

2.7.1.1简介

2.7.1.2结构

2.7.1.4Dectector & classifier

2.7.1.4.1default boxes

2.7.1.4.2localization与confidence

2.7.2训练与测试流程

2.7.2.1train流程

2.7.2.2test流程

2.7.3比较

2.8TensorFlowSSD接口

2.8.1接口文件

2.8.2接口介绍

2.8.2.1模型搭建处理

2.8.2.2定义网络的损失

0.1.1项目结构

  • 数据采集层:数据标注,数据的存储格式

  • 深度模型层:数据预处理,模型一个多GPU训练,得到模型

  • TensorFlow seving进行模型部署 +web后台

  • 用户层:网页、小程序,获取识别检测结果

0.1.2项目安排

第一阶段:算法模型

  • PCNN以及相关算法

  • YOLO与SSD

  • 算法接口介绍

第二阶段:数据集处理

  • 数据集标记格式

  • 数据集存储与读取

第三阶段:项目实现

  • 数据接口实现

  • 模型接口实现

  • 训练设备部署逻辑实现

  • TensorFlow serving部署模型

  • Web server+TensorFlow serving Client

  • 小程序

1.1图像识别背景

1.1.1图像识别三大任务

  • 目标识别:或者说分类、定性目标,确定目标是什么

  • 目标检测:定位目标,确定目标是什么及位置

  • 目标分别:像素级的对前景与背景进行分类,将背景识别,将背景删除

1.1.2图像识别的发展

  • 通用场景

    图片识别平台

  • 垂直场景

    医疗领域:医疗影像的检测

    林木产业:模板树种检测识别

1.2什么是目标识别

1.2.1目标检测定义

识别图片中有哪些物体以及物体的位置(坐标位置)

1.2.1.1物体

即图像中存在的物体对象,但是能检测哪些物体会受到人为设定限制

目标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些,假设我们目标检测模型的定位是检测动物(牛、羊、猪、狗五种结果),那么模型对任何一张图片输出结果不会输出鸭子、书集等其它类型的结果

1.2.1.2位置

目标检测位置一般有两种格式(左上角一般设置为(0,0))

  • 极坐标表示:

    xmin,ymin:x,y坐标的最小值

    xmax,ymax:x,y坐标的最大值

  • 中心点坐标表示:

    x_center,y_center:目标检测框架的中心点坐标

    w,h:目标检测框的宽、高

1.3目标检测应用场景

1.3.1行业

  • 公安行业的应用

公安行业用户的迫切需求是在海量的视频信息中,发现犯罪嫌疑人的线索,人工智能能在视频内容的特征提取、内容理解方面有着天然的优势。可实时分析视频内容,检测运动对象,识别人、车属性信息,并通过网络传递到后端人工智能的中心数据库进行存储

  • 农作物的应用

农业中的农作物表面的病虫害识别也需要用到目标检测技术

  • 医疗影像检测

人工智能在医学中的应用目前是一个热门话题,医学影像中病变部位的检测和识别对于诊断的自动化 ,提供了优质的治疗具有重要的意义

  • 电商行业的应用

电商行业中充满无数的商品,利用检测功能查询相关商品,快速找到用户需要的商品类型或者品牌类别,从而提高电商领域的客户满意度

1.3.2virtualenv介绍及基本使用

1.3.2.1virtualenv介绍

在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰,

1.3.2.2virtualenv运行使用

使用pycharm来作为本示例的编辑器,选择python2.7工作环境,新建工程virtualenvDemo,在控制台中输入命令:

virtualenv venv

这时候便会在当前的项目中创建venv文件夹,为当前项目的虚拟python运行环境,

本机此时默认的python环境为python2.7,那么此时创建的虚拟环境就是以python2.7创建的虚拟化环境,如果需要选择一个python解释器来创建虚拟化环境,命令则为:

virtualenv -p /usr/bin/python2.7 venv

1.3.2 .3启用

激活虚拟化环境的命令为:

source venv/bin/activate

激活后,在控制台会有一个带有(venv)的标志,

1.3.2.4安装依赖

在以上完成之后就可以通过命令pip install 来安装python包了,这里安装python包就不需要root权限了,直接就可以安装十分方便。在venv的环境中,使用pip安装的包都不会再是全局性的包,只会在当前的虚拟环境中起作用,避免了污染系统环境。

1.3.2.5退出当前系统环境

在控制台中输入命令deactivate后,就会推出当前的venv虚拟化环境。

1.3.2.6virtualenv其他命令

$ virtualenv [OPTIONS] DEST_DIR 选项: –version 显示当前版本号。 -h, –help 显示帮助信息。 -v, –verbose 显示详细信息。 -q, –quiet 不显示详细信息。 -p PYTHON_EXE, –python=PYTHON_EXE 指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器 –clear 清空非root用户的安装,并重头开始创建隔离环境。 –no-site-packages 令隔离环境不能访问系统全局的site-packages目录。 –system-site-packages 令隔离环境可以访问系统全局的site-packages目录。 –unzip-setuptools 安装时解压Setuptools或Distribute –relocatable 重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。 –distribute 使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。 –extra-search-dir=SEARCH_DIRS 用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。 –never-download 禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。 –prompt==PROMPT 定义隔离环境的命令行前缀。

Python 3.3 及以上版本自带了 venv 模块,可以用来创建虚拟环境,而不需要安装额外的软件包。你可以在命令行中运行 python -m venv venv

2目标检测算法原理

  • 为什么:

1.提高算法基础

2.能够很快上手,熟悉TensorFlow算法啊API的使用

  • 目标:能够清晰的记住算法的识别流程,解决某些问题用到的关键技术点

2.1目标检测任务描述

2.1.1目标算法的分类

  • 两步走的目标检测:先进行区域推荐,而后进行目标分类(推荐区域+分类)

代表:R-CNN、SPP-net、Faster R-CNN

  • 端到端的目标检测:采用一个网络一步到位(一个网络,输入到输出,类别+位置)

代表:YOLO、SSD

2.1.2目标检测任务

2.1.2.1分类原理回顾
  • 分类:得出每个类别的概率,比较得到最大概率

  • 分类的损失与优化

在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失

常见的CNN模型

AlexNet、VGG、 GoodLeNet、 ResNet

  • 当图片中有一个物体的时候:分类+定位

    分类:准确率

    定位:loU = Area of Overlap/Area of Union

    目标的位置框:专业(Bounding Box)

    两种BX:Grounding-truth bounding box:图片当中真实标记的值

    Predicted bounding box:预测的时候标记的值

  • 多个物体:目标检测

2.1.2.2检测的评价指标

任务:检测和定位

description:在输入图片中找出存在的物体类别和位置(可能存在多种物体)

输入:图片

输出:类别标签和位置

评价标准:LoU、mAP

2.1.3目标定位的简单实现

回归位置

全连接层,即为FC1,FC2

FC1:作为类别的输出

FC2:作为这个物体位置数值的输出

假设十个类别,一个物体,输出p1、p2、p3.....然后输出这一个对象的四个位置信息,同理知道要网络输出什么,如何衡量网络的损失

对于分类的概率,还是要使用交叉熵损失

位置信息具体的数值,可使用MSE均方误差损失(L2损失)

位置数值的处理:

对于输出的位置信息是四个比较大的像素大小值,在回归的时候不合适,目前统一的做法是,每个位置除以图片本身像素大小

预测:300 200 100 200(前两个数值为中心点坐标,后面为长宽)

真实:310 200 130 200

x=x/x_image.y/y_image.w/y_image.h/x_image.h/y_image

2.2R-CNN

图片中存在多个物体的时候,网络输出多个不确定,全连接层回归输出的坐标

2.2.1目标检测 Overfeat模型

从左到右,从上到下滑动窗口,利用分类识别目标。为了在不同观察距离处检测不同的目标类型,我们使用不同大小和宽高比的窗口,即把图片变成每张图片输出类别及位置,变为分类问题,需要提前设置K个窗口,每个窗口提取M个,总共是KM个图片

暴力穷举法的方式,会消耗大量的计算力量,并且由于窗口大小的问题可能会造成效果不准确,但提供了一种解决目标检测问题的思路

2.2.2目标检测的R-CNN模型

2.2.2.1完整的R—CN
  • 28
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值