小赖子的英国生活和资讯

机器学习系列之: 怎么样数鸡? (1)

阅读 桌面完整版

上两周, 我去剑桥听了 DDD 开发者大会, DDD是 DeveloperDeveloperDeveloper 的缩写, 是英国比较有名的 .NET 开发者大会. 来自微软的大神 Gary Short 讲了一个如何用 机器学习来数鸡的讲座, 我印象深刻, 于是想整理一下和大家分享.

developerdeveloperdeveloper 机器学习系列之: 怎么样数鸡? (1) I.T. 数据结构与算法

developerdeveloperdeveloper

鸡场数鸡是件很痛苦的事情, 因为鸡嘛, 跑来跑去, 人工数是不太可能的, 所以才会有这个问题. 最后面想出一个方法就是当所有的鸡都在室内鸡场的时候, 开足灯光, 然后从上面拍张照片, 然后我们的目的就变成了, 快速的数一数照片中的鸡. 比如这个:

count-chicken

当鸡的数量少的时候, 人眼一下子就看出来了, 但鸡场少说也有成千上万的鸡, 人眼数是费时费力的, 这时候我们就要让计算机学会数鸡.

问题一: 死鸡怎么办?
答案: 没关系, 假设数得N只鸡, 把门打开, 活鸡跑出去, 然后死鸡就可以数了(同样可以拍照让程序来数)

问题二: 需要多少的准确率?
答案: 对于鸡场来说, 他们不需要100%的准确率, 如果从一张照片中很快的得到90%的准确度就已经乐得屁颠屁颠了.

数鸡需要几步?
简单来说, 五步:

数据筛选 Data Reduction

这步没啥好说的, 包括图片裁减 (Crop) 和去掉无用的背景信息. 缩小图片大小有助于后面加快分析和计算. 无用的信息属于噪声, 会影响算法分析的准确度.

灰度化 Greyscale

图片色彩鲜艳, 不利于计算机分析(不同的色彩在计算机眼里属于不同的变量), 我们可以通过计算亮度 Luminosity 来把不同的色彩变成单一的数值, 也就是把 RGB 用以下的公式来计算亮度:

RGB 用以下的公式来计算亮度:

Gary Short 的代码用于把图片变成灰度化:

make-image-greyscale

当然你也可以用笨方法, 遍例图片每个点相素, 不过这样的代码实现效率就较低.

陪媳妇去了, 未完待续, 请听下文分解, 请见谅……

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version