到了庆祝的时候了!我们刚刚送走了圣诞老人。现在正等待新年的钟声敲响。所以我想到建立一个很酷的东西(至少我的七岁小公主会觉得)同时学一点机器学习。所以我们要做一个什么?

我借用的我女儿所有迪士尼公主人偶来建立一个机器学习模型,这个应用取名为“Princess Finder”,可以通过摄像头将这些人偶的公主信息都识别出来。本文中我们将会学到这背后的一些知识以及扩展它们的可能性。

The Princess Finder
该 Princess Finder 应用是使用以下内容构建的:

The Teachable Machine:如何简单,快速地创建models可直接在应用程序或网站中使用的机器学习?可教学机器允许您将train计算机与图像,声音和姿势一起使用。我们使用迪士尼公主创建了一个模型,以便我们可以Image Classification在应用程序中使用它来执行。

ml5.js:这是使用您的Web浏览器进行的Web机器学习。它使用Web浏览器的内置图形处理单元(GPU)进行快速计算。我们可以像使用,可以用API如imageClassifier(model),classify等来进行图像分类。

React:这是一个用于构建用户界面的JavaScript库。我们可以ml5.js在React应用程序中使用它,只需安装并将其作为依赖项导入即可。

这是应用程序显示的截图,有93%的概率表明,这个娃娃是Jasmine(茉莉公主),它有明显的金戒指标记。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

鉴于我根本不像迪士尼公主(甚至没有洋娃娃)。因此,我自己的图像已正确分类,说No Dolls。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

这是一个很棒的简单演示。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

几个术语
如果您是机器学习的新手,您可能会发现其中一些术语有些不知所措。最好是从更高维的角度了解它们的含义以了解用法。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

您可以从此处阅读有关这些和其他机器学习术语的更多信息。

我们的Princess Finder应用程序使用Supervised Machine learning,我们有trained将model有很多examples的公主的照片。每个示例数据还包含一个label,用于通过名称标识特定的公主。

Teachable Machine
我们可以使用Teachable Machine用户界面通过几个简单的步骤来创建ML模型。首先,浏览到此链接。(需要VPN)您可以选择图像,声音或姿势项目。在我们的例子中,它将是一个图像项目。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

接下来,我们需要通过选择示例(图像和标签)来定义分类。我们可以使用网络摄像头拍摄照片,也可以上传图像。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

加载示例后,我们便开始培训。这将为我们创建一个模型。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

训练完成后,您可以使用实时数据测试模型。满意后,您可以导出模型以在应用程序中使用它。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

最后,我们可以下载模型以在我们的应用程序中使用它。您可以选择将模型上传到云中,以使用URL进行使用。您也可以将项目保存到Google Drive。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

如果您有兴趣使用或扩展我创建的模型,则可以下载并将其导入“可教机器”界面。

使用ml5.js和React的用户界面
现在我们有了一个模型。我们将使用该ml5.js库导入模型,并使用实时流对图像进行分类。我最熟悉的是React。您可以使用任何UI库,框架或原始JavaScript。我已经使用create-react-app启动应用程序的骨架并在一分钟内运行。

安装ml5.js依赖项

Or, npm install ml5

yarn add ml5
将模型解压缩public到项目文件夹下。我们可以model在公共目录下创建一个名为的文件夹,然后提取文件。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

使用ml5.js库来加载模型。我们将使用该imageClassifier方法来传递模型文件。此方法调用返回一个分类器对象,我们将在一段时间内使用该对象对实时图像进行分类。还要注意,一旦成功加载模型,我们将初始化网络摄像头设备,以便我们可以从实时流中收集图像。

useEffect(() => {
classifier = ml5.imageClassifier("./model/model.json", () => {
navigator.mediaDevices
.getUserMedia({ video: true, audio: false })
.then((stream) => {
videoRef.current.srcObject = stream;
videoRef.current.play();
setLoaded(true);
});
});
}, []);
我们还需要在render函数中定义一个视频组件

<video
ref={videoRef}
style={{ transform: “scale(-1, 1)” }}
width=“200”
height=“150” />
接下来,我们在分类器上调用classify()方法以获取结果。该results是所有比赛的目标参数标签的数组。

classifier.classify(videoRef.current, (error, results) => {
if (error) {
console.error(error);
return;
}
setResult(results);
});
我们应该classify在指定的时间间隔内使用方法调用。您可以使用一个称为React的React Hook,useInterval进行相同操作。结果数组可能看起来像这样,

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!

请从此处找到App.js文件的完整代码。就是这样,您现在可以使用此result数组提供您想要的任何UI表示形式。在我们的例子中,我们在两个React组件中使用了这个结果数组,

1.列出公主并突出显示最匹配的那个

<Princess data={result} /
2.显示仪表图以指示匹配的置信度。

<Chart data={result[0]} /
Princess组件循环遍历结果数组,并使用一些CSS样式突出显示它们,并呈现它们。

import React from “react”;
const Princess = (props) => {
const mostMatched = props.data[0];
const allLabels = props.data.map((elem) => elem.label);
const sortedLabels = allLabels.sort((a, b) => a.localeCompare(b));
return (
<>

  • {sortedLabels.map((label) => (
  • <img
    className={img ${ label === mostMatched.label ? "selected" : null }}
    src={
    label === “No Dolls”
    ? “./images/No.png”
    : ./images/${label}.png
    }
    alt={label}
    />

    {label}

  • ))}

</>
);
};
export default Princess;
图表组件就是这样

import React from “react”;
import GaugeChart from “react-gauge-chart”;
const Chart = (props) => {
const data = props.data;
const label = data.label;
const confidence = parseFloat(data.confidence.toFixed(2));
return (

Classification Confidence: {label}

<GaugeChart
id=“gauge-chart3”
nrOfLevels={3}
colors={["#FF5F6D", “#FFC371”, “rgb(26 202 26)”]}
arcWidth={0.3}
percent={confidence}
/>

);
};
export default Chart;
就是这样。请从GitHub存储库中找到完整的源代码。如果您喜欢这项工作,请随时给项目加星号(⭐)。

https://github.com/atapas/princess-finder

AI研习社是AI学术青年和AI开发者技术交流的在线社区。我们与高校、学术机构和产业界合作,通过提供学习、实战和求职服务,为AI学术青年和开发者的交流互助和职业发展打造一站式平台,致力成为中国最大的科技创新人才聚集地。

通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!相关推荐

  1. 神秘AI变脸软件风靡全球,让你秒变身迪士尼在逃主角

    热点追踪 / 深度探讨 / 实地探访 / 商务合作 又一款"变脸软件"火了.但这次不是让你变成其他人,而是让你彻彻底底的卡通一把,把自己变成迪士尼在逃公主和王子. 老少咸宜.男女皆 ...

  2. 当迪士尼遇上大数据和机器学习,奇妙的体验之旅开始了

    众所周知,迪士尼素以奇幻的魔力闻名,因而被称为"地球上最神奇的地方".虽然我们并不了解乐园所有的秘密,但迪士尼的策划大师们正在以科技创新的方式,利用大数据改善人们的游玩体验.下面这 ...

  3. 掀翻这碗迪士尼的“冷饭”之后,好莱坞还会喂我们吃什么?

    身为一枚资深迪粉,无论迪士尼把电影拍成什么样,我都会毫不犹豫地贡献票房,就算真的很难看也要看完了再骂的那种. 但看过了真人版<狮子王>之后,我的心里也升起了一丝疲惫.除了"CG技 ...

  4. Web3中文|迪士尼前任CEO回归,能否带领迪士尼开辟web3之路?

    据国外媒体报道,11 月 21 日,当地时间周日晚间,迪士尼宣布首席执行官(CEO)鲍勃 · 查佩克(Bob Chapek)离职,而其前任鲍勃 · 伊格尔(Bob Iger)将重返迪士尼CEO一职,立 ...

  5. 如何在迪士尼+上启用和自定义字幕

    Like Netflix and other streaming platforms, Disney+ caters to multilingual and hard-of-hearing custo ...

  6. 迪士尼机器人芭蕾舞_迪士尼公园只有卡通公主?内含大量惊人科技感机器人

    提到迪士尼,人们大概会想到人满为患的主题公园或各具美色的卡通公主...然而真相却是,Disney这几年还造了不少科技感满满的机器人!有的还挺萌!一起来瞅瞅: 01.像素机器人战队 2014年,迪士尼的 ...

  7. 新品周刊 | ​内外、UR、迪士尼商店、Kipling、资生堂、林清轩等女王节新品发布...

    内外.UR.迪士尼商店.Kipling.NET-A-PORTER.Intimissimi.资生堂.林清轩.强生.The Ordinary发布新品. 2021女王节 NEIWAI内外云朵无尺码系列 专注 ...

  8. 下次去迪士尼,你可能会遇到机器人米奇:他们要用AI改变乐园

    本文来自AI新媒体量子位(QbitAI) 周末,迪士尼高级研发副总裁Jon Snoddy在西南偏南(SXSW)的一场演讲中,透露了迪士尼未来几年的一个重要计划--利用机器人及人工智能技术,让一些动画角 ...

  9. 2020中国上市公司品牌价值榜发布;上海迪士尼乐园重新开放 | 美通企业日报

    今日看点 2020中国上市公司品牌价值榜发布.由清华大学经济管理学院中国企业研究中心.每日经济新闻主办,每经智库研究支持的2020中国上市公司品牌价值榜发布会云上召开.今年发布的榜单包括总榜Top10 ...

最新文章

  1. mysql数据库增删改实例_Mysql1:数据库表操作,增删改查举例
  2. Cisco路由器安全配置必用10条命令
  3. struts2 property标签的使用技巧
  4. Hibernate一对一关联映射配置
  5. 关闭Eclipse回车自动添加大括号
  6. 【Leetcode】【Medium】Rotate Image
  7. P4424-[HNOI/AHOI2018]寻宝游戏【结论】
  8. java addlast_Java中的LinkedList addLast()方法: java.util.LinkedList.addLast() - Break易站
  9. 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
  10. 单片机七阶音符_单片机对于音乐的编程中 ,音符的十六位数据表是怎样
  11. Android 存储路径浅析
  12. zookeeper运维
  13. putty怎么进入文件夹_putty命令
  14. Photoshop7.0序列号
  15. 机器人操作系统ROS 编程开发--详细总结
  16. RabbitMQ在特来电的深度应用
  17. 鸟哥的Linux私房菜——第二部分|第8章 Linux磁盘与文件系统管理
  18. 软件安全学习笔记(7):PE文件总体格式
  19. 前中后序遍历-java模板代码
  20. 30天自制操作系统——Day11实验报告

热门文章

  1. JavaScript JSON操作
  2. nb-iot模块的at指令_esp-07s模块规格-
  3. 并行数据库 分布式数据库
  4. Lombok介绍、附比较好用的几种注释推荐
  5. C++题解-Leecode 375. 猜数字大小 II——Leecode每日一题系列
  6. STL之七:STL各种容器的使用时机详解(精讲大全)
  7. [leetcode]112.路径总和
  8. (*长期更新)软考网络工程师学习笔记——Section 17 交换技术原理
  9. 计算机基础知识预备知识,计算机预备知识详解.ppt
  10. Linux系统安全及应用(账号控制、su、sudo、开关机安全控制、终端登录安全控制等)