zoukankan      html  css  js  c++  java
  • 偏差、方差 。检测

    在行人检测中 ,比文字检测的问题更简单 原因是 大部分的 行人都比较相似 因此可以使用一个固定宽高比的 矩形来分离出你希望找到的行人 我说的宽高比 就是指的这些矩形的高度和宽度的比值
    在行人的问题中 不同矩形的宽高比都是一样的 但对文字检测的问题 高度和宽度的比值 对不同行的文字就是不同的了 虽然在行人检测的问题中
    行人可能会与相机 处于不同的距离位置 因此这些矩形的高度 也取决于他们离相机的距离远近 但这个比值应该是一样的

     


    实际上是一个监督学习 你通过一个图像块 然后决定这个图像块里有没有行人
    我们要做的是 首先对这个图像取一小块长方形 比如这是一个 82×36的图像块 我们将这个图像块 通过我们训练得到的分类器 来确定
    这个图像块中是不是有行人 (y=1 有),接下来 我们把这个 绿色的长方形图片 滑动一点点 然后得到一个新的图像块 并同样把它传入我们的分类器 看看这里面有没有行人
    做完这以后 我们再向右滑动一点窗口 然后同样地 把图像块传入分类器 你每次滑动窗口的 大小是一个参数 通常被称为 步长(step size) 有时也称为 步幅参数(stride parameter)
    你每次移动一个像素 就是说你是用的步长 或者说步幅是1 这样通常表现得最好 但可能计算量比较大 因此通常使用4个像素 作为步长值 或者每次8个像素
    或者每步选择更大的像素 都是比较常见的 因为这样你每次 都把矩形窗 多移动一点点 所以通过这个过程 你一点点连续向右移动 这个小的矩形窗 并且每次都将图像块 通过你的分类器
    直到最后你滑动小窗 遍历图片中的不同位置 从一开始 在第一行滑动 然后到图片中的 下面几行 你会逐渐地 以某个步长或步幅 把这些图像块 全部放入你的分类器 并运行

    但这个矩形 是非常小的 只能探测到某种尺寸的行人 接下来我们要做的 是看看更大的图像块 因此我们用更大一些的图像块 同样地 传入分类器运行
    "用更大一些的图像块" 是 当你用这样的图像块时 你先取出这个图像块 然后把这张图像块 重新压缩到82×36的尺寸 就是取一个大一点的图 然后重新把大小 调整到小的尺寸
    或者说调整到 可以传入确定图片中是否有行人的 分类器应该使用的尺寸
    最后 你可以 做一个更大的矩形 同样滑动窗口 到最后 完成整个过程以后 你的算法应该就能 检测出图像中 是否出现行人了
    因此整个步骤就是 你先训练一个分类器 然后用一个滑动窗分类器 或者叫滑动窗检测器 来找出图像中出现的行人

    白色的区域表示 我的文字检测系统已经发现了文字
    并且不同的灰度 就表示分类器给出的 输出结果的概率值 所以比如有些灰色的阴影 这就表示分类器 似乎发现了文字 但并不十分确信 而比较白亮的区域
    则表示分类器 预测这个区域有文字 有比较大的概率
    我们实际上想做的 是在图像中 有文字的各区域 都画上矩形窗 所以我们还需要完成一步 我们取出分类器的输出 然后输入到一个 被称为"展开器"(expansion operator)的东西
    展开器的作用就是 它会取过这张图片,对每一个白色的小点 都扩展为一块 白色的区域 从数学上说 这一步实现就是 看右边这幅图 我们得到右边这幅图的做法就是
    对于每一个像素 我们都考察一下 它是不是在左边 这幅图中的某个 白色像素的范围之内 所以比如说 如果某一个像素点 在最左边那幅图中 白色像素点的五或十个像素范围中
    那么我们将把右边那幅图的相同像素设为白色
    可以简单地 凭直觉来判断 哪些区域是比较奇怪的 因为我们知道有文字的区域 应该不是很高的 而是比较宽的 所以我们忽略那些 又高又瘦的白块

    所以 对这幅图来讲 检测效果还不错 但对于这个具体的例子 分类器还是漏掉了一些文字 因为这段文字 是写在透明窗户上的 因此确实比较难读出来

      

    因此我们要做的就是 训练一个分类器 可以用神经网络 也可以用别的学习算法 来试着对这些正负样本进行分类
    图像分割为独立的字符 这就是用于 字符分割的一维滑动窗
     

     

    构建一个出色的机器学习系统 的最可靠方法之一 是采用 一个低偏差的算法 并在一个庞大的训练集中训练它

    但是你从哪里获得这么多的训练数据呢? 机器学习中 有一个有趣的想法 叫做"人工数据合成",这并不 适用于每个问题
    人工合成数据的想法 包含两个主要的方面: 第一个是 我们基本上 从头开始创造新的数据
    第二个是 如果我们已经有了 一个小的带标记的训练集 然后我们设法放大这个训练集 或者把一个小的训练集 变成一个 更大的训练集

     

    每一个在右侧的图像都 实际上是合成的图像 
    通过选取一个字体 也许是从网上随机下载的字体 然后从字体库中粘贴 一个或多个 字符的图像 到某种随机背景上 
    然后也许施加一点 模糊操作 变形操作 是指错切 缩放和旋转操作 如果你这么做 你会获得一个合成 的训练集 像这里展示的一样 这是一番工作 很棒的工作 这番工作需要思考
    以使合成的数据看起来真实 如果你做的随意 表现在你创造这些合成数据的方式的话 那么它不会很好用 但如果你看一下这里的合成数据 它们实际上和真实的数据看起来非常的相似

    所以通过使用合成数据 你基本上有无限的 训练例子 用来合成人工训练集 所以你如果使用 这种合成数据 你基本上有无限的 带标签数据 来创建监督的学习算法 以解决字符识别问题

     这是一张字符a的图像 来自一张真实图像 而不是合成的图像,这个字符 加入人工弯曲可以 把a的图像变成 16个新的例子.可以 把一个带标签的训练集 变成一个更大的训练集 从而快速获得很多 的例子

    在实践中,它也需要 思考和洞察力 才能想明白 哪些是合理的变形 或者哪些是合理的 放大、复制你的训练集 的方法 在字符识别的 具体例子里
    加入这些弯曲似乎是一个 自然的选择 但在另一个不同但机器学习应用中 也许其它的变形会更合理

    因为是复制的数据,得到的theta不变

     

    第二个获得 很多数据的方法是 收集数据然后自己贴标签
    所谓众包的方法 当下有几个 网站 或者公司 可以让你在网上 雇佣别人 花不多的钱让他们帮你的训练集贴标签

    如果你们面对一个机器学习的问题 通常可以做两件事 第一是使用学习曲线 做合理性测试 以确认更多数据会有用 假设会有用 那么第二个是 我经常会坐下来 认真问自己 得到10倍现有的 训练数据 需要多少工作

    并不是一直,但经常是 你会对这有多简单 感到惊讶 也许只是几天 或者几周 那这会让你对学习算法效果提高很多

    例如:100% 正确地检测出 图片中的文字信息,再依次执行下面的步骤,最后accuracy(系统) :89%

    估计出 通过改善各个模块的质量 你的系统表现 所能提升的上限值 是多少

     测试

     

     

     

     

     

    偏差是什么?
    这个值实质上,就是实际的label值与模型预测的label值之间的差值。这个十分容易理解,一般情况下,我们提升模型效果都是冲着降低偏差来的。
    偏差指的是模型预测值与真实值之间的差距,这个距离越大,自然说明模型效果越差。
     解决方法追其根源,其实只有一个:
    
                  增加特征。也就是所谓的叠特征(特征组合),做kaggle工作量最多的事情。去想如何制造出有用的特征,一个个加入,尝试。
    
                  至于增加多项式次数,自然也是其中的一种方式。
    
                  减小正则项系数……不,根本不加正则项
    
    
    方差是什么?         
        在概率论、统计学等书本中都有会方差的介绍,方差(和标准差)表示的,就是一列数据的离散程度,值越大,离散程度越大
      那么要降低这个总方差,方法就显而易见了:
    
                   减少或削弱特征。这在比赛中被称为特征选择,将不需要的(或作用微乎其微的)特征扔掉,以降低方差,提高测试集准确率。
    
                   增加数据集的数量。因为原本的数据集中可能存在许多异常值,多加入一些良好的数据集,每个特征的方差都可能一定成都的减小。
    
                   增大正则项系数……但是说实话,这个方式在我使用过程中从没靠谱过。
    
     上面可以明显的看出来,高偏差问题和高方差问题似乎……是相反的?这样的话,在偏差、方差之间取一个均衡也就十分重要,偏差大一点就是欠拟合、方差大一点就是过拟合。且调且小心。
  • 相关阅读:
    安卓权限详解
    Android 中使用自定义字体的方法
    Android 开发笔记——通过 Intent 传递类对象
    Android中Log机制详解
    Android开发规范——命名
    android 软键盘回车键捕获
    Android ViewPager使用详解
    Inflater与findViewById()区别
    Android屏幕适配和文字屏幕适配
    Android软件开发之EditText 详解(八)
  • 原文地址:https://www.cnblogs.com/tingtin/p/12246933.html
Copyright © 2011-2022 走看看