Ruby & Rules Engines

Есть две основные проблемы с вашим кодом.

Во-первых, вам не нужно классифицировать весь набор тестов в каждом взаимодействии цикла for. Предсказания метки класса для одного изображения за раз будет достаточно:

    prediction = svm.clf.predict([testDataGlobal[index, :]])

Обратите внимание, что testDataGlobal[index, :] необходимо заключить в квадратные скобки [ ], так как метод predict() ожидает двухмерную переменную в виде массива.

Во-вторых, и самое главное, допустим, что функция glob выдает список из трех файлов изображений, а именно imgA.jpg, imgB.jpg и imgC.jpg, и обозначим их соответствующие векторы признаков как featsA, featsB и featsC. Для правильной работы вашего кода важно, чтобы testDataGlobal был организован следующим образом:

[featsA, 
 featsB, 
 featsC]

Если векторы элементов расположены в другом порядке, вы, вероятно, получите неправильные результаты.

Вы можете правильно пометить изображения с помощью следующего фрагмента (не тестировался):

test_images = glob.glob("dataset/test/*.jpg")

for filename in test_images:
    img = cv2.imread(filename)
    img = cv2.resize(img, fixed_size)
    feature_vector = your_feature_extraction_method(img)
    prediction = svm.clf.predict([feature_vector])
    cv2.putText(img, prediction[0], (20, 30), 
                cv2.FONT_HERSHEY_TRIPLEX, .7 , (0, 255, 255), 2)
    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.show()    

где your_feature_extraction_method() обозначает функцию, которая использует изображение и возвращает его вектор признаков (в виде массива 1D). . [1 125]

Примечание : не забудьте заключить feature_vector в квадратные скобки [ ]. Вы также можете использовать любой из следующих подходов, чтобы увеличить измерение feature_vector в еще одном измерении:

    prediction = svm.clf.predict(feature_vector[None, :])
    prediction = svm.clf.predict(feature_vector[np.newaxis, :])
    prediction = svm.clf.predict(np.atleast_2d(feature_vector))
15
задан tshepang 4 December 2013 в 16:55
поделиться

2 ответа

Посмотрите на Верхушку дерева . Вы можете определить свой DSL как грамматику выражения синтаксического анализа, а затем проанализировать ее, чтобы создать свои правила в любом формате, который вам нравится.

2
ответ дан 1 December 2019 в 05:07
поделиться

Я не знаю точно, как и на каких объектах следует оценивать эти правила, но если бы это были модели ActiveRecord, возможно, Ambition будет подходить. Это позволит вам писать условия в ruby, что-то вроде:

User.select { |m| m.name == 'jon' && m.age == 21 }

Это преобразуется в SQL, и вы получите всех пользователей, удовлетворяющих заданным критериям

1
ответ дан 1 December 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: