Python 2.7 分离SVM自定义对象检测器的正负样本

Python 2.7 分离SVM自定义对象检测器的正负样本,python-2.7,opencv,svm,Python 2.7,Opencv,Svm,我试图通过在OpenCV上使用HOG+SVM方法来训练一个定制的对象检测器 我已使用以下代码行成功地从正片和负片样本中提取了HOG特征: import cv2 hog = cv2.HOGDescriptor() def poshoggify(): for i in range(1,20): image = cv2.imread("/Users/munirmalik/cvprojek/cod/pos/" + str(i)+ ".jpg")

我试图通过在OpenCV上使用HOG+SVM方法来训练一个定制的对象检测器

我已使用以下代码行成功地从正片和负片样本中提取了HOG特征:

import cv2

hog = cv2.HOGDescriptor()
def poshoggify():

        for i in range(1,20):
            image = cv2.imread("/Users/munirmalik/cvprojek/cod/pos/" + str(i)+ ".jpg")
            (winW, winH) = (500, 500)

            for resized in pyramid(image, scale=1.5):
                # loop over the sliding window for each layer of the pyramid
                for (x, y, window) in sliding_window(resized, stepSize=32, windowSize=(winW, winH)):
                    # if the window does not meet our desired window size, ignore it
                    if window.shape[0] != winH or window.shape[1] != winW:
                        continue

                    img_pos = hog.compute(image)
                    np.savetxt('posdata.txt',img_pos)

                    return img_pos
负样本的等效函数

如何格式化数据,使SVM知道哪些是正的,哪些是负的

此外,我如何将此训练转化为通过网络摄像头检测所需对象的测试?

我如何格式化数据,使SVM知道哪些是正的,哪些是负的

现在,您将创建另一个名为labels的列表,该列表将存储与相应图像关联的类值。例如,如果您有一组如下所示的培训功能:

features = [pos_features1, pos_features2, neg_features1, neg_features2, neg_features3, neg_features4]
您将有一个相应的labels类,如

labels = [1, 1, 0, 0, 0, 0]
然后,您可以将其馈送到分类器,如下所示:

clf=LinearSVC(C=1.0,  class_weight='balanced')
clf.fit(features,labels)
此外,我如何将此培训转化为通过网络摄像头检测所需对象的测试


在培训之前,您应该将标记的数据集groundtruth拆分为培训和测试数据集。您可以使用。

要使用哪个库/功能进行svm训练?Afaik通常会在每行中添加1、0或-1或任何其他数字class@Micka我对sklearn的svm或opencv中内置的svm函数都很在行。我不太清楚你所说的每类的数量是什么意思。我已经创建了功能和标签。我尝试将它们输入到分类器中,但我得到了以下错误类型错误:float参数必须是字符串或数字。这很奇怪,因为它们都是数字。我需要进一步格式化它们吗?这应该作为一个单独的问题提问。在没有看到错误发生的实际行的情况下进行调试是很困难的,