赞
踩
物体检测分类是一种机器学习任务,旨在识别图像或视频中的物体,并将其分为不同的类别。与传统的物体分类任务不同,物体检测分类不仅可以确定图像中物体的类别,还可以确定它们在图像中的位置和边界框。
物体检测分类通常涉及以下步骤:
数据收集和标注:收集包含不同类别物体的图像或视频数据,并进行标注,标注包括每个物体的类别和边界框信息。
特征提取:使用图像处理和计算机视觉技术,从收集的图像中提取有用的特征。这些特征可以包括颜色直方图、纹理特征、形状描述符等。
模型训练:使用机器学习算法或深度学习模型,将提取的特征与标注的类别和边界框进行训练。常用的深度学习模型包括卷积神经网络(Convolutional Neural Networks,CNN)和目标检测模型,如Faster R-CNN、YOLO等。
模型评估和调优:通过在测试集上评估模型的性能,如准确率、召回率、精确度等指标,来评估模型的性能。如果模型表现不佳,可以进行调优,例如增加训练数据、调整模型参数等。
预测和应用:使用训练好的模型对新的图像或视频进行预测,识别和分类其中的物体,并生成边界框以及对应的类别标签。
物体检测分类在许多应用领域都有广泛的应用,包括自动驾驶、视频监控、物体识别和图像搜索等。它可以帮助计算机理解图像中的物体内容,为各种实际问题提供解决方案。
而卷积神经网络训练目标检测模型,受机器、显卡等资源影响较大,对很多数人来说是不友好的。这里介绍一款在线工具Teachable Machine,它可以帮助用户无需编写代码就能创建自己的机器学习模型。Teachable Machine的目标是使机器学习技术更加普及和易于理解,使更多的人能够利用机器学习来解决各种问题。
Teachable Machine的使用很简单,如下所示:
1.首页
2.训练
可以使用Teachable Machine创建自定义模型来分类图像、识别物体、检测姿势、识别声音等等。
这里我们选择图像检测分类:
接下来分别导入100张(越多越准确)猫和狗的图像,进行训练。
点击Train Model
训练结束,点击Export Model,接着如下下载模型
下载解压后,可以得到训练好的模型keras_model.h5和label.txt
项目介绍:使用OpenCV和上述训练好的模型,快速实现猫、狗的检测分类,效果如下:
1.安装环境
- pip install cvzone
- pip install opencv-python
- pip install tensorflow
2.代码
- import cv2
- import os
- import cvzone
- from cvzone.ClassificationModule import Classifier
-
- cap = cv2.VideoCapture('Wait_detection/dog.51.jpg') # 加载图片
- # cap = cv2.VideoCapture(0) 视频检测
-
- imgAnimalsList = [] # 物体列表
- pathFolderAnimal = "animals" # 物体文件
- pathlist = os.listdir(pathFolderAnimal)
- # print(pathlist)
- for path in pathlist:
- print(path)
- imgAnimalsList.append(cv2.imread(os.path.join(pathFolderAnimal, path), cv2.IMREAD_UNCHANGED))
-
- maskClassifier = Classifier('model/keras_model.h5', 'model/labels.txt') # 引入模型
-
- label_file = open('model/labels.txt', "r")
- list_labels = [] # 可检测的物体名称列表
- for line in label_file:
- stripped_line = line.strip()
- list_labels.append(stripped_line)
- label_file.close()
- # print(list_labels[1])
-
- while True:
- _, img = cap.read()
- # imgresize = cv2.resize(img, (454, 340))
- # 图像宽、高
- w = int(cap.get(3))
- h = int(cap.get(4))
- imgbackgoround = cv2.imread('background.png') # 背景图片
- predection = maskClassifier.getPrediction(img) # 检测
- print(predection)
- # print(predection[1])
- id = predection[1] # 物体id
- imgbackgoround = cvzone.overlayPNG(imgbackgoround, imgAnimalsList[id], (910, 150)) # 输出检测到的物体
-
- imgbackgoround[148:148 + h, 159:159 + w] = img # 待检物体图片
-
- cv2.putText(imgbackgoround, str(list_labels[id]),
- (990, 120), cv2.FONT_HERSHEY_COMPLEX, 2, (0, 255, 1), 2) # 检测出的物体名称
- print(list_labels[id])
- # cv2.imshow("Image", img)
- cv2.putText(imgbackgoround, 'result:', (830, 120), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)
- cv2.imshow("Output", imgbackgoround)
-
- cv2.waitKey(0) # 按任意键退出
检测猫:
最后,也可以参考完整项目文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。