Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能
本篇内容主要讲解“Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能”吧!
首先看下数据集,数据集主要分为两个类别,一个类别是包含行人的,另一个类别是不包含行人的,首先看下不包含行人的:
接下来看下包含行人的:
看到这里,其实就不难理解,这里的SVM扮演的主要作用就是二分类模型了。
接下来我们需要对原始图像的数据集进行特征提取计算,这里是基于HOG的方式实现的,可以自行实现HOG特征向量提取方法,也可以直接使用skimage提供的HOG提取器来一步实现,这里为了方便,我是直接使用的skimage提供的HOG方法,核心实现如下:
def img2Feature(dataDir="data/",save_path="feature.json"): """ 特征提取计算 """ feature=[] for one_label in os.listdir(dataDir): print("one_label: ", one_label) oneDir=dataDir+one_label+'/' for one_pic in os.listdir(oneDir): one_path=oneDir+one_pic print("one_path: ", one_path) #加载图像 one_img = imread(one_path, as_gray=True) one_vec = hog(one_img, orientations=orientations, pixels_per_cell=pixels_per_cell, cells_per_block=cells_per_block, visualize=visualize, block_norm=normalize) one_vec=one_vec.tolist() one_vec.append(one_label) feature.append(one_vec) print("feature_length: ", len(feature)) with open(save_path,"w") as f: f.write(json.dumps(feature))
HOG提取得到的向量维度很大,这里就不进行展示了。
之后就可以训练模型了,核心实现如下:
resDir = "results/"if not os.path.exists(resDir): os.makedirs(resDir)data = "feature.json"dict1 = DTModel(data=data, rationum=0.25, model_path=resDir + "DT.model")dict2 = RFModel(data=data, rationum=0.25, model_path=resDir + "RF.model")dict3 = SVMModel(data=data, rationum=0.25, model_path=resDir + "SVM.model")res_dict = {}res_dict["DT"], res_dict["RF"], res_dict["SVM"] = dict1, dict2, dict3with open(resDir + "res_dict.json", "w") as f: f.write(json.dumps(res_dict))comparePloter(dict1, dict2, dict3, save_path=resDir + "comparePloter.jpg")
这里,我是同时使用了决策树DT、随机森林RF、支持向量机SVM三种模型来进行分类和对比可视化,对比结果如下:
{"DT": {"precision": 0.7573482282561567,"recall": 0.7597846737437716,"F1": 0.7584933696379963,"accuracy": 0.7584933696379963},"RF": {"precision": 0.9156160607479066,"recall": 0.8801773928046967,"F1": 0.893107332148193,"accuracy": 0.893107332148193},"SVM": {"precision": 0.9281402443868877,"recall": 0.9272928963585789,"F1": 0.9277128372009962,"accuracy": 0.9277128372009962}}
为了直观展示,这里对三种模型的性能进行可视化展示,如下所示:
到此,相信大家对“Python基于HOG+SVM/RF/DT等模型怎么实现目标人行检测功能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341