记录SSD中的一些东西
AnnotatedDatum是存放图片和BBox的类
// 估计是一张图片就对应于一个AnnotatedDatum
message AnnotatedDatum {
enum AnnotationType {
BBOX = 0;
}
// 存储图片的数据,需要imdecode
optional Datum datum = 1;
// If there are "rich" annotations, specify the type of annotation.
// Currently it only supports bounding box.
// If there are no "rich" annotations, use label in datum instead.
optional AnnotationType type = 2;
// Each group contains annotation for a particular class.
// 每一类都会有一个annotation_group保存属于改类的bbox
repeated AnnotationGroup annotation_group = 3;
}
数据增强效果图
假设原图输入是一张640*480的图片,这里由于版面问题我放缩了图片尺寸并且没做mean subtract,由于最后会有resize参数导致输出的图片都会resize到300x300,但是主要看的是增强的效果,SSD中的数据增强的顺序是:
DistortImage: 这个主要是修改图片的brightness,contrast,saturation,hue,reordering channels,并没改变标签bbox
ExpandImage: 这个主要是将DistortImage的图片用像素0进行扩展,标签bbox此时肯定会改变,就重新以黑边的左上角为原点计算[0,1]的bbox的左上角和右下角两个点坐标。
BatchSampler: 由于这里选错图了,BatchSampler必须要有GT的存在才会生效,由于我做的是人的检测所以图中没人就不会生成sampled_bboxes,后面修改例子。sampled_bboxes的值是随机在[0, 1]上生成的bbox,并且和某个gt_bboxes的IOU在[min, max]之间。由于proto中配的max_sample都是为1,所以每个batch_sampler可能会有1个sampled_bbox,随机取一个sampled bbox并且裁剪图片和标签。标签裁剪也很好理解首先要通过ProjectBBox将原坐标系标签投影到裁剪后图片的新坐标系的坐标,然后再ClipBBox到[0,1]之间。
Resize:放缩到300x300,最后将图片放缩到300x300,标签框也是线性放缩坐标而已。
Crop:原本data_transformer还会crop的,这个参数是配在prototxt中,默认是原图 所以就和没crop一样。如果要crop的话标签也是会和之前BatchSampler那样处理。

  
记录SSD中的一些东西的更多相关文章
- 记录JavaFx中非常重要的细节,入门了也未必知道
		
title: 记录JavaFx中非常重要的细节 JavaFx中有一些疑难杂症,或许你以为你掌握了JavaFx,但是也未必知道我所说的这些问题和解决方案,如果有帮助到你的,可以加群最大最活跃的JavaF ...
 - iOS开发几年了,你清楚OC中的这些东西么!!!?
		
iOS开发几年了,你清楚OC中的这些东西么!!!? 前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1 ...
 - 深入解析SSD中MLC与SLC的性能差异
		
固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘. 固态硬盘的接口规范和 ...
 - Oracle生成查询包括对应于所有数据表记录语句中指定的字段名
		
应用:已知的字段名,表中的所有数据的查询数据库中包含的所有数据表的字段名 操作方法:指定字段名,用户数据库表,它可以执行以下查询 --Oracle生成查询包括对应于所有数据表记录语句中指定的字段名 d ...
 - 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
		
一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...
 - 解读SSD中的Default box(Prior Box)
		
1:SSD更具体的框架如下: 2: Prior Box 缩进在SSD中引入了Prior Box,实际上与anchor非常类似,就是一些目标的预选框,后续通过softmax分类+bounding box ...
 - 问题记录 | VScode中使用IntelliJ的快捷键
		
问题记录 | VScode中使用IntelliJ的快捷键 主要想用ctrl+alt+l格式化Python代码 安装VScode的插件:IntelliJ IDEA Keybindings 安装方法: I ...
 - 记录vue中一些有意思的坑
		
记录vue中一些有意思的坑 'message' handler took 401ms 在出现这个之前,我一直纠结于 是如何使用vue-router或者不使用它,通过类似的v-if来实现.结果却出现这个 ...
 - SqlServer中怎么删除重复的记录(表中没有id)
		
SqlServer中怎么删除重复的记录(表中没有id) 其实我在别的网址也查到过删除重复的记录,不知道我是我SqlServer2012版本太低还是啥原因 delete from scwhere (c# ...
 
随机推荐
- idea 调试远程tomcat
			
# ----- Execute The Requested Command ----------------------------------------- JAVA_OPTS="-age ...
 - setsockopt 详解
			
1. closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ...
 - linux arm的存储分布那些事之一
			
转自:http://blog.csdn.net/xiaojsj111/article/details/11724081 linux arm 内存分布总览 上图是linux的arm的虚拟地址分布 ...
 - 算法入门系列2:k近邻算法
			
用官方的话来说,所谓K近邻算法(k-Nearest Neighbor,KNN),即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个 ...
 - java虚拟机字节码执行引擎
			
定义 java虚拟机字节码执行引擎是jvm最核心的组成部分之一,它做的事情很简单:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.在不同的虚拟机实现里,执行引擎在执行java代码 ...
 - django celery异步框架
			
描述:实现运维平台的异步执行与定时任务,以下简单描述了安装过程及使用. 安装django和celery pip install django pip install celery pip inst ...
 - Go语言标准包之用io包模拟curl
			
最后一个书上的标准包,但真正学习的路才开始... package main import ( "bytes" "fmt" "os" &quo ...
 - 前端学习——css(初级)
			
1.Css盒模型(box model) web开发中,html的每个元素都是盒子,盒子可以装内容(content).可以有填充物(padding).有外壳(border) 和 外保护层(margin) ...
 - 针对MySql封装的JDBC通用框架类(包含增删改查、JavaBean反射原理)
			
package com.DBUtils; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.Dri ...
 - STL容器 -- Queue
			
核心:先进先出, FIFO. 头文件: #include <queue> 常用的构造方法: queue<int> qu1; //构造一个空的存放 int 型的队列 queue& ...