“作为一名计算机视觉研究人员和开发人员是什么感觉?你每天都在做什么?”
“你已经写了一本计算机视觉书和一门课程。现在你开始写一本关于深度学习的新书?你是如何完成这一切的?你的秘密是什么?”
萨安维的建议是我个人最喜欢的建议之一:
“阿德里安,你应该写下一本关于生产力的书。”
我如何度过我的一天。
平衡我作为计算机视觉研究人员/开发人员的角色与PyImageSearch上的作者的角色是什么感觉。
我花了多年时间完善这些习惯和做法来帮助我完成任务。
闹钟响了。几秒钟后,我伸手把它关掉,重新适应意识。
该起床了,我毫不犹豫。
不查看Facebook通知,甚至都不想查看电子邮件。
我坐起来,伸展,然后立即从我床头柜上的Nalgene喝下12盎司的水。
水有助于启动我的新陈代谢,排出前一天晚上积聚的毒素,最重要的是,有助于我补充水分——此时我已经有大约8个小时没有喝水了,我需要补充水分。毕竟,你的大脑组织75%是水。
这12盎司的水是我在一天剩下的时间里消耗的约200盎司水中的第一杯。
这一天已经开始了,我只有一个目标:把事情做完。
一天的工作马上就开始了,我从卧室走到厨房,准备了一杯热乎乎的咖啡——这是我一整天唯一会摄入的咖啡因。
我喜欢咖啡,但我也坚信咖啡因的战略性使用(无论是咖啡还是茶)。
回到研究生院,我会在早上喝一大杯咖啡,然后在午餐后不久喝一大杯Dunkin Donuts的冰咖啡。到了下午,我感到筋疲力尽。我没有意识到我摄入的咖啡因实际上损害了我的工作效率。
咖啡因可能会给你带来短期的能量冲击,但它也会在一天的晚些时候崩溃。 因此实际上可以将摄入咖啡因视为从一天的晚些时候借用能量。这种能量和专注必须来自某个地方。
两年前,我停止大量摄入咖啡因。
现在我只吃了一份(非常)浓的深色烤面包,再加上一点浓奶油。这种重奶油含有脂肪,有助于大脑启动。我尽量不吃糖。
我目前正在开展Kickstarter活动,资助我的新书《Python计算机视觉深度学习》的创作。
在这本书中,我正在进行一系列实验,在大量的ImageNet数据集上训练各种网络架构(AlexNet、VGGNet、SqueezeNet、GoogLeNet、ResNet等)。
我目前正在为VGGNet和SqueezeNet运行实验。 这些网络已经在一夜之间进行了培训,因此我需要:
检查其准确性/损失曲线。
确定网络是否过拟合(或存在过拟合风险)。
调整任何相关的超参数(即学习率、体重衰减)并重新开始训练。
估计何时应该再次检查网络。
首先是VGGNet:
我之所以花在早上的前 10 分钟查看训练进度,是因为我可以更新任何相关的超参数并继续训练网络。
其中一些网络可能需要 很长时间 来训练(VGGNet目前每个时期需要~2.9小时),因此花时间查看准确性/损失非常重要 ,然后继续您的一天 (并尽量不要再次考虑它们,直到您有更多的 more 数据来做出明智的决定)。
当我第一次开始使用深度学习时,我犯了一个严重的错误: 过于频繁地查看我的损失/准确性图。
在训练深度神经网络时,通常需要 10-15 个 epoch 的上下文来做出有关更新学习率和 which 重新开始训练的明智决策。如果没有这种背景,你会发现自己重复造轮子, 过度思考 训练过程。
你可能想知道为什么我不打开收件箱,阅读我的电子邮件?
答案是因为我的早晨是一天中最有效率和创造力的时间,所以我非常密切地守护着这段时间。一天中的这几个小时相当于生物黄金时段,这时候我精力最充沛,也最有可能高效工作。
简言之,我在一天中这个时候的目标是尽快达到流动状态,并尽可能长时间地保持它。
我把电子邮件归类为一项程序性任务——阅读电子邮件、回复并重复,直到收件箱清空。这不是一项需要创造力的任务。
另一方面,我承担的许多任务本质上是创造性的。示例包括:
写一篇新的博客文章/教程。
概述我即将出版的深度学习书中的一章。
处理一段棘手的代码。
研究一种新的算法。
所有这些任务都需要来自创造性方面的额外脑力。我每天早上都在做这些类型的工作。
电子邮件直到晚上的时候才会处理。
一两年前,我在一次会议上第一次听到Rob Walling说的**“无情的处决”**。这个想法的基石是我们都熟悉的东西:
无情执行的概念集中在第2步。一旦确定了构成整体的部分就需要每天坚持不懈地完成它们。
这也伴随着渐进式的改善——一段时间内每天持续的微小变化加起来会产生巨大的增长。(small, consistent daily changes added up over a period of time yield large growth.)
为了促进这个过程,我每个星期天早上都会计划下一周要完成的任务。您可以将此列表视为开发人员使用的非正式sprint任务列表,除了:
此列表结合了业务任务和软件任务。
每周进行一次,而不是每2-3周进行一次。
每天早上,我从每周清单中拿出三项任务,并将它们添加到我一天要完成的三件大事中:
今天我的三大任务是:
同样,富有成效和解决具有挑战性的问题并不是一次解决所有问题。相反,把大而复杂的问题分解成更小的部分,并分别解决每个问题。每天这样做可以保证你从长远来看会获得更多的“胜利”。更不用说,在短期内争取较小的胜利可以让你创造动力,让你的大脑产生良好的内啡肽。
我是一个生产力极客,所以如果你有兴趣了解更多关于生产力的技巧,可以应用到你自己的生活中,请查看Chris Bailey的《生产力项目:通过管理你的时间、注意力和能量来实现更多》。
我通常不推荐生产力书籍(因为它们往往会重复使用相同的材料),但这本书真不错。
我妈妈总是告诉我早餐是一天中最重要的一顿饭——我从来没有相信过她,但话说回来,这可能是因为我上大学时直到上午10:30才起床。
直到我每天早上5点左右开始起床,我的观点才发生了转变,我意识到早餐是最重要的一顿饭(至少对我来说是这样)。
吃一顿由蛋白质、脂肪和蔬菜组成的健康早餐,可以确保我摆脱咖啡因的摄入,即使在早上快结束的时候也能继续保持高效。此外,高蛋白、高脂肪的饮食可以确保脂肪在一天剩下的时间里提供更长、可持续的能量消耗——这在我下午去健身房时也是有益的。
对于像我这样的健康爱好者来说,我指的是一种古老的饮食,一种主要由蔬菜、水果、坚果、根和肉组成的饮食。避免食用乳制品(浓奶油中不含乳糖)、谷物和加工食品。
古饮食有很多变化和解释,我花了几年时间才发现什么对我有效。例如,我已经能够在饮食中添加少量乳制品(如奶酪),而不会产生不利影响。这些类型的饮食的有趣之处在于找到适合你个人的饮食。
就我而言,我很幸运有一个未婚妻每天早上都会准备早餐(是的,每天早上)。我非常幸运,也非常感激能中这样的头奖。
早上7点45分左右,在她去上班之前,我和她一起吃早餐。这样做可以确保我们每天早上都有优质的时间在一起:
早餐后,所有通知都会关闭,这样我就可以达到并保持流畅的状态。
我的iPhone被静音了。
Slack已关闭。
我甚至不考虑查看Facebook、Twitter或reddit。
接下来,我戴上Gunnar眼镜(以减轻眼睛疲劳;如果我在压力下眼睛疲劳太久,我会患上眼部偏头痛)和降噪耳机,以确保我不会受到干扰:
时间总是让人分心。从工作中抬起头来想“伙计,我已经做了40分钟了”,然后让你的大脑产生怀疑,这太容易了。
相反,关掉你的时钟,停止关心——你会意识到时间是相对的,当你自然疲劳时,你会从流动中解脱出来。(you’ll realize that time is relative and you’ll break from flow when you’re naturally tired.)
现在我已经“在这个区域”了,我的目标是完成Kickstarter拉伸目标的规划,同时为GoogLeNet的Inception模块和ResNet的残差模块创建可视化:
上午10:54,我已经完成了Kickstarter拓展目标和网络模块可视化的规划。
从那以后,我就可以在社交媒体上分享最新的PyImageSearch博客文章了(因为这是周一,周一会发布新帖子):
午餐前,我再次登录SqueezeNet,看到损失和准确性已经达到顶峰。我也看到过拟合的威胁变得令人烦恼(但同样,并不可怕):
我将结果记录到我的实验室日志中,然后更新代码以使用BatchNorm进行实验。我开始实验,然后到了吃午饭的时间。
我吃午饭的理想时间是上午11:00-11:30。
我通常吃前一天晚上晚餐剩下的东西,或者街对面商店的沙拉。由于我没有昨晚剩下的菜,我选择了沙拉:
我的沙拉上有烤火鸡、番茄、鳄梨(健康脂肪!),当然还有一点点奶酪。正如我上面提到的,这些年来,我调整了自己的个人古饮食,发现我可以摄入少量的乳制品,而不会影响我的能量水平或整体健康。
这时,我开始每天摄入椰子水(约300毫升)和普通水。椰子水有助于降低皮质醇水平,从而减轻压力。它也是钾的良好来源。
午饭后,我花10-15分钟冥想。我个人喜欢使用Calm应用程序:
一点正念可以让我重新调整自己的中心,继续我的一天。
下午开始时,我从“三件大事”列表中挑选下一项未完成的任务,然后开始着手。我继续关闭通知,戴上降噪耳机。
如果我正在概述一个教程或写一篇博客文章,我倾向于选择器乐。《这将毁灭你》、《天空中的爆炸》和《上帝是宇航员》是这些类型任务的个人最爱。歌词的缺失让我不会分心(如果有歌词,我会跟着唱)。
另一方面,如果我在写代码,我通常默认使用带歌词的音乐——斯卡、朋克和硬核等流派是我的最爱。我一生中花了无数个小时为Minor Threat、Dillinger Four和The Mighty Mighty Bosstones等乐队编码。
今天,我开始为我即将出版的深度学习书的年龄和性别分类章节做一些实验。给定一个人的照片,目标是:
检测图像中的人脸。
确定此人的年龄。
近似此人的性别。
深度学习算法在这项特定任务中非常成功,将成为本书中一个优秀的章节。
首先,我下载IMDB-WIKI人脸图像数据集并开始探索。
我的首要任务是理解.mat,数据集中包含的注释文件。经过大约45分钟的分析及代码,我可以提取数据集中每个人脸的出生日期、年龄和边界框:
然后,我取数据的一个子集,并尝试在数据上微调VGG16作为初始试运行:
在仅仅5个时代之后,我就获得了91%以上的性别分类准确率。这一初步实验是成功的,并保证对微调VGG16进行更多的探索。
下午2:30-3左右,我去健身房锻炼了1-1.5个小时。
健身是我生活的重要组成部分。
我从小就参加体育运动——足球、棒球、篮球,你能想到的。
在我研究生院的第一年,我开始举重。我花了大约一年的时间和一个朋友一起举重,然后当他毕业时,我又花了一年时间独自锻炼。
从那时起,我发现我厌倦了常规的健身活动,开始做CrossFit。这最终使我获得了奥运举重冠军。我现在混合了奥运举重lifting(strength力量)和CrossFit(stamina耐力)。
这里重要的一点是体育锻炼是健康生活的关键。这不需要太多——只要从椅子上站起来(或者更好的是,用一张立式办公桌),在街区里散步,就能大大提高你的生产力(并使你免受心脏病的困扰)。 找出什么对你有效并继续做下去。但也要注意五年前对你有效的东西现在可能对你无效。
回到健身房后,我会洗个澡,然后重新登录电脑。
在一天中的这个时候,我大脑中的创造性部分已经耗尽了。我已经起床大约12个小时了,我正进入一天中能量较少的自然循环。
也就是说,我仍然可以毫无问题地处理程序性任务,因此我花了很多时间阅读和回复电子邮件。
如果我没有任何电子邮件可以回复,我可能会编写一些代码。
一旦晚上8点左右,我会尽可能地断开连接。
我的笔记本电脑进入睡眠状态,我尽量远离手机。
我通常喜欢在晚上结束时放松一下,玩我现在最喜欢的RPG游戏:
我刚刚击败了《巫师III:狂野狩猎》(一款进入我“最喜欢的游戏列表”的游戏),所以我目前正在SNES上玩《最终幻想VI》(北美称为《最终幻想III》)。
玩了一点游戏后,我可能会先看一点电视,然后再宣布结束。
然后,它就上床睡觉了——准备在第二天早上 “无情地执行”(“relentlessly execute”)。