TensorSpace - 一款 3D 模型可视化框架,支持多种模型,帮助你可视化层间输出,更直观地展示模型的输入输出,帮助理解模型结构和输出方法。

文末福利预警:人手必备论文阅读神器限时免费放送~?

作者丨刘遥行

学校丨圣何塞州立大学硕士生

研究方向丨AI与现实生活的工业结合

是什么(What)

TensorSpace 是一款 3D 模型可视化框架,一动图胜千言。

官网链接:

https://tensorspace.org/

Github链接:

https://github.com/tensorspace-team/tensorspace

TensorSpace 擅长直观展示模型结构和层间数据,生成的模型可交互。官方支持手写字符识别,物体识别,0-9 字符对抗生成网络案例等。

为什么(Why)

本部分说明:为什么要使用这个框架?这个框架主要解决了什么问题?我们的灵感来源于何处?

3D神经网络可视化一片空白 

在机器学习可视化上,每个机器学习框架都有自己的御用工具,TensorBoard 之于 TensorFlow ,Visdom 之于 PyTorch,MXBoard 之于 MXNet。这些工具的 Slogan 不约而同地选择了 Visualization Learning(TensorBoard的 Slogan),也就是面向专业机器学习开发者,针对训练过程,调参等设计的专业向可视化工具。

但面向一般的计算机工程师和非技术类人才(市场、营销、产品等),一片空白,没有一个优秀的工具来帮助他们理解机器学习模型到底做了什么,能解决一个什么问题。

机器学习开发和工程使用并不是那么遥不可及,TensorSpace 搭建桥梁连接实际问题和机器学习模型。

3D可视化的信息密度更高更直观

市面上常见的机器学习可视化框架都是基于图表(2D),这是由它们的应用领域(训练调试)决定的。但 3D 可视化不仅能同时表示层间信息,更能直观地展示模型结构,这一点是 2D 可视化不具备的。

例如在何恺明大神的 Mask-RCNN 论文中,有这么一幅图来描述模型结构(很多模型设计类和应用落地类的论文都会有这么一幅图):

TensorSpace 可以让用户使用浏览器方便地构建一个可交互的神经网络 3D 结构。更进一步的,用户还可以利用 3D 模型的表意能力特点,结合 Tensorflow.js 在浏览器中进行模型预测(跑已经训练好的模型看输入输出分别是什么),帮助理解模型。

模型结构:黑盒子的真面目是什么?

模型就像是一个盛水的容器,而预训练模型就是给这个容器装满了水,可以用来解决实际问题。搞明白一个模型的输入是什么,输出是什么,如何转化成我们可理解的数据结构格式(比如输出的是一个物体标识框的左上角左下角目标),就可以方便地理解某个模型具体做了什么。

例如,YOLO 到底是如何算出最后的物体识别框的?LeNet 是如何做手写识别的?ACGAN 是怎么一步一步生成一个 0-9 的图片的?这些都可以在提供的 Playground 中自行探索。

如下图所示,模型层间的链接信息可通过直接鼠标悬停具体查看。

层间数据:神经网络的每一层都做了什么?

3D 模型不仅可以直观展示出神经网络的结构特征(哪些层相连,每一层的数据和计算是从哪里来),还能结合 Tensorflow.js 在浏览器中进行模型预测。由于我们已经有了模型结果,所有的层间数据直观可见,如下图所示:

在 TensorSpace 内部,调用 Callback Function 可以方便的拿到每一层的输出数据(未经处理),工程和应用上,了解一个模型的原始输出数据方便工程落地。

怎么建(How)

首先你需要有一个使用常用框架训练好的预训练模型,常见的模型都是只有输入输出两个暴露给用户的接口。TensorSpace 可以全面地展示层间数据,不过需要用户将模型转换成多输出的模型,过程详见以下文档。

模型预处理简介:

http://tensorspace.org/html/docs/preIntro_zh.html

具体流程如下图所示:

用 TensorSpace 构建对应模型这一步,下面一段构建 LetNet 的代码可能更加直观,如果要在本地运行,需要 Host 本地 Http Server。

你最需要的是模型结构的相关信息,TensorFlow,Keras 都有对应的 API 打印模型结构信息,比如 Keras 的 model.summary()。还有类似生成结构图的方式,生成如下图的模型结构 2D 示意图:


是的,你需要对模型结构非常了解才可能构建出对应的 TensorSpace 模型。未来版本已计划推出自动脚本,通过导入对应的模型预训练文件,一键生成多输出模型。但是 TensorSpace 的 Playground 子项目未来会力所能及地收集更多模型,在模型应用落地和直观展示这个领域努力做出贡献。

谁可能用(Who)

做这样一款开源框架,除了填补 3D 可视化的一般解决方案的框架空白外,还思索了几个可能可行的应用场景。

前端开发者过渡机器学习

前端(全栈)开发者,产品经理等

未来,前端的重复性工作可能会慢慢减少。最近有一个原型图→HTML代码的项目,另一个 2017 年的开源项目 Pix2Code 都在尝试利用机器学习自动化一些 Coding 中的重复劳动,提高效率。

机器学习一定不会取代前端工程师,但掌握机器学习工具的工程师会有优势(这种工具会不会整合进 Sketch 等工具不好说),既然入了工程师行,终身学习势在必行。

TensorSpace 虽然不能帮忙训练和设计模型,但它却擅长帮助工程师理解已有模型,为其找到可应用的领域。并且,在接驳广大开发者到机器学习的大道上做了一点微小的工作,做一个可视化的 Model Zoo。

机器学习教育

机器学习课程教育者

使用 TensorSpace 直观地在浏览器上显示模型细节和数据流动方向,讲解常见模型的实现原理,比如 ResNet,YOLO 等,可以让学生更直观地了解一个模型的前世今生,输入是什么,输出是什么,怎么处理数据等等。

我们只是提供了一个框架,每一个模型如果需要直观地展示对数据的处理过程,都值得 3D 化。

模型演示和传播

机器学习开发者

JavaScript 最大的优势就是可以在浏览器中运行,没有烦人的依赖,不需要踩过各种坑。有一个版本不那么落后的浏览器和一台性能还可以的电脑就可以完整访问所有内容。

如果您的项目需要展示自己的模型可以做什么、是怎么做的,私以为,您真的不应该错过 TensorSpace。

用 TensorSpace 教学模型原理效果非常好。它提供了一个接口去写代码,搞清楚每一个输出代表了什么,是如何转化成最后结果。当然,从输出到最后结果的转换还是需要写 JavaScript 代码去构建模型结构,在这个过程中也能更进一步理解模型的构造细节。

现在还没有完成的 Yolov2-tiny 就是因为 JavaScript 的轮子较少(大多数处理轮子都使用 Python 完成),所有的数据处理都需徒手搭建。时间的力量是强大的,我们搭建一个地基,万丈高楼平地起!

致谢

机器学习部分

我们最初的灵感来源于一个真正教会我深度卷积网是如何工作的网站:

http://scs.ryerson.ca/~aharley/vis/conv/

源码只能下载,我 Host 了一份在 Github 上:

https://github.com/CharlesLiuyx/3DVis_ConvNN

这个网站的效果,也是团队未来努力的方向(大网络上,因为实体过多,性能无法支持。为了解决性能问题,我们优化为:不是一个 Pixel 一个 Pixel 的渲染,而是一个特征图一个特征图的处理。

前端部分

使用 Tensorflow.js、Three.js、Tween.js 等框架完成这个项目,感谢前人给的宽阔肩膀让我们有机会去探索更广阔的世界。

开发团队们

感谢每一个为这个项目付出的伙伴,没有你们每个人,就没有这个开源项目破土而出。

开发团队成员:


syt123450 — 主力开发

https://github.com/syt123450

Chenhua Zhu — 开发

https://github.com/zchholmes


Qi (Nora) — 设计师

https://github.com/lq3297401

CharlesLiuyx — 机器学习模型 & 文档

https://github.com/CharlesLiuyx

也欢迎你有什么想法给我留言,或直接在 Github 上提出 Pull Request。

点击标题查看往期内容推荐:

#文 末 福 利#

 iOS论文阅读神器限免下载 

ReadPapers

iOS | ¥25→¥0

ReadPapers,一款为研究人员量身打造的论文阅读神器,限时两天免费下载

• 内置arXiv浏览器

• 集成Sci-Hub下载功能(支持Safari、Researcher等)

• 内置PDF阅读器

• iCloud文档同步管理

▲ 点击查看大图

 关注 PaperWeekly,后台回复「限免」

 立刻获取 App 免费下载通道 

?

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

▽ 点击 | 阅读原文 | 访问作者博客

TensorSpace:超酷炫3D神经网络可视化框架相关推荐

  1. 从零打造一个超酷炫的租房可视化查询工具

    租房,是很多人都绕不过的问题. 租房者往往会去到58.豆瓣等租房信息发布平台查询数据,但简单的网页浏览却很难解决租房者不能全面认知上海租房市场的情况.这时候,如果会一点爬虫和数据分析技能,就会事半功倍 ...

  2. HTML5七夕情人节表白网页_飘落蒲公英动画超酷炫的HTML5页面_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册

    HTML5七夕情人节表白网页❤飘落蒲公英动画超酷炫的HTML5页面❤ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 ...

  3. HTML5七夕情人节表白网页制作【飘落蒲公英动画超酷炫的HTML5页面】HTML+CSS+JavaScript

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看. 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个 ...

  4. 黄聪:Android酷炫实用的开源框架(UI框架)(转)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  5. ym——Android酷炫实用的开源框架(UI框架)(终)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 前言 好久没写博文了,最近工作比较忙,剩下的一点点时间在做自己的项目,在Android ...

  6. pr cpu100%_6款超酷炫又小众的PR插件 据说都用过就是大神!

    PR作为目前最主流的视频编辑软件 拥有大量的配套插件模板等等 我们也推送过PR大量常用的插件 如转场.调色.特效等等 但PR还许多超酷炫又小众的插件 本期菌菌就为大家精选了6款插件 帮助小伙伴更好的进 ...

  7. Lively Wallpaper ---- 超酷炫的桌面壁纸

    最近在github 上找到一个超酷炫的桌面壁纸程序,支持各种格式的素材作为壁纸 下载链接: https://github.com/rocksdanister/lively/releases/tag/v ...

  8. 有什么做GIF的软件?这3款APP超酷炫

    有什么做GIF的软件?喜欢聊微信的你们都有这种感觉吧:聊天的时候,大部分情况下都是动态图片比静态图片更能表达情绪.经常会看到一张有意思的动态图片后,像中了魔一样反复观看,说不定还会嘻嘻嘻地笑出声来吓到 ...

  9. html5 canvas酷炫3D背景打开动画特效

    html5 canvas酷炫3D背景打开动画特效 点击跳转到演示地址 点击进入资源下载地址

最新文章

  1. 廖雪峰js教程笔记 2
  2. WinForm 窗体圆角、平角(不规则窗体)实现的几种方法
  3. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
  4. future promise shared_future简单使用
  5. 引擎优化的facebook中文网
  6. 编程同写作,写代码只是在码字
  7. 姿态估计 | OpenPose Plus值得期待
  8. linux 重启mysql_Grafana+Prometheus 监控 MySql服务
  9. Veritas Backup Exec 21安装
  10. 2021王道考研pdf
  11. JavaWeb中的表单提交和超链接请求传递参数
  12. [转]中国古代兵事纵横谈[强文]
  13. Hyper-v 实现桌面虚拟化
  14. [转]通过路径直接打开时地图时报错的解决方法
  15. bootloader 解析
  16. 批量创建工作表并以本月日期命名——《超级处理器》应用
  17. 令人头疼的优化问题——多目标规划问题matlab求解
  18. Altium软件以及库相关资源获取
  19. 美版华硕TM-AC1900配置AiMesh
  20. HTML+CSS静态页面网页设计作业 学生DW网页设计作业成品 web课程设计网页规划与设计

热门文章

  1. ios ionic3 跳转第三方地图 xcode加入白名单
  2. 575. Distribute Candies 平均分糖果,但要求种类最多
  3. tomcat 6.0 部署报错信息
  4. 当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决
  5. Delphi 两个应用程序(进程)之间的通信
  6. 安卓虚拟linux系统教程,在Linux上模拟Android应用程序的3种方法 | MOS86
  7. ad13批量安装元件库_ad16如何批量添加封装库?
  8. dods 机器人_胜利之日机器人补丁
  9. 二分类最优阈值确定_分类模型评价标准,AUC还是Macro F1?
  10. c语言 构造类,C语言之构造类型