Where Are Pixels? -- a Deep Learning Perspective

Technically, an image is a function that maps a continuous domain, e.g. a box $[0, X] \times [0, Y]$, to intensities such as (R, G, B). To store it on computer memory, an image is discretized to an array array[H][W], where each element array[i][j] is a pixel.

How does discretization work? How does a discrete pixel relate to the abstract notion of the underlying continuous image? These basic questions play an important role in computer graphics & computer vision algorithms.

This article discusses these low level details, and how they affect our CNN models and deep learning libraries. If you ever wonder which resize function to use or whether you should add/subtract 0.5 or 1 to some pixel coordinates, you may find answers here. Interestingly, these details have contributed to many accuracy improvements in Detectron and Detectron2.

Deep Learning Experiments and Claims

这几年来, 学习到的最多的是对待 research 的态度. 因此说说写 paper 和做实验的体会.

实验与 claims

实验是为了证明或强化文章里给出的 claim / hypothesis 的.

Ross ICCV 2019 tutorial 最后谈了谈怎么写 paper. 第126页说, 文章中所有的 claim, 理想情况下都应该要么是文献中已有的 claim, 要么是有实验能够证明的 claim.

On Environment/Package Management in Python

I'm involved in a few open source projects and I often help users address their environment / installation issues. A large number of these environment issues essentially come down to incorrectly / accidentally mixing multiple different python environment together. This post lists a few common pitfalls / misconceptions of such.

写House3D渲染的时候踩过的坑

House3D 是一个用于research的交互式3D环境. 用户可以载入一个来自SUNCG数据集的房子的模型,然后在里面走来走去,并获得first-person view的图片输入.

我写了House3D的渲染代码,过程中踩到了不少神奇的坑,坑踩的多了就觉得干脆记下来吧.

Unawareness of Deep Learning Mistakes

TL;DR: People are hardly aware of any deep learning mistakes they made, because things always appear to work, and there are no expectations on how well they should work. The solution is to try to accurately reproduce settings & performance of high-quality papers & code.

Trouble Using macOS

因为工作原因, 第一次开始尝试使用macOS. 这里列一下一些主要的问题, 方便从GNU/Linux切换过来的的时候参考. 有了解决方案或新的问题我会继续更新. 这里的问题有一些只是习惯不一致, 我可以通过在Linux上配置新的使用习惯来调整自己, 另外一些则是功能缺失.

现在还没决定要不要长期用下去, 因为以下不少问题还解决不好. 当然macOS的优点也很明显:能够使用outlook客户端处理公司邮件/calendar(这是关键原因); UI好看(主要是字体渲染); 不容易出硬件问题(连不上wifi/投影之类的). 所以用于日常开会处理邮件到处跑比较方便, 可能不会用来写很多代码.

Exploration & Exploitation

1

一眨眼就已经毕业了, 在CMU呆了一年半, 大概只做了三件事情.

  • 第一个学期又看了一点geometry, 然后趁机把全景拼接 整体上做的科学了. 尤其是写了BA之后, 能把理论上该拼好的图都拼好了.

  • 写了一个tensorpack. 主要是离开了贵司之后发现基本找不到可用的炼丹炉前端, 就在TensorFlow发布之后开始造了一个. 当然现在还是缺很多feature(以及背后的system), 不能满意的scale起来, 最多只能跑跑ImageNet.

  • 赢了ViZDoom的比赛并且发了篇paper, 搞了个小新闻.

如果说还有一点什么成绩, 那就是做了一些低精度网络的东西.但这些都是次要的, 很惭愧, 就做了一点微小的工作.