机器学习识别颜色

在最近去密歇根州的旅行中,我的朋友蒂姆·索萨 ( Tim Sosa)提到了他读过的一篇博客文章 ,作者詹妮尔·沙恩(Janelle Shane)描述了她如何建立一个神经网络,该网络从RGB值生成颜色名称 。 我以为这个主意真的很整洁,但是我发现结果令人震惊。 许多颜色名称都是荒谬的(即不是实际的单词),并且生成的名称和颜色之间的配对似乎非常随机,因此尚不清楚该模型是否在实际学习将颜色映射到语言的有意义的函数。 我想知道这个想法是否可以改进,因此,仅使用开放源代码软件,我就建立了一个模型来解决这个问题。 该项目的代码可以在我的GitHub上找到 。

关于颜色数据 ,我注意到的第一件事是只有约1,500种命名颜色,因此Janelle使用的数据与我发现的数据之间存在差异。 (这是为什么开放科学在做平凡的事情时很重要的一个例子!)我的怀疑是该模型主要是试图从数据中学习字符级语言模型,因此无论是否有1500种命名颜色或7,700个单词和短语绝对不足以学习有关英语的任何有意义的知识。

考虑到这一点,我决定建立一个模型,该模型使用预先训练的单词嵌入将颜色映射到名称(反之亦然)。 (我使用了这些word2vec嵌入。)使用预先训练的词嵌入的优点是,模型在训练过程中不必学习太多的语言; 它只需要学习不同的名词和颜色如何映射到RGB空间以及形容词应如何修改颜色(例如“分析灰色”)。 有关单词嵌入及其有用性的更多信息,请查看我对表示学习的介绍 。

使用这些词嵌入,我建立了两个不同的模型:一个将名称映射为颜色的模型,以及一个将颜色映射为名称的模型。 学会了将名称映射到颜色的模型是一个简单的卷积神经网络 ,它似乎运行得很好。

以下是模型认为“红色”,“绿色”,“蓝色”和“紫色”的示例。

Red, green, blue, and purple

但是该模型还知道比这些更有趣的颜色。 例如,它知道“深紫色”是紫色的较暗版本。

还知道“海洋”是一种水色,“平静的海洋”是一种浅水色,而“暴风雨的海洋”是灰色紫色。

学习将颜色映射到名称的模型是一个递归神经网络 ,该网络将RGB值作为输入并尝试预测单词嵌入作为输出。 我决定,与其生成单一的颜色名称,不如生成一个候选单词,然后将其用于一个颜色名称,将更加有趣/有用。 例如,当提供161、85和130(类似于紫红色的颜色)的RGB值作为模型的输入时,它将生成以下内容:

第1词候选

roses_hydrangeas
lacy_foliage
tussie
sweetly_fragrant
coppery_pink
grevillea
oriental_poppies
maidenhair_ferns
oak_leaf_hydrangea
blue_hydrangeas

第2字候选

violet
lavender_flowers
wonderfully_fragrant
fuchsia
anise_hyssop
monarda
purple
purple_blooms
cornflowers
hibiscuses

第3词候选

purple
pink
violet
fuchsia
roses
purple_blooms
lavender_flowers
lavender
Asiatic_lilies
monarda

第4字候选

roses
purple
pink
red
violet
fuchsia
violets
Asiatic_lilies
purple_blooms
flowers

我个人喜欢“甜香紫红色”。

类似地,当提供1、159和11的RGB值(绿色)时,它会生成以下内容:

第1词候选

greenbelt
drainage_easements
annexations
Controller_Bud_Polhill
Annexations
Buttertubs_Marsh
sprigging
easements
buffer_strips
Growth_Boundary

第2字候选

green
jade
blues_pinks
purples_blues
greeny
sienna
plumbago
sage_Salvia
olive
purple_leaved

第3词候选

green
plumbago
purples_blues
allamanda
greeny
purple_leaved
lime
hibiscuses
sage_Salvia
blues_pinks

第4字候选

green
pineapple_sage
plumbago
purple_leaved
allamanda
hibiscuses
lime
snowberry
sage_Salvia
purples_blues

我个人喜欢“撒绿色”。

无论如何,词嵌入似乎使模型学习了颜色和语言之间非常有趣的关系。

正如我之前所讨论的 ,在21世纪进行机器学习的伟大之处在于,有大量的开源软件和开放式教育资料可供入门。 这意味着任何人都可以阅读Janelle的原始博客文章,对如何更改模型有一个想法,并且能够很好地实现更改。

也许您对如何适应我的模型有一些想法? 如果是这样,请确保链接到注释中的所有分叉 !

翻译自: https://opensource.com/article/17/9/color-naming-word-embeddings

机器学习识别颜色

机器学习识别颜色_使用机器学习为颜色命名相关推荐

  1. 27个机器学习图表翻译_使用机器学习的信息图表信息组织

    27个机器学习图表翻译 Infographics are crucial for presenting information in a more digestible fashion to the ...

  2. 不使用机器学习的机器视觉_使用机器学习为卡通着色

    不使用机器学习的机器视觉 监督式机器学习的一个大问题是需要大量的标记数据. 这是一个大问题,尤其是如果您没有标记的数据,即使在充满大数据的世界中,我们大多数人也没有. 尽管少数公司可以访问大量特定种类 ...

  3. 使用机器学习预测天气_使用机器学习的二手车价格预测

    使用机器学习预测天气 You can reach all Python scripts relative to this on my GitHub page. If you are intereste ...

  4. 机器学习 客户流失_通过机器学习预测流失

    机器学习 客户流失 介绍 (Introduction) This article is part of a project for Udacity "Become a Data Scient ...

  5. 机器学习诗词创作_通过机器学习创作音乐

    机器学习诗词创作 In Sweden, there's something called the Allemansrätten, which literally translates to " ...

  6. 机器学习 线性回归算法_探索机器学习算法简单线性回归

    机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...

  7. python颜色识别原理_用opencv-python实现颜色检测

    这里有一个HSV颜色阈值脚本来确定下限和上限,而不是猜测和检查 import cv2 import sys import numpy as np def nothing(x): pass # Load ...

  8. 机器学习模型 非线性模型_调试机器学习模型的终极指南

    机器学习模型 非线性模型 You've divided your data into a training, development and test set, with the correct pe ...

  9. 使用机器学习预测天气_使用机器学习来预测患者是否会再次入院

    使用机器学习预测天气 We are in a age where machines are utilizing huge data and trying to create a better worl ...

最新文章

  1. The J2EE Architect's Handbook讀書筆記(二)
  2. kruskai算法c语言实现,并查集 - xiaobaoqiu Blog
  3. FD.io/VPP — L2 vSwitch
  4. RCNN SPP-net Fast-RCNN Faster-RCNN
  5. 验证码实现php 难点,php实现简单的验证码功能
  6. apache mesos_Apache Mesos + Marathon和Java EE
  7. C#值类型和引用类型的不同
  8. Python中的相对文件路径的调用
  9. JS-函数(调用返回值)-形参实参-作用域
  10. HTML中文网页乱码问题
  11. JSP数据库操作和调用自己写的java类
  12. 旅行商问题和背包问题
  13. 【FinE】期权定价的二叉树方法(1)
  14. 基于tensorflow的LSTM实现PTB预测
  15. M1 芯片打开软件提示:“XXXX” 因为出现问题而无法打开 怎么解决?
  16. 01-EMC设计规范
  17. python 键盘记录_记录键盘敲击次数 python实现
  18. ettercap的应用:DNS欺骗
  19. uni-app获取用户手机号
  20. java压缩字符串_Java压缩字符串的方法收集

热门文章

  1. springboot+特色农产品电商平台 毕业设计-附源码211515
  2. Android 高级开发 JNI NDK 介绍与使用
  3. 关于javase的面向对象部分的知识点的梳理,欢迎各位指正和补充
  4. 2017.11.06 ~ 11.10 NOIP八连测滚粗记
  5. 这20种PS技术让你的照片美不胜收
  6. 视频教程:Java常见面试题目深度解析!
  7. 杉车网数据报告:2019年,新能源汽车渐入佳境
  8. 青龙面板 Nolan 诺兰 2.4 安装教程
  9. isis宣告网络_ISIS是一个分级的链接状态路由协议
  10. Android studio 中使用GeenDao