gpt4 book ai didi

python - 开发Dilbert卡通图像分类算法的一般方法

转载 作者:IT老高 更新时间:2023-10-28 22:00:59 26 4
gpt4 key购买 nike

作为一项自我发展的练习,我想开发一种简单的分类算法,在给定Dilbert卡通的特定单元格的情况下,能够识别出卡通中存在哪些字符(Dilbert,PHB,Ratbert等)。

我认为最好的方法是(1)对图像应用某种算法,将其转换为一组特征;(2)使用训练集和许多可能的机器学习算法中的一种来关联存在性/在单元格中没有某些具有特定特征的特征。

因此,我的问题是-(a)这是正确的方法吗,(b)由于要测试许多分类算法和ML算法,找到正确方法的最佳方法是什么,以及(c)您将开始使用哪种算法假设我们实质上是对卡通进行分类练习。

最佳答案

因此,我认为您的第一步是正确的(将某种算法应用于图像,将其转换为一组功能)。

这个项目比大多数ML问题更具挑战性,因为实际上您必须从原始数据(组成卡通的各个帧)创建训练数据集。例如,抓取一个框架,在该框架中标识两个字符,Dilbert和带角的字符(我相信Dilbert的老板,不知道他的名字),从该框架中提取这两个字符,并附加到每个适当的类标签上(例如,Dlibert为“1”)。

步骤1

为了从组成Dilbert卡通的每个帧中提取单个字符,我建议每个帧的频谱分解。如果您不熟悉此技术,则其本质只是一个本征向量反压缩。

如果您喜欢python(或R,因为您可以使用像RPy这样的python-to-R绑定(bind)),那么我强烈建议您看看sklearn。特别是,这个出色的库(最初是在SciPy scikits项目的框架下开发的,因此使用NumPy + SciPy进行矩阵计算)具有几种图像分割算法,其中一种基于spectral clustering。对于项目的这一步,您很可能希望查看这两个scikits.learn模块。

  • sklearn.feature_extraction (尤其是图像子模块)
  • sklearn.cluster.spectral_clustering

  • 这两个模块中包含两个很好的示例脚本,一个 segmenting a digital photographother分割了一个图像,该图像由三个部分重叠的圆组成,彼此之间的对比度最小,彼此之间的对比度是w/r/t,w/r/t最小。怀疑是您需要执行分解的更困难的问题。换句话说, sklearn 在源代码发行版中包含两个完整的,文档齐全的示例脚本,这两个脚本都处理与您相似的数据。这一步中的一个或两个都是很好的模板。

    步骤2

    所以这是第一步;这是第二种方法:将分解图像的所有组成部分归为一组,每个Dilbert角色一组。接下来,为每个组分配一个类别标签,例如,如果分解步骤中有四个字符,则类别标签的合适选择是“0”,“1”,“2”和“3”。将这些类标签附加到组成矩阵(步骤1中的分解产物),以便将每个字符矩阵映射到其对应的类(Dilbert字符)。

    步骤3

    选择合适的机器学习技术。您在此步骤中有很多选择。唯一的标准是该技术属于受监管的类别(因为您已为数据分配了类别标签)并且该技术可作为分类器使用(即,它返回类别标签,而不是输出数值的回归器)。鉴于这是一个个人项目,我会选择一个您觉得最有趣的项目。满足我刚才提到的条件的一些设备是:多层感知器(神经网络),支持向量机(SVM)和k最近邻居(kNN)。

    步骤4

    训练,验证和测试您的分类器

    替代技术: 模板匹配

    一旦完成步骤1(每个图像分解为一组对象,其中一些对象无疑将代表角色),您就可以手动筛选这些分解产物并为卡通中的每个角色收集示例。这些是 模板

    接下来,您将从图像分割的对象与这组唯一模板进行比较。在另一个scipy scikit scikit-image中,可以使用 match_template 方法,将模板图像和候选图像传递给该方法,此方法将返回一个二维数组,该数组显示逐像素相关性(介于-1和1之间) )。

    关于python - 开发Dilbert卡通图像分类算法的一般方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108550/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com