Window Data Layer

window data layer 的数据是存在硬盘上的图片, 需要在一个txt里指定用于训练或测试的图片以及bounding box, bounding box 对应的标签, 以及bounding box和ground truth bounding box的overlap, 一个例子如下

#
/home/xxx/.jpg 1.0
0.5
0.7 1.0
1.0
1.0
#
/home/xxx/.jpg 1.0
0.5
0.7

其中第一行是图片的index, 从0开始, 接下来三行依此是图片的channel, height, width, 接下来一行表示 bounding box 数量. 再接下来的每一行都是一个bounding box, 第一个数字表示label, 第二个数字表示与真实goundtruth 的overlap, 接下来的四个数字表示x1, y1, x2, y2.

最后, 在prototxt里这样定义

layers {
name: "data"
type: WINDOW_DATA
top: "data"
top: "label"
window_data_param {
source: "window_data_train.txt"
batch_size:
crop_size: # 要把bounding box warp到的大小
fg_threshold: 0.5 # 与ground truth 大于 fg_threshold 的bbox才作为正阳本
bg_threshold: 0.5 # 与ground truth 小于 bg_threshold 的bbox才作为正阳本
fg_fraction: 0.25 # 一个batch中正阳本数量的比例
crop_mode: "warp"
}
transform_param {
mean_value:
mean_value:
mean_value:
mirror: false
}
include: { phase: TRAIN }
}

负样本的label是任意的, 但是overlap要小于threshold (绝对负样本可以将overlap 设置为 0)

2. 如果 fg_fraction 小于 1, 并且如果一个dataset (TRAIN phase / TEST phase) 中没有负样本, 那么逻辑上就是矛盾的, caffe会报错 (但是错误内容是比较莫名其妙的) , 比如:

I0507 ::46.192163  net.cpp:] Setting up fc6
*** Aborted at (unix time) try "date -d @1430963926" if you are using GNU date ***
PC: @ 0x7f5ad296f0db caffe::WindowDataLayer<>::InternalThreadEntry()
*** SIGFPE (@0x7f5ad296f0db) received by PID (TID 0x7f5aacde6700) from PID ; stack trace: ***
@ 0x7f5ad1b19d40 (unknown)
@ 0x7f5ad296f0db caffe::WindowDataLayer<>::InternalThreadEntry()
@ 0x7f5aca2d6a4a (unknown)
@ 0x7f5ac9839182 start_thread
@ 0x7f5ad1bdd47d (unknown)
@ 0x0 (unknown)
./train.sh: line : Floating point exception(core dumped) ./external/caffe/build/tools/caffe train -gpu -solver external/my_models/lsp_window_data/lsp_solver.prototxt

3. 如果bbox坐标超过了image 的大小, 但是bbox有一部分在图像内部, 这种情况是允许的.

LMDB/LevelDB

需要在prototxt里面指定图像大小, 程序内部会check设定的大小是否和数据实际大小一致. 所以数据一旦存储后就不能再改变大小.

Caffe 碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

随机推荐

  1. 微软职位内部推荐-Senior Software Engineer - Back End

    微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...

  2. 微软职位内部推荐-Senior Software Engineer-Eco

    微软近期Open的职位: The MOD Ecosystem team is dedicated to expanding the reach and value of Office by enabl ...

  3. VPS性能测试(3):磁盘IO读写速度、SSD硬盘速度测试

    1.磁盘IO,即输入/输出(Input/Output),这是测试磁盘性能一个重要指标,一些便宜的VPS主机为了降低成本,以大量的低性能的硬盘来充当服务器,导致VPS主机因为IO差而拖了整个主机性能的后 ...

  4. CocoaPods 遇到 A host target is a "parent" target which embeds a "child" target 问题解决

    正在开发的项目中,集成RN,在使用cocoapods 时候,pod install 遇到如下问题: [!] Unable to find host target(s) for ****Extensio ...

  5. 【MOOC EXP】Linux内核分析实验五报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...

  6. Linux 系统目录

    / 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件等 /dev 存放设备文件 /etc 存放系统的配置文件 /home 用户文件的主目录,用户数据存放在其主目录中 /lib ...

  7. kickstart自动化安装

    preboot execute environment预启动执行环境--intel开发的技术,计算机可以通过pxe协议从网络引导启动. 工作模式为客户端/服务器端的c/s模式 客户端从远端服务器下载镜 ...

  8. multer详解

    Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON.二进制.字符串)数据,可以使用body-parser中间件.而文件上传(multipart/form-data请求),可以基 ...

  9. Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)

    https://blog.csdn.net/c406495762/article/details/75172850

  10. Windows下多线程编程(二)

    线程的分类 1.     有消息循环线程 MFC中有用户界面线程,从CWinThread派生出一个新的类作为UI线程类CUIThread,然后调用AfxBeginthread(RUNTIME_CLAS ...