其实我觉得这个标题更应该为「一个事儿逼的自述」。
大三的时候说到毕业论文,打算好好学机器学习,然后写一篇「不大,但经得起考究」的论文。
后来才知道,所谓的毕业设计就是「 XXX 管理系统」,而所谓的论文就是说明书而已。
中间还发生了一些事情,靠谱的学术路线是走不了了,再加上还要找工作,所以就想随便应付一下。
那做什么呢。
「基于 Java 的 XXX 管理系统」?
项目也不好玩,技术也不喜欢,就算是应付也得花不少时间——「浪费时间就是罪恶」。
想起之前实现过神经网络,能识别手写体数字。这种外行看起来「屌炸天」其实...的东西应该能应付过去。
我重写了算法实现的代码,参加了 Kaggle 的手写体数字识别的比赛,得到 97% 的识别率。
好像差不多可以应付过去了。
但是,
对于一个事儿逼来说,「没事找事」要比「应付」容易得多:
1. 没有界面
我的程序运行结束只会打印出一行「识别率 97% …」,虽然重点在于算法实现,但是总让人有一种整个程序只有一行 printf 的错觉。
好吧,那就做一个网站,把数据集里的图片画出来,展示一下识别结果。
2. 界面不能太难看吧?
于是看了好多个网站、iPad 应用。觉得 Paper (我认为 iPad 上最好看的应用之一)挺靠谱,于是敲定了界面和动画效果。
3. 数据集里的图片太小了!!
每个数字只有 28*28 像素,放大到网页上那叫一个难看啊。
于是加圆角,加透明,加阴影,加背景颜色,终于凑合着能看了。即便如此,朋友看到第一句话就是「怎么这么模糊?」
不是我不在乎,是环境太恶劣...
4. 交互太少了~
虽然我做了界面,但是还是没法证明我是真的识别而不是在作弊。
好吧,加个拍照识别功能。
现在差不多了吧?
还没完...
一次聊天时无意间说到可以做个能在网页上直接写数字,然后实时识别。于是埋下了罪恶的种子。
忍了好久,还是决定给实现了。
程序终于是做完了。
这时,指导老师随口说了句——「做个视频吧」。
努力装作没听见,但是最后还是忍不住默默地实现了——而且还不愿意只是简单的录一下屏了事。
可恶的「李卓然标准」...
构思了个小剧本,就开始拍,中间 NG 了好多次,如果不用麻烦别人只自己拍,估计还会 NG 更多次。
谢谢 iMovie 的可视化界面,拿鼠标点了好久之后终于把视频剪辑好。
然后上传优酷,嫌弃广告,又要了个会员上传了 B 站。
终于结束了......
突然发现做了这么多,最开始只是想实现一个神经网络算法而已…
后记
程序虽然看起来简单还是挺复杂的。
在 Web 上做那么多动画是一个挺痛苦的事情,会莫名其妙地抖,会莫名其妙地卡。
Canvas 和 Python 图像处理之前都没做过,一开始也是各种 Bug。
之前也没做过视频,剪视频、音频也不是个省油的灯。虽然只有短短两三分钟,大概两个晚上 3、4点睡。
视频基本上做好的时候,突然发现我程序里有个动画做错了。最左下角的那个数字消失的时候,本来应该向左下角移动的,但是写成向左移动了。
还有背景音乐的质量不好,会有一个声音很小的有规律的噪音。
还好没有时间让我重拍了。哈哈,有充足的理由能够说服自己忍过去,当成一个教训吧。
还有下次应该先选背景音乐再拍摄,拍好了再剪视频去配合音乐就难得多。
视频里特别含蓄的穿插了一个小故事,估计没人会在乎,还有点影响整个视频的流畅性。
但为了能看懂的人,值得了。
受宠若惊,B 站上竟然还有弹幕,问有什么意义。
可惜了,真没什么意义,就一个华而不实的东西。
一开始只是想展示一下算法识别效果而已。
顺便秀一下我的编程技术、品味、和学习能力。
让自己感受一下「认真」做事情的感觉。
能给自己简历加点分,找一份工作就更好了。
要非要说意义的话,那就可以配上这个文章,再横向比较一下周围的毕业设计,让外人感受一下事儿逼的内心活动吧。
说到认真。
之前写也过不少小项目,但也就这个算是勉强勉强勉强满足自己的标准。
好几次别人问起毕设做完没,都是说差不多做完了,只要再改改。
有一次我爸都忍不住说「怎么还没做完」。
其实这种东西是做不完的。即便是现在我随口就能挑出好多个问题:
- 识别率能不能到 100%
- 动画做了但细节没调好
- 图像处理太过简单,拍照识别率不高
- iPad 竖屏时展示不太好看
- 甚至我之前已经实现的一个功能都没有加上去
- 没有什么意义~~哈哈
…
有时间的话我可以一直说下去。
我相信如果真用心做一个东西的话,对这个东西本身来说是永远也做不完的,什么时候结束取决于你打算在它上面投入多少的精力。
希望能够找到一个能放肆地投入时间,可以尽全力把它做好的事情 :)
意义?
对自己有意义就好了,嘿嘿。