天天看点

Tensorflow入门与实战学习笔记(十二)-图像定位

目录

​​1 图像定位的理论知识​​

​​1.1 常见的图像处理任务​​

​​(1)分类​​

​​(2)分类+定位​​

​​(3)语义分割​​

​​(4)目标检测​​

​​(5)实例分割​​

​​2 图像定位​​

​​2.1 分类+回归模型的神经网络架构​​

​​2.2 训练集解析​​

​​2.3 创建管道​​

​​2.4 模型定位与创建​​

​​2.5 预测结果​​

​​2.6 模型的定位与预测​​

​​3 图像定位的优化、评价和应用简介​​

​​3.1 图片定位的优化​​

​​1、先大后小​​

​​2、滑动窗口的方式​​

​​3、针对不定个数的预测问题:​​

​​4、尝试使用全卷积网络,去掉全链接层,变回归为分类问题​​

​​3.2 图像定位的评价​​

​​3.3 图像定位的应用​​

​​4 补充知识​​

​​4.1 GPU使用于分配​​

​​4.1.1 获取当前主机上运算设备的列表​​

​​4.1.2 设置显卡的使用策略​​

​​4.2 自动图运算​​

​​4.2.1 代码实现​​

1 图像定位的理论知识

1.1 常见的图像处理任务

(1)分类

我们常见的分类问题,这也是核心以及基础

Tensorflow入门与实战学习笔记(十二)-图像定位

图像和位置数据的解析和可视化

(2)分类+定位

Tensorflow入门与实战学习笔记(十二)-图像定位

(3)语义分割

区分到图中每一个点像素点,而不仅仅是矩形框框住

Tensorflow入门与实战学习笔记(十二)-图像定位

(4)目标检测

目标检测简单来说就是回答图片里面有什么?分别在哪里(把他们用矩形框住)

常见的有F-CNN

Tensorflow入门与实战学习笔记(十二)-图像定位

(5)实例分割

实例分割是目标检测+语义分割的结合。

相对目标检测的边界框实例分割可精确到物体边缘

相对于语义分割,实例分割需要标注出图上同个物体的不同个体

Tensorflow入门与实战学习笔记(十二)-图像定位

接下来我们先从简单的入手-图像定位

2 图像定位

对于单纯的分类问题,比较容易理解,给定一幅图片,我们输出一个标签类别,我们已经跟很熟悉

而定位有点负责,需要输出四个数字(x,y,w,h),图像中某一个点的坐标(x,y),以及图像的高度和宽度

有了这四个数字,我们就可以找到物体边框

2.1 分类+回归模型的神经网络架构

Tensorflow入门与实战学习笔记(十二)-图像定位

是一个监督问题,我们采用XCEPTION 进行

我们采用Oxford-IIIT数据集,包含37种宠物,每种宠物200张

Tensorflow入门与实战学习笔记(十二)-图像定位

2.2 训练集解析

我们选用的数据集有猫的图片以及头像的位置(xml)

Tensorflow入门与实战学习笔记(十二)-图像定位

考虑到每张图片的大小不一样,因为这个红框的位置和我们的图片大小有关,我们需要进行等比放缩

Tensorflow入门与实战学习笔记(十二)-图像定位

2.3 创建管道

Tensorflow入门与实战学习笔记(十二)-图像定位

Tensorflow入门与实战学习笔记(十二)-图像定位
Tensorflow入门与实战学习笔记(十二)-图像定位

2.4 模型定位与创建

Tensorflow入门与实战学习笔记(十二)-图像定位

Tensorflow入门与实战学习笔记(十二)-图像定位

2.5 预测结果

Tensorflow入门与实战学习笔记(十二)-图像定位

Tensorflow入门与实战学习笔记(十二)-图像定位
Tensorflow入门与实战学习笔记(十二)-图像定位

2.6 模型的定位与预测

模型保存:model.save(detect_v1.h5) 以及读取模型与前面一章类似

利用训练好的模型,我们来查看我们的预测结果

Tensorflow入门与实战学习笔记(十二)-图像定位
Tensorflow入门与实战学习笔记(十二)-图像定位

我们的实验只做下面这一部分

3 图像定位的优化、评价和应用简介

预测图像位置本质上是一个回归问题,直接回归出位置,有两个缺点:

1、回归位置不准确---利用坐标不精确

2、泛化能力不好---如果前景和背景非常类似图片做测试,泛化能力不好

3、目前算法只能预测单个实例(这个不算缺点)---这里只是为了说明如果多个头像在一张图片上则无法识别

Tensorflow入门与实战学习笔记(十二)-图像定位

3.1 图片定位的优化

1、先大后小

现在整个图片预测出关键点,然后再在预测出的关键点周边,进行二次预测

2、滑动窗口的方式

用一个小的窗口在图片上滑动,每一次做两个预测

  • 是否有关键点
  • 关键点位置
Tensorflow入门与实战学习笔记(十二)-图像定位

3、针对不定个数的预测问题:

可以先检测多个对象,再在多个对象上分别回归出位置

4、尝试使用全卷积网络,去掉全链接层,变回归为分类问题

3.2 图像定位的评价

可以使用IOU来评价图像定位的精度

IoU的全称为交并比(Inersection over Union)

IoU计算的是“预测的边框”和“真实的边框”的交集和并集的比值

Tensorflow入门与实战学习笔记(十二)-图像定位

因此取值在[0,1 ]之间

3.3 图像定位的应用

Tensorflow入门与实战学习笔记(十二)-图像定位

Tensorflow入门与实战学习笔记(十二)-图像定位

比如这里有14个点,我们就可以得到其姿态

Tensorflow入门与实战学习笔记(十二)-图像定位

先评估关键点,再组合关键点,这是一个研究的方向,感兴趣可以深研

4 补充知识

4.1 GPU使用于分配

4.1.1 获取当前主机上运算设备的列表

Tensorflow入门与实战学习笔记(十二)-图像定位

设置当前程序可见的设备范围

Tensorflow入门与实战学习笔记(十二)-图像定位

注意:

Tensorflow入门与实战学习笔记(十二)-图像定位

4.1.2 设置显卡的使用策略

默认情况下,tf将使用几乎所有可用的显存,以避免内存碎片化所带来的性能损失

TF提供了两种灵活控制显存的方法

1、仅在需要的时候申请

Tensorflow入门与实战学习笔记(十二)-图像定位

2、限制消耗固定大小的显存  

Tensorflow入门与实战学习笔记(十二)-图像定位

4.2 自动图运算

TF 2.0汇集了eager模式的简易性和TF 1.0的强大图运算功能。这个合并的核心是tf.function。

注意:

如果代码了使用多个函数,则无需对它们进行全部装饰。

@tf.function装饰器使用静态编译将函数内的代码转换成计算图

小结:

Tensorflow入门与实战学习笔记(十二)-图像定位

注意

Tensorflow入门与实战学习笔记(十二)-图像定位

我们在我们的本次实验中

4.2.1 代码实现

Tensorflow入门与实战学习笔记(十二)-图像定位

我们不需要对model.fit*(

Tensorflow入门与实战学习笔记(十二)-图像定位

因为默认就是用图运算,除非你用eager自定义神经网络 这时候我们才要采取图运算

继续阅读