摄像头大数据分析跟踪均值漂移算法-spark和python

非结构化数据的大数据处理

数据有文字,图片,音频,视频,这些都属于非结构化数据,计算机不能直接识别,摄像头信息需要进行预处理,解压,解码,去重,合并,提取,清洗,分词nlp,将图片,音频,视频等媒体信息转化为结构体数据,进行聚类识别,而均值漂移算法是算法中的能手。

AI分析

识别摄像头里面的物体对象需要AI识别,均值漂移除了可以分类还可以跟踪,实际上跟踪也是分类的做法而已。

在1万张图片中,我们假定要跟踪一个红色的汽车,并且有一个车牌号码,实际上我们可以使用均值漂移先找出所有图片中近似的红色的分类图片,可能涉及了100个摄像头,一次分类以后,就再利用车牌进行精确查找。这样,即使很多没有车牌精确的定位我们也近似估算了不精确的出现在摄像头里面的大概蓝图。

spark map reduce

利用spark 并行实现mean shift 采用map reduce 的思想,用map计算所有样本点和基准点的距离,接下去使用reduce分类求均值计算新的基准点,当然必须将数据进行转换成为特征向量, 切分 成多个RDD 的对象数据,map 对每个RDD的数据进行类划分, Reduce操作进行汇总数据,计算得到每个基准点。spark框架会自动完成并行化计算。其实就是将数据集分配到不同的节点,进行执行聚类计算。
这里面,特征向量的定义就是设计。比如颜色也是其中的特征。

使用python

在大数据应用中,常常使用python来产生数据作为测试算法的工具,下面给出一个python均值漂移算法的例子。使用make_blobs来产生数据,当然也可以使用random来产生数据。

import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets import make_blobs

# #############################################################################
# 产生随机数据
centers = [[0, 1], [-1, -1], [1, -1],[2,2]]
X, _ = make_blobs(n_samples=10000, centers=centers, cluster_std=0.6)

# #############################################################################
# 均值漂移算法

# 量化带宽
bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)

ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

labels_unique = np.unique(labels)
n_clusters_ = len(labels_unique)

print("number of estimated clusters : %d" % n_clusters_)

# #############################################################################
# 画图
import matplotlib.pyplot as plt
from itertools import cycle

plt.figure(1)
plt.clf()

colors = cycle("bgrcmykbgrcmykbgrcmykbgrcmyk")
for k, col in zip(range(n_clusters_), colors):
    my_members = labels == k
    cluster_center = cluster_centers[k]
    plt.plot(X[my_members, 0], X[my_members, 1], col + ".")
    plt.plot(
        cluster_center[0],
        cluster_center[1],
        "o",
        markerfacecolor=col,
        markeredgecolor="k",
        markersize=14,
    )
plt.title("Estimated number of clusters: %d" % n_clusters_)
plt.show()

摄像头大数据分析跟踪均值漂移算法-spark和python_第1张图片
可以看出我们随机生成的四个点标准差数据,我们也同时得到了四个聚类,符合我们的期望,实际应用中,使用真实的数据代替我们的随机数据。
实际上均值漂移跟踪算法的原理也就明白了,上图分成的四个类中,有一个是类别蓝色的物体,如果蓝色的这一个物体移动了,他的均值离中心的结果基本是不变的,因此能做到跟踪,但是如果这个物体反转了一下,结果就不是那么准确了。

你可能感兴趣的:(深度学习,产品经理,AI,sklearn,spark)