python学图像识别_Python构建图像分类识别器的方法

本文介绍了如何使用Python结合OpenCV和机器学习算法(如ERF)来构建图像分类识别器。通过图像预处理、特征提取、KMeans聚类建立视觉码本,然后使用ExtraTreesClassifier训练模型。尽管存在界面和准确率优化等问题,但该方法提供了一个基本的图像识别系统。
摘要由CSDN通过智能技术生成

机器学习用在图像识别是非常有趣的话题。

我们可以利用OpenCV强大的功能结合机器学习算法实现图像识别系统。

首先,输入若干图像,加入分类标记。利用向量量化方法将特征点进行聚类,并得出中心点,这些中心点就是视觉码本的元素。

其次,利用图像分类器将图像分到已知的类别中,ERF(极端随机森林)算法非常流行,因为ERF具有较快的速度和比较精确的准确度。我们利用决策树进行正确决策。

最后,利用训练好的ERF模型后,创建目标识别器,可以识别未知图像的内容。

当然,这只是雏形,存在很多问题:

界面不友好。

准确率如何保证,如何调整超参数,只有认真研究算法机理,才能真正清除内部实现机制后给予改进。

下面,上代码: import os

import sys

import argparse

import json

import cv2

import numpy as np

from sklearn.cluster import KMeans

# from star_detector import StarFeatureDetector

from sklearn.ensemble import ExtraTreesClassifier

from sklearn import preprocessing

try:

import cPickle as pickle #python 2

except ImportError as e:

import pickle #python 3

def load_training_data(input_folder):

training_data = []

if not os.path.isdir(input_folder):

raise IOError("The folder " + input_folder + " doesn't exist")

for root, dirs, files in os.walk(input_folder):

for filename in (x for x in files if x.endswith('.jpg')):

filepath = os.path.join(root, filename)

print(filepath)

object_class = filepath.split('\\')[-2]

print("object_class",object_class)

training_data.append({'object_class': object_class, 'image_path': filepath})

return training_data

class StarFeatureDetector(object):

def __init__(self):

self.detector = cv2.xfeatures2d.StarDetector_create()

def detect(self, img):

return self.detector.detect(img)

class FeatureBuilder(object):

def extract_features(self, img):

keypoints = StarFeatureDetector().detect(img)

keypoints, feature

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值