2017 年飞快地过去了,这一年的生活经历了巨大的改变。年轻人总是这样,生活是不可预测的,则充满乐趣。

学业

博士毕业

在导师的 push 下,终于按时完成博士论文撰写、送审,5 月份通过了博士学位答辩。整个博士论文环节中,深深感受到了清华为保证培养质量,而设下的种种关卡。为拿到博士学位,真是要过五关:开题答辩、中期答辩、预答辩、论文送审、最终答辩。这里面难度比较大的环节是开题答辩、中期答辩和论文送审。在写论文和答辩的过程中也算是系统地整理了研究课题,让其逻辑自洽,完整地探索了物体检测的三大难:速度、精度和尺度。在未来展望里,我总结了很多条研究方向。毕业后的半年,我居然真的带领实习生们把其中几个方向探索了一遍,出了不少成果。

论文发表

2017 年,一作的 CVPR 论文意外被拒。实习生的 Paper 意外接收,总算了却一桩心事。上半年忙于毕业,没能专注地做什么事情,ICCV 也没有什么收获。本质原因还是早已对 Paper 看淡了。不过后半年暑期实习的实习生们,算法产品化后,顺便投搞了几篇到 CVPR2018。他们都是第一次写 CVPR。看着他们收获满满地完成完整的科研训练,非常欣慰。

工作

带领团队

带领团队,包含人才培养和算法攻关两部分。去年的计划里,有一条是带出一支有战斗力的团队。在毕业后 All in 的后半年,看起来是实现了一部分。一个实习生为主的团队,有很大的不稳定性,这跟算法快速迭代的需求是矛盾的。实习生管理的学问非常大,2018 年应该会更加游刃有余。新的一年全职员工数量也会快速增长,会带来新挑战。

新算法

今年的算法研究跟产品走得更近了,算法突破了一些长期瓶颈。新算法的研究上也实现了突破。总体看,非常成功。

产品

算法从服务器往前端移,AI 云 +AI 端的战略,得到了业内普遍认同。在这样的机遇里,我们率先推出了低成本高性能产品。产品落地,卓有成效。

生活

搬家

从 15 分钟自行车程换到了 22 分钟车程的地方,从合租换成了整租。家里更加宽敞舒适了。多亏了各种米家产品,净化器、加湿器、净水器、台灯、空调伴侣、人体传感器,以及还没拆封的烟雾传感器、天然气传感器和智能马桶盖。。让家里更加舒适了。打印机、LG Ultrafine 4K 显示器,Magic keyboard 和 Trackpad 也让家里的办公环境更加舒适。

长居北京

今年一个非常出乎意料的决定,就是没有定居深圳。尽管我们都对深圳充满了热爱,但北京的人才吸引力,还是大过了生活质量的需求。意外的是,今年冬天,北京的空气质量居然出奇地好。后来,想明白了,也许生活本身就不该是确定的。喜欢深圳这个城市,也许仅仅是因为在那里长期生活过呢?回答这个问题,唯一的办法就是做更多尝试。

周游世界

今年是出差的转折点,以前喜欢到处跑,如今如果能待在家里,何苦要奔波呢?

旅行,则不一样。完全放松的旅行,是生活重要的一部分。抓住学生时代的最后一点闲散时间,完成了新疆徒步的愿望,见识了北疆美轮美奂的大草原,草原的人和美景。路上,我们还遇到一条不知道从哪儿跑来的狗,一直跟了我们好多天,我们给它起名来福,加上小豆子和小莲子,就组成了阿尔卑斯山上的少女。

电子产品

Apple Watch Series 3 增加了电话功能,芯片性能也提升不少,体验非常好,现在可以两天充一次电了。

iPhone X 的 OLED 屏幕很舒服,人脸解锁还挺靠谱,多亏了今年冬天没怎么戴口罩。

iPad Pro 除了屏幕大了一些,配上 Apple Pencil 可以写写画画。但实际使用率还是比较低。新鲜感一过,就跟旧的 iPad 一起落灰了。

Kindle Oasis 2 换了七寸屏幕,实际体验大了很多,读起来可以少翻很多页,并没有感觉很重,握持手感也很好,自动调节亮度的功能不错。相比 Oasis 一代,最大的好处是非常接近纸质书了。

健身大计

今年健身房去的少了很多,夏天回清华游了几次泳,很多时候一天下来最大的运动量居然是通勤的自行车或者步行。

冬天到了,又新购置了跑步的装备,周末去奥森跑步体验不错。以后要成规律才行。

谈婚论嫁

趁着国庆长假,参加了本科舍友的婚礼,其实是全程吃喝玩乐的贵阳多日游,结束以后又新成了一对儿,现在天天在朋友圈秀恩爱。离开贵阳,和爸妈一起去 xhh 家里,又是几天吃喝玩乐。有了婚姻,两个本来完全没有关系的大家庭,突然亲密起来,想想真是人类社交中的一大乐事。婚礼是父母亲的,生活则是两个新人的。身边的朋友慢慢都结婚了,希望我们都能在经营感情上越来越成熟。

2018 年想做的事

  1. 创造更有利于个体成长的环境,提升团队合力
  2. 亲自指导 12 个实习生,其中本科生不低于一半
  3. 做一款爆品,并找到下一个实实在在的落地场景
  4. 一次长距离徒步
  5. 骑车 + 游泳 + 跑步 + 周末登山常态化
  6. 填补旅行空白省份:云南、湖南、内蒙
  7. 做更多回馈 DeepLearning 社区的公益
  8. 做一件回馈实验室的事情
  9. 带爸妈去一趟大草原
  10. 完成一次英语演讲

很多人问题我的团队在做的事情,团队名字叫前端计算(有的叫边缘计算),这里的前端是相对服务器后端而言的。在深度学习算法比较慢的时候,必须跑在服务器上。但随着神经网络加速技术发展、专用芯片和通用芯片的计算能力提升、隐私和处理速度需求、数据中心成本限制,深度学习的计算需要放在设备上进行,这就是前端计算。这里的挑战非常大,需要算法又快又好,还要与设备深度配合。算法方面,我们覆盖大规模视频理解和深度学习相关的基础技术。我们一直在招人,全职和实习都可,我的邮箱是“姓名全拼 @公司域名”。希望你踏实勤奋,coding 能力强,喜欢做研究或者做算法到产品的转换。

春游登山计划

天气

2017.4.15, 多云,13-27℃

时间安排

8:00 包车出发
9:00 到达阳台山自然风景区门口
10:00 到达金山寺
10:40 到达绿栅栏
11:30 到达观景台
12:30 到达山顶
13:00 向凤凰岭进发
15:00 开始下撤
17:00 到达龙泉寺
17:30 到达凤凰岭景区出口
18:00 上车返程
19:00 到达市区吃饭

Read More

在清华大学交换学习的小威,来自美国波士顿。前天一起吃午饭,我给他讲起一个成语,叫“白驹过隙”。意思是时间像骏马飞奔而过地面上的缝隙一样。虽然以他的中文背景未必能参透这个成语的精妙之处,但我们关于时间飞逝的感受也许是相似的。他不久就要回到波士顿继续读大学,而我也要开启新的一年。

2016 年里,大部分事情的发展都超出了我的预料,有些惊喜,有些震惊,有些彷徨。人工智能作为年度热词,就像 Nvidia 的股价一样,一路飙升。

观点

人工智能

圈外的评论家们今天说人工智能是炒作,明天说人类要阻止人工智能。而在圈内,以深度学习、对抗学习、强化学习为代表的技术正突飞猛进,不断在产品层面落地。上亿人的人脸比对技术,前端相机上的实时人脸检测跟踪技术,强化学习驱动的智能相册人脸聚类,人脸布控疑犯抓捕系统,视觉感知驱动的驾驶辅助系统,在我看得见的范围内不断发生。

2012 年 7 月,博士入学前,我第一次听说深度神经网络,在 768 创意产业园的一个深度学习读书会。彼时的深度学习已经在语音识别上实用,不久之后 NIPS 大会上,Hinton 及其弟子发布 ImageNet 图像识别比赛冠军解决方案,深度卷积神经网络,其影响一直到今年,热度从未减退。这五年,正好是我的博士生涯,我是幸运的一代。在浪潮之巅,才看得清哪里是朝阳,哪里是余晖。

2016 年,拉斯维加斯,奢华之城。CVPR 盛会上,深度学习占据了多半领域。我第一次在 CVPR 上展示论文,用深度学习实现的快速而准确的人脸检测现场演示,吸引了大量围观人群。而我新开发的人脸检测算法,其速度之快,精度之高,再过几天就要在 2017 年拉斯维加斯的 CES 上由 Nvidia 在他们的无人驾驶芯片上展示。

技术与产品

这两年毕业了大量的博士生,然而在工业界的发展却是大相径庭。一个人的发展,首先要靠自我奋斗,但也要考虑历史的进程。人工智能技术的落地,首先要考虑刚需。什么是刚需?我认为有两点,开源和节流。人工智能技术创造的价值,一定是从这两个方向去考虑的,意淫出来的商业模式撑不起独角兽的市值。其次,科学家离商业模式还有很多环,商务、销售、产品、研发,任何一环散了,事情就做不好。

做事与做人

几天前,峰瑞资本总结 Google 入华十年留下了什么。讲的是留下的 50 各 Google 员工的发展。看完他们的故事,我想,一个人无论什么时候,一定要在朝阳产业里做核心的职位。在年轻的时候,周围必须是一群最优秀的人。如果这样的条件满足了,那就看自己的本事以及老板的诚意吧。人生短暂,与志同道合的人共事。

学术故事

这一年发生了很多的小事,也认识了很多的人,见识了许许多多的人和事。有圈子,就有故事,有故事就有八卦。见到了很多大人物、小人物。在圈子里待久了,就能见到很多事情的发生和发展。

周围的人

年底了,导师评上了教授,是实验室的大好事。博士二年级的时候,我在一封回给老师的邮件里,说期望两件事情,一是做脚踏实地的研究,二是看博士期间看到导师评上教授。如今至少第二个愿望实现了,回顾往事,感慨无限。

我的学术 mentor 大神事业一帆风顺,回想起一年多以前,并肩写代码的经历,也是感慨颇多。他优秀的领导才华、敏锐的技术判断和舍我其谁的担当,创造了可观的价值,培养了一支极富战斗力的团队。他佩服的是技术大神,我想在这个时代,这个愿望比他的偶像会更快地实现。

我的朋友大部分过的都不错,我祝福他们。

生活

  • 这一年忙忙碌碌,消瘦了一些,主要是因为饭太难吃了,实在吃不下。很多时候休息不够,健身坚持的不并不好。
  • 去了趟武夷山和婺源,然而似乎都太匆忙。
  • 无法适应校园的生活了,太安逸。
  • 经济大环境不好,投资收益为负。
  • 电子产品都是小孩子的游戏,我拥有几乎所有的最新产品,却带不来更多的满足感。穷的身无分文的时候,凑钱买的第一个 iPad,是最满足的时候。超前的消费观才能带来满足。

未来

到了找工作的年纪,并没有去找工作,然而大环境太好,导致无数的猎头找上门来。确定的几家 offer,都声称是他们给出的最高的级别和薪酬期权包,也都自以为是市场上最有竞争力的 offer。一个人的发展,首先要靠自我奋斗,但也要考虑历史的进程。上大舞台,干大事业,这是清华几十年来的就业定律。我常常想,这个大舞台到底是什么?
一年以前,我从未想到今天的 AI 格局,等到明年,一切也未必会尘埃落定。

2017 年想做什么?

  • 带出一支富有战斗力的团队
  • 拓展知识领域
  • 川西徒步、自驾
  • 学编曲
  • 健身圆环达标每周 3 天
  • 投资收益 5%+

今天推荐 ownCloud, 一个建立私有云存储的工具。

为何要用私有云

最好用的云存储服务是 Dropbox,这点大家公认。然而在我天朝,Dropbox 访问常常受限,配合翻墙工具使用尚可接受,但仍有不便之处,比如在翻墙工具不稳定或者分享文件给别人的时候。同理,Google Drive 也有这个问题。
国内以百度云为首的一批云服务则以不可信任著称,重要文件还是算了。
ownCloud 作为一款开源工具,可以跨多平台使用,服务端可以部署在 linux 主机上,客户端则支持 Linux, macOS, Windows, iOS 以及 Android, 当然还可以像其他云服务一样从网页端访问。 可谓一款全平台工具。

ownCloud 部署 Tips

部署的细节,官网查询即可。这里分享几个 tips.

域名映射

需要准备好一台有固定 ip 的 linux 主机。本质上 ownCloud 是作为一个网站服务,同时可以文件同步。部署好以后是按照 ip 地址访问的。就像部署网站一样,可以做域名映射,比如将 http://xxx.xxx.xxx.xxx/ownCloud 这样难记的地址映射到 http://drive.example.com . 这样非常好记的地址。

SSL 加密

部署好以后,建议做 SSL 加密,需要一个证书,通常证书是被某些公司垄断的,需要像域名一样按年付费购买。证书按照安全性需求分为几个等级,安全性要求越高就越贵,比如支付场景。也可以自己生成 SSL 证书,但是因为未认证,所以访问你的网址的时候,浏览器会提示不安全。如果你经常通过 ownCloud 分享文件给别人的话,遇到小白可能会困扰。做好 SSL 加密以后,你的云服务地址就变成了 https://drive.example.com .

账号管理

ownCloud 设定好以后可以建立多个账号,并分群组,所以你建好的私有云可以给你的好友开通账号。这样每个人使用的体验跟常见云服务是差不多的。

存储空间

有了 ownCloud 私有云,存储空间就只跟你的 Linux 主机存储空间大小有关了。如果你之前购买过 VPS,直接在 VPS 上设置是最稳定的了。对了,Digital Ocean 的 VPS 可以单独购买 SSD 存储空间了。如果不够用了,按需购买就行了。Digital Ocean 还是非常稳定的。(Digital Ocean 应该给我广告费:-))

Enjoy.

Who needs a private cloud?

Today let’s talk about how to build private cloud.
Public cloud service like Google Drive and Dropbox are blocked in China mainland. And the local services like Baidu Yun and others are very unreliable.

How to build one?

Use an open source tool ownCloud.

Tips

Choose a domain name.
Use SSL.
Build you ownCloud on your VPS.
Create accounts for your friends.

iOS 10 Public beta version does not support PPTP anymore for security consideration. In a previous blog, I’ve shown how to setup PP2P VPN server on Ubuntu 14.04. Now, let’s setup L2TP/IPSec VPN.

Step 1: Install requirements

First change to sudo mode, because we’ll have to use sudo many more times.

1
sudo -s

then,

1
apt-get install openswan xl2tpd ppp lsof

Step 2: Configure firewall

1
iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR-SERVER-IP% -o eth

Here, please replace %YOUR-SERVER-IP% (remove % of course)
do the following to modify /etc/sysctl.conf:

1
2
3
4
5
6
7
8
9
echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" | tee -a /etc/sysctl.conf
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done

Apply the above change with

1
sysctl -p

Step 3: Change /etc/rc.local

1
vim /etc/rc.local

Before the line exit 0, add the following line (remember to replace %YOUR-SERVER-IP%), to make sure the modifications still work after reboot:

1
2
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR-SERVER-IP% -o eth+

Step 4: Configure Openswan (IPSEC)

1
vim /etc/ipsec.conf

add the following in conf setup part

1
2
3
protostack=netkey
force_keepalive=yes
keep_alive=60

add the following in the end of the file (remember to replace %YOUR-SERVER-IP%):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
ike=aes256-sha1,aes128-sha1,3des-sha1
phase2alg=aes256-sha1,aes128-sha1,3des-sha1
type=transport
left=%YOUR-SERVER-IP%
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=10
dpdtimeout=20
dpdaction=clear

now, add the following line to /etc/ipsec.secrets (remember to replace %YOUR-SERVER-IP% and your-password):

1
%YOUR-SERVER-IP% %any: PSK "your-password"

now use

1
ipsec verify

to check errors, it may show something like this:
ipsec verify
The errors and warnings are okay. the Failed error is caused by an old perl version and can be ignored.

Step 5: Configure xl2tp

1
vim /etc/xl2tpd/xl2tpd.conf

add the following lines to the end:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[global]
ipsec saref = yes
saref refinfo = 30
;debug avp = yes
;debug network = yes
;debug state = yes
;debug tunnel = yes
[lns default]
ip range = 172.16.1.30-172.16.1.100
local ip = 172.16.1.1
refuse pap = yes
require authentication = yes
;ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

now, create options.xl2tpd

1
vim /etc/ppp/options.xl2tpd

add the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
auth
mtu 1200
mru 1000
crtscts
hide-password
modem
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

now, add your VPN accounts:

1
vim /etc/ppp/chap-secrets

each line is one account, you can add multiple lines:

1
2
3
# Secrets for authentication using CHAP
# client server secret IP addresses
your_user_name l2tpd your_password *

Step 6: Restart the services

1
2
service ipsec restart
service xl2tpd restart

Client configurations

Take iOS 10 for example, choose L2TP, use your account and PSK
Enjoy.

博二之前,想对生活做加法; 博四以后,想对生活做减法。
博士一年级,刚刚搬进宿舍的时候,买各种各样的物件,宿舍收拾地井井有条。现在,无论我怎么打扫宿舍,都不会比我当年的一半干净,而且我想扔掉所有能够重新买到的东西。
好庆幸不用在同一个园子生活九年, 以致于你所有的青春, 都绕着一片存在了一百年的小园子转。

昨天在 MacBook 上配了几个平时在 Ubuntu 工作机和服务器上用的工具,Caffe, TensorFlow, gymopencv.
Caffe 可能是最麻烦的一个,装之前做了点功课。可是按照官方的安装指南,居然一个坑都没踩,就编译成功了。以后 CPU only 的 test demo 可以在 MacBook 上跑了,还是很方便的。
TensorFlow纯 python 的环境,毕竟大公司出品,安装太容易了。
gym也是 python 环境,安装就一条命令。
opencv在装 Caffe 的时候就装好了。用 opencv 的官方 sample 跑了个摄像头人脸检测的 c++ demo.

对了,OSX 上的开发环境,有命令行工具就行了,根本不需要装 Xcode. 那些说要先装 Xcode 的都是误导啊。
记得我 MacBook 开箱第一件事是 g++ 编译一个 hello world 的 cpp 文件,它就提示我装一个命令行工具。装完开发环境就 OK 了。

iTerm, oh-my-zsh, homebrew, vimrc, 纯 Unix 的环境体验。我的 MacBook 小白真是要啥有啥,配上高颜值,高清屏和不到一公斤的重量,真是一个完美的休闲工作机。
从 Win10 切到 OSX,感觉没有花费任何过渡时间,我直接就适应并沉迷于这个环境了。

Yes, I did not bought new devices since a long time ago. Nothing exciting was created, and I need nothing more, I thought.
In the recent month, I bought three new toys.

  • Kindle Oasis
  • MacBook
  • Apple Watch Band Milanese Loop

Kindle Oasis ☆☆☆☆☆

The last kindle I used is Kindle Paperwhite 2. It weights a little more than 200g. However, Kindle Oasis weights only a little more than 130g, which is lighter than iPhone 6s. The screen seems very close to real book, and I love it.

MacBook ☆☆☆☆

I use laptop for light office work and ssh.
I was using ThinkPad T440 with SSD and 8G CPU memory. It runs Win10 and I rely on MobaXterm to get unix experience. Everything seems OK, but not amazing. The screen is not high-resolution, with weak unix experience.
Apple just renewed MacBook, so I bought a silver item. It is light, very light. The keyboard is not so hard to adapt to. I love the full unix experience with iTerm and oh-my-zsh. The uniform experience with iPhone and iPad makes it better.

Milanese Loop ☆☆

The Apple Watch Milanese Loop feels really bad. It’s made of stainless steel and make me feel awkward when using metal MacBook. After two days, I began to use my sport band again.

Today I recommend a tool for managing your papers that store in you mind. Mendeley, an all-platform tool for managing your references.

  • It is web-based, and provide apps for Mac OSX, Linux, Windows and iOS and syncs your library across them.
  • It’s free for personal use with a limit of 2GB, which should be enough for most users.

    Pay if you need more storage or group cooperations.

  • Another feature I love most is that it can analysis pdf files automatically.

  • Of course, you can highlight and annotate interesting sections and record your thoughts, and they are part of your library and will syncs across all your devices.
  • It is kind of academic searching engine itself. You can discover more or search by your knowledge.

I won’t say Mendeley is the best one, but it’s much better than keeping everything in mind and downloading some paper every time you want to read it again:)