本篇内容主要讲解“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, dict3 with 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等模型怎么实现目标人行检测功能”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。