预训练模型三维可视化
TensorSpace Playground · 开源项目 tensorspace.org,2018
把四个真实的预训练模型立在三维空间里:手写一个数字看 LeNet 逐层算出什么,换一张照片看 MobileNet 认成什么,点任意一层就把里面几十张特征图铺开,还能现场训练一个 LeNet 看损失怎么掉下来。
交互实验(可直接投屏)
原作是一个完整的网页应用,下面直接嵌入;屏幕小或要投影时,点「全屏打开实验」更清楚。
动手三步
- 首页先看三张操作动图:左键拖拽转视角、右键拖拽平移、滚轮缩放
- 进 LeNet:在右侧画板上手写一个数字,左边七层立刻依次亮起,下方给出判定结果
- 在三维视图里点任意一层把它展开,看这一层的几十张特征图分别长什么样
- 进 MobileNet:换成孔雀或松鼠的照片,看几十层算完后预测结果怎么变
- 进 YOLO:换成长颈鹿那张,看最后的检测输出层怎么在原图上框出物体
- 进 LeNet 训练可视化:点「开始训练」,边看批次、损失、准确率变化,边看特征图一轮轮变清晰
课堂怎么用
- 把「特征图」从板书变成眼前的东西:写一个 7,逐层看它怎么从像素变成抽象响应,到全连接层已经看不出字形
- 深度对比:LeNet 七层、MobileNet 几十层,同样是认图片,让学生猜多出来的层在做什么
- 分类与检测对照:MobileNet 输出一个类别,YOLO 输出一整张网格并框出位置
- 训练可视化现场跑两三百批次,把「训练」讲成学生看得见的过程
- 接 B-04 与 B-08:那两件讲一个卷积核怎么算、玩具网络长什么样,这件讲真实预训练模型有多深
思考题
- 同样是认图片,LeNet 只有七层,MobileNet 有几十层,多出来的层在做什么?
- 点开同一个卷积层,里面几十张特征图为什么互不相同?它们各自在找什么?
- MobileNet 输出一个类别,YOLO 的输出层却是一张网格,这说明检测任务比分类多解决了什么问题?
已知限制
- 只镜像四个轻量模型(LeNet、ACGAN、MobileNet、YOLO);另外四个大模型的权重合计约 978 MB 没有取,侧栏入口已整条删除
- YOLO 首次打开要十几秒建模型,课前先打开预热
- 三维场景里的小数字是各层的尺寸,由 WebGL 直接绘制,中文层换不了;本身与语言无关
- 原作打包的三份苹方字体是苹果专有字体,Apache-2.0 覆盖不到,已整体剔除并改为从访问者本机取字,页面不再请求任何字体文件
- 原作样例图里的三张第三方动漫版权图已剔除
- 模型是训练好的固定权重,不能换数据(LeNet 训练可视化那页除外,它在浏览器里从零训练)
原作 TensorSpace Playground(syt123450、YaoXing Liu、Chenhua Zhu、Qi(Nora)(TensorSpace 团队),开源项目 tensorspace.org,2018),Apache-2.0 许可(原文),界面已中文化。