我们见惯了上古时代, 由电子管组成的时钟. 在 AI 时代, 有没有更加新潮的时间显示方式? 是的, 数据集也能做成时钟, 每天早上, 让 MNIST 手写数字唤醒你一天的记忆.
MNIST 是计算机视觉中不老的经典, 当第一代卷积神经网络在这个手写数字数据集上绽放出耀眼的光芒, 它注定会载入「史册」.
尽管目前计算机视觉已经早就走出了 MNIST 数据集的时代, 甚至连一千多万图像的 ImageNet 也不再是非常大的一个图像数据集. 然而, MNIST 仍然不可忽视, 深度学习入门的第一个数据集, 验证算法的第一个实验都是它. 甚至连 Hinton 验证 Capsule 这个想法的数据集都用的它.
如果说想要致敬这样的数据集「先驱」, 你会采用什么样的方式? 在 GitHub 中, 机器之心发现一个有意思的小项目, 作者 Dheera Venkatraman 做了一面钟, 里面的数字都是从 MNIST 数据集中采样的.
项目地址: https://github.com/dheera/mnist-clock
也就是说, 24 小时随机抽万张不同的手写数字, 每天都不带重样. 做出来的效果是这样的:
这样的电子钟只需要简单的电路板再加上 4 块电子墨水屏就行了, 它背后的样子是这样的:
硬件
项目使用了 TinyPICO 开发板; 紧凑的 ESP32 板以及大量的 GPIO 插脚, 4MB 闪存, Wi-Fi, 以及其他很多功能. TinyPICO 可以说是目前世界上基于 ESP32-PICO-D4 体积最小的开发板, 240 MHz 的 32 位双核处理器足够我们完成计算.
4 块 e-link 数字显示器, 之所以选择 e-link, 是因为它符合手写数字的概念, 在任何光线条件下都能正常运行, 而且也不至于打扰到任何人. Waveshare 的 e-link 显示屏大部分是 SPI, 虽然也有些额外的引脚. 大部分人会希望一块只包含 SPI 以及一块 CS 插脚, 但多一些的链接器是有必要的. 下面是 ESP32 的连接图, 根据这个把电线卷起来.
作者在 TinyPICO 上使用的是两个 10 - 引脚的 JST-EH 的连接器, JST-EH 比 JST-XH 使用更低的配置, 更适合插入, 以及比标准引脚更短更安全.
JST-EH 连接器所连接的 TinyPICO
下面, 再见硬件固定在 3D 打印的外壳上, 就大功告成了:
如果读者们对硬件不熟悉, 那也不要急, 我们只要按照项目作者给出的硬件, 并装配好就行了. 后面我们会介绍所有「装备」的价格以及作者提供了设计图.
软件
项目作者 Dheera Venkatraman 表示, 他经常写 C++ 或者 C, 但他对 MicroPython 非常有兴趣, 因此在这个项目中采用的就是它.
项目作者使用每像素 2 比特的灰度深度来表示 MNIST 手写数字. 在这种比特深度下一张 28*28 像素的图像只需要 196 字节, 因此一个 4MB 的闪存就能满足整个 MNIST 验证集. 如果你想把整个数据集都装进去, 那么也只需要换闪存更大的微控制器, 或者使用 1 比特深度的图像, 或者使用压缩方法等.
将所有文件放在 TinyPICO 根目录中的 / code 中, 正确的文件大概如下图所示.
另外, 我们还需要为 Wi-Fi 创建一个名为. Wi-Fi 的文件, 中间写上 yourssid 与 yourpassword, 具体的读取 Wi-Fi 设置的代码就如下所示.
项目作者 Dheera Venkatraman 在 GitHub 中提供了所有代码文件, 打印钟表数字的代码也非常易读. 更友善的的是, 作者的代码提供了非常完善的注释, 基本重要的语句都有解读.
现实一点, 做一块多少钱?
如果从硬件来看, 似乎主要成本就是 TinyPICO 开发板以及四块 e-ink 屏. 首先 TinyPICO 在淘宝或者国外网站都能买到, 国外卖 20 美元, 而淘宝上标价 235 元, 加上运费其实也差不多. 此外, 读者也可以选择专门的元器件商城, 其价格也在 200 块左右.
其次, 一块 e-ink 屏大概 24 美元, 虽然淘宝找不到, 但是国内的元器件商城要便宜得多, 一块只需要 92 元左右, 可能树莓派对它的需求比较大吧.
其它的成本就比较少了, 线材, 连接器装时钟的外包装都比较容易获得, 在国内的元器件商城也可以一次性买到. 如果读者想 3D 打印外包装, 作者也提供了具体的打印参数. 所以, 总的来说, 制作成本应该是低于 650 元的, 其中开发板和电子屏都可以在其它项目中再利用.
也许我们还能改进该项目作者的实现, 在一块大的墨水屏上实现数字时钟, 直接使用更常用的树莓派作为主板 (功耗远高于 TinyPICO), 并实现更多的能力, 例如实时采样个 CIFAR-10 作为背景. 总之, MNIST 数字时钟还有很多可以玩的地方.
最后, 所有硬件与软件的详细信息都可查阅原项目. 此外, 值得一提的是, Dheera Venkatraman 还是非常有意思的一位小哥哥, 他从杭州到北京沿着人类历史上最长的人工河靠自行车骑了 1600 公里.
Last But Not Least
确实 MNIST 站在舞台中央的时代已经过去了, 但它的作用仍然不可忽视, 仍然有很多研究者致力于改进并修复它, 做出独特的贡献.
2017 年, 德国时尚科技公司 Zalando 提供了 Fashion MNIST 数据集, 它的大小, 格式和训练集 / 测试集划分与原始的 MNIST 完全一致, 从 MNIST 迁移到它, 我们不需要修改任何代码.
去年 6 月份, NYU 和 Facebook 的研究者重建并扩展了 MNIST 数据集, 在测试集中新增了 50000 个样本, 将测试集增加到 6 万样本. MNIST 作者之一的 Yann LeCun 表示,「如果多次使用原版的 MNIST 测试集, 你的模型可能在测试集上已经过拟合了, 是时候在新增的样本上试一下了.」
不论是将 MNIST 做成日常生活中好看又好玩的项目, 还是提升数据集本身的能力, MNIST 一直都会是活着的历史~
来源: http://www.tuicool.com/articles/3iQ3umm