python机器学习之物体识别
数据集找不见了,可以自己拍点。。。。。。代码是对的
物体识别
- 读取每个图片文件, 加载每个文件的特征值描述矩阵, 整理训练集, 与某个类别名绑定在一起.
- 基于隐马模型, 对三个类别的特征值描述矩阵训练集进行训练, 得到3个隐马模型, 分别用于识别三个类别.
- 对测试集分别进行测试, 取得分高的为最终预测类别.
"""
物体识别
"""
import os
import numpy as np
import hmmlearn.hmm as hl
import cv2 as cvdef search_files(directory):directory = os.path.normpath(directory)# {'apple':[dir,dir,dir], 'banana':[dir..]}objects = {}#当前目录, 当前目录子目录, 文件列表for curdir,subdirs,files in \os.walk(directory):for file in files:if file.endswith('.jpg'):label = curdir.split(os.path.sep)[-1]if label not in objects:objects[label] = []path = os.path.join(curdir, file)objects[label].append(path)return objectstrain_samples = \search_files('../ml_data/objects/training')# 整理训练集, 把每一个类别中的图片的desc
# 摞在一起, 基于隐马模型开始训练.train_x, train_y = [], []
for label, filenames in train_samples.items():descs = np.array([])for filename in filenames:# 获取当前图片的desc描述矩阵加入descsimg = cv.imread(filename)gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 对图片进行范围缩放h, w = gray.shape[:2]f = 200 / min(h, w)# fx: x轴伸缩比例 fy: y轴伸缩比例gray = cv.resize(gray, None, fx=f, fy=f)sift = cv.xfeatures2d.SIFT_create()keypoints = sift.detect(gray)_,desc = sift.compute(gray, keypoints)print(label, desc.shape)if len(descs) == 0:descs = descelse:descs = np.append(descs, desc, axis=0)train_x.append(descs)train_y.append(label)# 基于隐马模型进行训练, 把所有类别的模型都存起来
# 一共3个类别循环3次
models = {}
for descs, label in zip(train_x, train_y):model = hl.GaussianHMM(n_components=4, covariance_type='diag', n_iter=200)models[label] = model.fit(descs)# 读取测试集中的文件, 使用每个模型对文件进行
# 评分, 取分值大的模型对应的label作为预测类别
test_samples = \search_files('../ml_data/objects/testing')# 整理测试集, 提取每一个文件的mfcc
test_x, test_y = [], []
for label, filenames in test_samples.items():descs = np.array([])for filename in filenames:# 获取当前图片的desc描述矩阵加入descsimg = cv.imread(filename)gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 对图片进行范围缩放h, w = gray.shape[:2]f = 200 / min(h, w)# fx: x轴伸缩比例 fy: y轴伸缩比例gray = cv.resize(gray, None, fx=f, fy=f)sift = cv.xfeatures2d.SIFT_create()keypoints = sift.detect(gray)_,desc = sift.compute(gray, keypoints)print(label, desc.shape)if len(descs) == 0:descs = descelse:descs = np.append(descs, desc, axis=0)test_x.append(descs)test_y.append(label)# 使用3个模型, 对每一个文件进行预测得分.
pred_test_y = []
# test_x一共3个样本, 遍历3次, 每次验证1个文件
for descs in test_x:best_score, best_label = None, Nonefor label, model in models.items():score = model.score(descs)if (best_score is None) or \(best_score < score):best_score, best_label=score,labelpred_test_y.append(best_label)print(test_y)
print(pred_test_y)
python机器学习之物体识别相关推荐
- python 机器学习 sklearn——一起识别数字吧
文章目录 简介 数据集 数据处理 数据分离 训练数据 数据可视化 结果 完整代码 简介 本文主要简述如何通过sklearn模块利用决策树来进行预测和学习,最后再以图表这种更加直观的方式展现出来 决策树 ...
- 淼瀛正式推出MoAir 物体识别SDK 小白用手机即可完成机器学习
从20世纪60年代,由MIT的计算机教授组织了第一个面向本科生的Summer Project,经历了20世纪50年代初到90年代,尝试用创建三维模型方法去做物体识别:又走过了20世纪90年代,只从图像 ...
- 基于ROS机器人的3D物体识别与三维重建(一) 介绍篇
基于ROS机器人的3D物体识别与三维重建(一) 介绍篇 由来:清理电脑硬盘,发现了当时做毕设的一些资料,所以打算整理一下资料和代码写成专栏,记录下当时的暗金岁月,尽管现在实验室的做的项目已经不是这个方 ...
- 机器学习之验证码识别
项目背景: 之所以做这个其实很久就有这个想法了,因为搞爬虫有大半年了,怕热很多网站,也模拟登陆了许多网站,包括知乎微博等,但是有个问题是,当我们遇到验证码的时候,就需要人工打验证码了,特别是用sele ...
- 机器学习水果识别——python+opencv实现物体特征提取
文章目录 一.用python+opencv实现物体特征值提取 1.读取图像.转为灰度图像并降噪 2.获取水果轮廓 将最大轮廓画入最开始的img图像并显示 将小于某一规模的轮廓删除 3.提取水果的面积周 ...
- 树莓派python物体识别_基于树莓派和Tensowflow的物体识别
近来这篇文章很火:How to build a robot that "sees" with $100 and TensorFlow (作者是Lukas,CrowdFlower创始 ...
- 基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类)
基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类) 一.数据集说明 训练样本来自于github上的EasyPR的c++版本,包含一万三千多张数字及大写字母的图片以及三千多张中 ...
- 放弃机器学习,Python 如何进行物体检测?
学习在不使用机器学习或任何框架的情况下,如何在Python中进行物体检测. 作者 | Ravindu Senaratne 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自视觉中国 出品 | ...
- python识别图像中的物体_OpenCV+Python 指定物体识别
本文介绍一种基于HoG+Pyramids+Sliding Windows+SVM的物体识别方法 基本流程 (1)确定最小检测物体,对原图img缩放,缩放比例为(滑动窗大小/最小物体大小). (2)缩放 ...
- Python OpenCV 物体识别
基于Python OpenCV 隐马尔可夫模型 物体识别,汽车飞机摩托车. 网上自己收集的图片进行识别的,准确率可以达到60% 其中通过star 和sift 特征检测. SIFT算法 来源: 尺度不变 ...
最新文章
- Python 计算机视觉(二) —— OpenCV 基础
- Fikker反向代理服务器的网站缓存加速/网站加速基础教程
- 2017-12-07 socket 读取问题
- Leetcode--231. 2的幂
- 基于IBM Cognos的高级报表制作技巧
- 高观点下的高等数学(数学分析、线性代数)
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_14、SpringBoot2.x使用Dev-tool热部署...
- BigInteger类
- ue4联网和多人游戏总结(第二部分)
- 多旋翼飞行器设计与控制(四) —— 动力系统建模与估计
- python音频特征提取_音频特征提取——常用音频特征
- 为什么c语言加法错误,分数的加减法——C语言初学者代码中的常见错误与瑕疵(12)...
- Pandas DataFrame.columns用法及代码示例
- for循环的三种写法
- Elasticsearch-ais使用方式
- vue检测当前是什么浏览器
- 如何打开Idea右边工具栏
- “我永远都无法理解人类!” OpenAI “杀”死了那个成功模拟已故未婚妻的 GPT-3 机器人
- “数据星河”系列活动—大数据产业中的商业模式创新沙龙共话新未来
- newmark法 matlab,newmark法程序newmark法程序.doc