报告的主题是video based smoke detection。
提供train、test两个数据集,每个数据集内部均有smoke和non两个文件夹,文件夹内有若干100*100大小的图片。
报告内容包括四部分:1、特征表示;2、降维及聚类;3、分类;4、模型评价及选择。
在上节中介绍了使用HOG算法分类的实现,总结来说又以下几个步骤:
①读取数据集内的图片,将其存储到pos和neg两个列表内;
②分别对上述列表的每张图片处理,即经过灰度化、均衡化后提取出hog特征向量,将所有图片的特征向量保存在gradient_list列表内;
③根据正负数据集的数量,设置标签,将有烟图片标为+1,无烟图片标为-1,得到数据集标签信息label;
④根据需求设置学习算法SVM参数,将gradient_list和label放入SVM算法内,生成数据集的hog特征模型hog.xml;
⑤对测试集的图片提取hog特征向量,将新提取的向量与hog.xml内的特征向量对比,得出相似程度;
⑥根据需求设置不同的阈值,将测试集内图片分为有烟和无烟两部分;
⑦将分类器分出的有烟无烟与真实情况对比分析,得到一组性能指标;
⑧更改阈值,得到不同的分类器,将各分类器的性能指标对比,得到最优分类器。
使用lbp算法提取特征值分类,整体上还是以上的步骤,有区别是第②和第⑤步。将其更改为利用lbp算法提取特征向量即可。
img = img_list[i]#第i张图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #灰度化
lbp_mqa = skimage.feature.local_binary_pattern(gray,8,1.0,method='default')
#使用的传统lbp算法提取特征
lbp_mqa = lbp_mqa.astype(np.uint8)#类型转换
hist = cv2.calcHist([lbp_mqa],[0],None,[256],[0,256])
hist = cv2.normalize(hist,hist)
有烟、无烟测试集测试后得以下二图,横坐标是相识程度,纵坐标是数量。
将正常大小图片放入test.py可得以下图片。