专栏首页AI研习社Github项目推荐 | DoodleNet - 用Quickdraw数据集训练的CNN涂鸦分类器

Github项目推荐 | DoodleNet - 用Quickdraw数据集训练的CNN涂鸦分类器

DoodleNet - 用Quickdraw数据集训练的CNN涂鸦分类器

by yining1023

DoodleNet 是一个涂鸦分类器(CNN),对来自Quickdraw数据集的所有345个类别进行了训练。

Github项目地址:

https://github.com/yining1023/doodleNet

这是我使用tensorflow.js和tensorflow进行的关于涂鸦分类器(一种卷积神经网络)的一系列实验。使用的数据来自Quickdraw数据集

以下是项目清单:

  • 使用 tf.js 训练涂鸦分类器
  • 训练一个包含345个类的涂鸦分类器
  • KNN涂鸦分类器

查看网络机器学习第3周了解更多信息以及CNN和迁移学习如何运作。

1. 使用tf.js训练涂鸦分类器

我用 tfjs layers API tf.js-vis 在浏览器中训练了一个涂有3个类(领结、棒棒糖、彩虹)的涂鸦分类器。代码基于 tf.js 示例 - 训练MNIST

演示Demo:

https://yining1023.github.io/doodleNet/demo/TrainDoodleClassifier

打开网页后,请等待页面加载数据、训练模型、评估模型。 它将会下载两个文件:myDoodleNet.json 和 myDoodleNet.weights.bin 。如果要自己测试这个模型,你可以加载这两个文件,然后点击 'Load Model - 加载模型' 按钮,然后在画布上画画,点击'Guess'按钮让模型开始猜测画布上你画的是什么。

2. 训练一个包含345个类的涂鸦分类器

DoodleNet 对 Quickdraw 数据集中的345个类别进行了训练,每个类有50k张图片。它使用tensorflow进行训练,并在浏览器中移植到tf.js。点击打开训练笔记

训练笔记主要基于@zaidalyafeai 的100个课程的Sketcher笔记本。我将数据扩展到345个类,并添加了几个层来改善345个类的准确性。

我使用 spell.run 的搭载大容量RAM的远程GPU机器来加载所有数据并训练模型。

演示Demo:

https://yining1023.github.io/doodleNet/demo/DoodleClassifier_345

3. KNN涂鸦分类器:可自定义的涂鸦类

基于之前的345个类的涂鸦分类器,我添加了KNN分类器,因此人们可以自定义自己的涂鸦类。

演示Demo:

https://yining1023.github.io/doodleNet/demo/DoodleClassifier_KNN

你可以绘制10个以上的圆圈并将它们添加到A类,并绘制10个以上的线条并将它们添加到B类,然后让模型猜测您的新绘图。你也可以定义任何其他类,它不需要是圆形或正方形。

开始动手

要在本地运行每个示例,请打开终端,输入以下命令:

$ git clone https://github.com/yining1023/doodleNet.git$ cd doodleNet$ python -m SimpleHTTPServer     # $ python3 -m http.server (if you are using python 3)

在浏览器中打开 localhost:8000/demo,你会看到如下的目录列表,单击即可查看对应演示。

  • DoodleClassifier_345/
  • DoodleClassifier_KNN/
  • TrainDoodleClassifier/

本文分享自微信公众号 - AI研习社(okweiwu),作者:AI研习社

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教你用PyTorch实现图像分类器(第二部分)

    回想一下,在本系列文章的第一篇中,我们学习了为什么需要载入预训练网络以及如何载入预训练网络,同时我们演示了如何将预训练网络的分类器替换为我们自己的分类器。在本篇...

    AI研习社
  • Github 项目推荐 | 基于 Three.js 的 web 3D 地球数据可视化的开源组件库

    Gio.js 是一个基于Three.js的web 3D地球数据可视化的开源组件库。使用Gio.js的网页应用开发者,可以快速地以申明的方式创建自定义的Web3D...

    AI研习社
  • IBM高级研发工程师武维:如何分布式训练深度学习模型?| 分享总结

    AI 研习社按:随着深度学习神经网络规模越来越大,训练一个深度神经网络(Deep Neural Networks, DNNs)往往需要几天甚至几周的时间。为了加...

    AI研习社
  • 浅谈MVC--Node中如何使用ORM?

    在正常的开发中,大部分都会使用MVC为主要的系统架构模式。而Model一般包含了复杂的业务逻辑以及数据逻辑,因为Model中逻辑的复杂度,所以我们有必要降低系统...

    逆月翎
  • 芋道 Spring Boot JPA 入门(二)之基于方法名查询

    在 Spring Data 中,支持根据方法名作生成对应的查询(WHERE)条件,进一步进化我们使用 JPA ,具体是方法名以 findBy、existsBy、...

    芋道源码
  • python使用execjs执行含有document、window等对象的js代码,使用jsdom解决

    因为我用的Python3,所以没用PyV8(安装网上的方法,也没有安装好,可能我太笨了 - -! 如果有会的麻烦指点一下)

    用户1214487
  • 用 Node.js 实现定时任务[每日前端夜话0xFE]

    在本文中,我们将研究如何在 Node 程序中创建和使用 Cron 作业。为此我们将创建一个简单的程序,该应用程序会自动从服务器中删除自动生成的 error.lo...

    疯狂的技术宅
  • 一日一技:如何用Python遍历多个列表元素的所有组合

    在Python中,对于这种情况,有现成的处理方法,那就是 itertools.product计算可迭代对象的笛卡尔积。

    青南
  • 长期限制卡路里的摄入可以延缓衰老吗?

    今天分享的这篇文章2018年11月发表在期刊Cell上,文章题目为:Identity Noise and Adipogenic Traits Character...

    生信技能树jimmy
  • moeCTF WP之stronger_php

    (顺便说一下php弱类型问题,即php中任何以0e开头的md5都被视为相等,因为他们视为科学记数法,而0的任何次方都是0)

    字节脉搏实验室

扫码关注云+社区

领取腾讯云代金券