基于深度学习的对象检测

简介: 【6月更文挑战第6天】基于深度学习的对象检测。

对象检测是指检测出图像中的所有对象,并识别对象的类型。使用OpenCV中的深度学习预训练模型进行对象检测的基本步骤如下。
(1)从配置文件和预训练模型文件中加载模型。
(2)创建图像文件的块数据。
(3)将图像文件的块数据设置为模型的输入。
(4)执行预测。
(5)处理预测结果。
1.使用基于MobileNet_SSD和Caffe的预训练模型进行对象检测
MobileNet是安德鲁·霍华德(Andrew G. Howard)等人在其论文中提出的一种用于移动和嵌入式视觉应用的高效模型,它使用深度可分离卷积来构建轻型深度神经网络。
SSD(Single Shot MultiBox Detector)为单发多盒检测器,它是一种对象检测算法。MobileNet_SSD结合了MobileNet和SSD的特点。
下面的代码使用基于MobileNet_SSD和Caffe的预训练模型进行对象检测。

使用基于MobileNet_SSD和Caffe的预训练模型进行对象检测

……
import cv2
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
from PIL import ImageFont, ImageDraw, Image

加载字体,以便显示汉字

fontpath = "STSONG.TTF"
font = ImageFont.truetype(fontpath,20) #载入字体,设置字号
font2 = {'family': 'STSONG', "size": 22}
matplotlib.rc('font', **font2) #设置plt字体

准备对象名称类别,设置为中文

object_names = ('背景', '飞机', '自行车', '鸟', '船', '瓶子', '公共汽车', '小汽车',
'猫', '椅子', '牛', '餐桌', '狗', '马','摩托车',
'人','盆栽', '羊', '沙发', '火车', '监视器')
mode = cv2.dnn.readNetFromCaffe("MobileNetSSD_deploy.txt", #从文件加载Caffe模型
"MobileNetSSD_Caffemodel.dat")
image = cv2.imread("objects.jpg") #打开用于对象检测的图像
blob = cv2.dnn.blobFromImage(image, 0.007843, (224,224), #创建图像的块数据
(120, 120, 127))
mode.setInput(blob) #将块数据设置为模型输入
result = mode.forward() #执行预测
ptime, x = mode.getPerfProfile() #获得完成预测时间
title='完成预测时间: %.2f ms' % (ptime * 1000.0 / cv2.getTickFrequency())

for i in range(result.shape[2]): #处理检测结果
confidence = result[0, 0, i, 2] #获得可信度
if confidence > 0.3: #输出可信度大于30%的检测结果
a,id,a,x1,y1,x2,y2=result[0, 0, i]
name_id = int(id) #获得类别名称id
blob_size=280
heightScale = image.shape[0] / blob_size#计算原图像和图像块的高度比例
widthScale = image.shape[1] / blob_size#计算原图像和图像块的宽度比例

    #计算检测出的对象的左下角和右上角坐标
    x1 = int(x1 * blob_size * widthScale)
    y1 = int(y1 * blob_size * heightScale)
    x2 = int(x2 * blob_size * widthScale)
    y2 = int(y2 * blob_size * heightScale)
    cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)#绘制标识对象的绿色矩形
    #在图像中输出对象名称和可信度
    if name_id in range(len(object_names)):
        text = object_names[name_id] + "\n{:.1%}".format(confidence)
        img_pil = Image.fromarray(image)
        draw = ImageDraw.Draw(img_pil)
        draw.text((x1+5,y1), text, font = font,fill=(255,0,0))    #绘制文字
        image = np.array(img_pil)

img = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.title(title)
plt.imshow(img)
plt.axis('off')
plt.show()

相关文章
|
7月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
930 27
|
4月前
|
机器学习/深度学习 人工智能 文字识别
中药材图像识别数据集(100类,9200张)|适用于YOLO系列深度学习分类检测任务
本数据集包含9200张中药材图像,覆盖100种常见品类,已标注并划分为训练集与验证集,支持YOLO等深度学习模型。适用于中药分类、目标检测、AI辅助识别及教学应用,助力中医药智能化发展。
|
6月前
|
机器学习/深度学习 人工智能 监控
河道塑料瓶识别标准数据集 | 科研与项目必备(图片已划分、已标注)| 适用于YOLO系列深度学习分类检测任务【数据集分享】
随着城市化进程加快和塑料制品使用量增加,河道中的塑料垃圾问题日益严重。塑料瓶作为河道漂浮垃圾的主要类型,不仅破坏水体景观,还威胁水生生态系统的健康。传统的人工巡查方式效率低、成本高,难以满足实时监控与治理的需求。
|
6月前
|
机器学习/深度学习 传感器 人工智能
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在人工智能和计算机视觉的快速发展中,火灾检测与火焰识别逐渐成为智慧城市、公共安全和智能监控的重要研究方向。一个高质量的数据集往往是推动相关研究的核心基础。本文将详细介绍一个火灾火焰识别数据集,该数据集共包含 2200 张图片,并已按照 训练集(train)、验证集(val)、测试集(test) 划分,同时配有对应的标注文件,方便研究者快速上手模型训练与评估。
1830 10
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
6月前
|
机器学习/深度学习 人工智能 自动驾驶
7种交通场景数据集(千张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在智能交通与自动驾驶技术快速发展的今天,如何高效、准确地感知道路环境已经成为研究与应用的核心问题。车辆、行人和交通信号灯作为城市交通系统的关键元素,对道路安全与交通效率具有直接影响。然而,真实道路场景往往伴随 复杂光照、遮挡、多目标混杂以及交通信号状态多样化 等挑战,使得视觉识别与检测任务难度显著增加。
|
6月前
|
机器学习/深度学习 人工智能 监控
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
坐姿标准好坏姿态数据集的发布,填补了计算机视觉领域在“细分健康行为识别”上的空白。它不仅具有研究价值,更在实际应用层面具备广阔前景。从青少年的健康教育,到办公室的智能提醒,再到驾驶员的安全监控和康复训练,本数据集都能发挥巨大的作用。
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
6月前
|
机器学习/深度学习 数据采集 算法
PCB电路板缺陷检测数据集(近千张图片已划分、已标注)| 适用于YOLO系列深度学习检测任务【数据集分享】
在现代电子制造中,印刷电路板(PCB)是几乎所有电子设备的核心组成部分。随着PCB设计复杂度不断增加,人工检测PCB缺陷不仅效率低,而且容易漏检或误判。因此,利用计算机视觉和深度学习技术对PCB缺陷进行自动检测成为行业发展的必然趋势。
PCB电路板缺陷检测数据集(近千张图片已划分、已标注)| 适用于YOLO系列深度学习检测任务【数据集分享】
|
6月前
|
机器学习/深度学习 编解码 人工智能
102类农业害虫数据集(20000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在现代农业发展中,病虫害监测与防治 始终是保障粮食安全和提高农作物产量的关键环节。传统的害虫识别主要依赖人工观察与统计,不仅效率低下,而且容易受到主观经验、环境条件等因素的影响,导致识别准确率不足。
|
机器学习/深度学习 人工智能 监控
单车、共享单车已标注数据集(图片已划分、已标注)|适用于深度学习检测任务【数据集分享】
数据是人工智能的“燃料”。一个高质量、标注精准的单车与共享单车数据集,不仅能够推动学术研究的进步,还能为智慧交通、智慧城市的建设提供有力支撑。 在计算机视觉领域,研究者们常常会遇到“数据鸿沟”问题:公开数据集与真实业务需求之间存在不匹配。本次分享的数据集正是为了弥补这一不足,使得研究人员与工程师能够快速切入单车检测领域,加速模型从实验室走向真实应用场景。
|
6月前
|
机器学习/深度学习 自动驾驶 算法
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
随着城市化与交通运输业的快速发展,道路基础设施的健康状况直接关系到出行安全与城市运行效率。长期高强度的使用、气候变化以及施工质量差异,都会导致道路表面出现裂缝、坑洼、井盖下沉及修补不良等缺陷。这些问题不仅影响驾驶舒适度,还可能引发交通事故,增加道路养护成本。
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】