2019年7月12日18:42:34

写了个更细致的公式推导和代码解释的 sfmlearner剖析

2019年3月2日09:29:54

正在看SfMLearner的pytorch源码,意识到无监督的深度估计最重要的是利用实体的一致性

来建立loss。

对于一个不移动的物体,相机从一个pose到另一个pose,那个东西一直在那,可以通过

三维结构、光照 等不会突变来建立loss。

对于移动的刚性物体,比如汽车,可以先检测出来,再做一致性的约束。

对于移动的非刚性物体,比如人啊、狗啊之类的,还需要另外的模型来描述。我记得是有

不少这方面的优秀的工作的。

可以做的比 生成一个检测运动区域的mask 更近一步。

2019年3月6日15:55:31

又看到了arxiv上好几篇无监督的单目深度估计论文看起来还不错...

深度学习加slam的方向发展太快了...

2019年3月11日19:05:37

static_frames.txt 是采集数据的 车子停下来 的画面的图像编号。

看了一天的sfmlearner和struct2depth的 tf 代码。struct2depth报了个错,还没跑起来。

忽然想到把单目深度估计发展出来的技巧用到双目上,岂不是又可以提升一波?

想要重构一下 tf 的代码以方便调试,发现 tf 根本就没有什么操作空间啊!tf 真的是反人类!

真的有 茴字的四种写法 这个问题。。。

2019年3月13日09:11:46

看的是下面这个库里的代码:

https://github.com/ClementPinard/SfmLearner-Pytorch

因为要训练自己拍的视频,所以要了解data_loader。自己的数据集肯定没有kitti那么复杂,

就是拍了视频,然后分解成图片。就 000001.jpg、000002.jpg、...... 加上一个内参

 首先是读入了图片并resize到 128 x 416大小
# 在 kitti_raw_loader.py load_image 函数
img = scipy.misc.imread(img_file)
zoom_y = self.img_height/img.shape[0] # 这里把原始图片resize到指定尺寸了
zoom_x = self.img_width/img.shape[1] # self.img_height = 128 self.img_width = 416 img = scipy.misc.imresize(img, (self.img_height, self.img_width))
return img, zoom_x, zoom_y # 返回的是长宽的比例系数 然后是读入了原始的相机矩阵P,并乘以上面的缩放系数
# get_P_rect 函数
filedata = self.read_raw_calib_file(calib_file)
P_rect = np.reshape(filedata['P_rect_' + scene_data['cid']], (3, 4))
# 这里读入了 投影矩阵 P 并 reshape 成了 3 x 4 的矩阵
# P_rect_02:
# [[ 7.183351e+02 0.000000e+00 6.003891e+02 4.450382e+01]
# [ 0.000000e+00 7.183351e+02 1.815122e+02 -5.951107e-01]
# [ 0.000000e+00 0.000000e+00 1.000000e+00 2.616315e-03]] P_rect[0] *= zoom_x # 对第一行和第二行乘以一个比例系数
P_rect[1] *= zoom_y
return P_rect 然后是做了
scene_data['intrinsics'] = scene_data['P_rect'][:,:3] # 只取前3列,得到内参
得到缩放后的内参 这样的话,图片也缩放到了指定尺寸,内参也缩放了,可以送入网络了
自己的数据也要做一样的操作。 然后是 sequence_folders.py
for i in range(demi_length, len(imgs)-demi_length): # 1,321-1
sample = {'intrinsics': intrinsics, 'tgt': imgs[i], 'ref_imgs': []}
for j in shifts: # shifts = [-1, 1]
sample['ref_imgs'].append(imgs[i+j]) # tgt 是 i ref 是 i-1 和 i+1 到了实际要输入网络的时候,再__getitem__读入图片并做 transform
custom_transforms.py里也有对图片做随机裁剪时内参要做什么操作的代码。

2019年3月22日13:12:11

之前训练了一个晚上的sfmlearner,1600张图片,跑了200个epoch,valid loader误用了

train_transform,不过应该没什么大碍,但是最后看效果相当不好,只能简单的区分出远近,

而且预测出来的深度闪来闪去。这个纯当练手了,不打算继续训练了。

需要注意的一点是:手机拍摄自己的训练视频时,尽量走快一点,不要停留!

我手机拍的视频,绕着建筑物走一圈,拍了差不多五分钟,8100张图片,

但是看图片的话帧间运动有点小,所以每隔5帧抽一帧出来训练,所以只有1600张图片。

还简单训练了下LKVO,或者叫DDVO,收敛的确比较快,但是运动部分和黑色区域的预测简直

就是反的!离的近的预测成了离的远!可能是我迭代次数不够。后续有时间再细读代码。

搞 struct2depth 去了。

SfMLearner 记录的更多相关文章

  1. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  4. 2015 西雅图微软总部MVP峰会记录

    2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...

  5. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  7. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  8. ASP.NET Core应用中如何记录和查看日志

    日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性.我们知道ASP.NET Core使用的是一个极具扩展性的日志系统,该系统由Logger.Logger ...

  9. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

随机推荐

  1. JAVA高级-面试题总结

    最近面试了一些公司,针对面试中遇到的问题在此记录,提升自己,造福大家 一.java源码相关 ArrayList创建和add等各种api使用原理 HashMap 的创建,put原理,和HashTable ...

  2. java 对同一个文件进行读写操作

    同一个文件是不可以进行同时的读写的,因为我们写入文件会覆盖原文件的,如果这样,对于同一文件来来说,文件发生覆盖,无法进行下次读取 当然,对于两个不同的文件,可以一边读一边写的操作 题目:一个文本中存储 ...

  3. IDEA创建简单SpringBoot项目

    环境:jdk 1.打开IDEA -->New --> Project -->Spring Initalizer-->next 2.此处,只做创建示例,所以next后Group等 ...

  4. ios12更新开发者需要做什么

    1.StatusBar内部结构改变 现象:crash crash log: -[_UIStatusBarIdentifier isEqualToString:]: unrecognized selec ...

  5. 神州数码策略路由(PBR)配置

    实验要求:掌握PBR配置的方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ...

  6. you-get 下载视频

    亲测有效,没在别的平台试,道理是相通的 平台:Windows 10 所需工具: python3,pip3,you-get 步骤流程: 正确安装python3,配置环境变量 (目前使用的是3.6+) 打 ...

  7. ccf-炉石传说-201609-3

    大概是CCF 第三题比较简洁的一道题吧 尽量设计好一个数据结构: node t[2][10]: 存双方的英雄和随从 int    num[2]: 存隋朝的数量 用p来实现双方的切换,因为有统一 的接口 ...

  8. SQLI DUMB SERIES-20

    (1)登录成功后页面: (2)登录成功后,用burp开始抓包,刷新浏览器页面,将会跳出如下页面 (3)根据各种提示,知道需要从cookies入手,寻找闭合方式 闭合方式为单引号.注释符也可以用 (4) ...

  9. MATLAB 进行五种边缘检测

    自定义函数: function []=edge_detect(image_name) a=imread(image_name); I=rgb2gray(a); BW1=edge(I,'Roberts' ...

  10. PX转REM简易计算器(适用于fittext.js插件计算)

    当你使用fittext.js插件时,通过量取的像素单位PX计算出REM单位值,是一件比较麻烦而繁琐的,为了提高工作效率,自己闲暇写了个小DEMO,现在给大家分享出来. 先看dom: <heade ...