首页 > 分享 > 毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

目录

前言

课题背景和意义

实现技术思路

一、 算法理论基础

1.1 YOLOv5

二、 数据集

2.1 数据集

2.2 数据扩充

三、实验及结果分析

3.1 实验环境搭建

3.2 模型训练

实现效果图样例

最后

前言

    大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

对毕设有任何疑问都可以问学长哦!

    选题指导:

        最新最全计算机专业毕设选题精选推荐汇总

        大家好,这里是海浪学长毕设专题,本次分享的课题是

       基于深度学习的遛狗牵绳检测系统

课题背景和意义

       在城市生活中,遛狗成为了许多人的日常活动。然而,一些狗主人可能无法有效控制狗的行为,导致狗在公共场所牵绳或遛狗的规定下自由奔跑。这种情况可能引发交通事故、恶性狗群事件以及其他潜在的公共安全问题。利用深度学习技术的自动化遛狗牵绳检测系统能够替代传统的人工巡逻和监控,降低了人力资源的需求和相关成本。

实现技术思路

一、 算法理论基础

1.1 YOLOv5

       YOLOv5是一种一阶段深度学习目标检测算法,由输入端(Input)、主干网络(Backbone)、特征融合(Neck)和检测端(Detect)四个部分组成。Input模块对输入的图片进行自适应缩放、拼接等操作,以适应不同尺度的目标检测。Backbone模块包括FOCUS、CBL、CSP1、SPP等操作,用于提取图片在不同尺度下的特征。Neck模块采用了FPN和PAN的网络结构,用于融合上层不同尺度的特征信息。通过FPN+PAN的结构,可以实现主干网络和检测网络提取的特征的聚合,从而提高网络特征融合的能力。Detect模块根据上层三种尺度的候选框对图像的特征进行预测。它会生成边界框、置信度以及目标的定位和识别结果。

毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

       SENet模块用于提升模型对局部特征的关注程度,可以被引入到模型的骨干特征提取网络中。SENet模块由三个子模块组成:Squeeze、Excitation和Reweight。SENet模块通过Squeeze模块进行特征压缩和感受野扩展,通过Excitation模块显式建模通道相关性,并通过Reweight模块对特征图进行通道上的加权,从而提升模型对局部特征的关注程度。这一模块可以嵌入到骨干特征提取网络中,以增强其特征提取能力。

毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

相关代码示例:

import torch

import torch.nn as nn

import torch.nn.functional as F

class SEBlock(nn.Module):

def __init__(self, in_channels, reduction_ratio=16):

super(SEBlock, self).__init__()

self.avg_pool = nn.AdaptiveAvgPool2d(1)

self.fc = nn.Sequential(

nn.Linear(in_channels, in_channels // reduction_ratio),

nn.ReLU(inplace=True),

nn.Linear(in_channels // reduction_ratio, in_channels),

nn.Sigmoid()

)

def forward(self, x):

b, c, _, _ = x.size()

y = self.avg_pool(x).view(b, c) # 平均池化,将特征图转为特征向量

y = self.fc(y).view(b, c, 1, 1) # 通过全连接层学习通道权重

return x * y.expand_as(x) # 将通道权重应用到特征图上

# 在骨干特征提取网络中使用SENet模块的示例

class BackboneNetwork(nn.Module):

def __init__(self):

super(BackboneNetwork, self).__init__()

self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)

self.se1 = SEBlock(64)

self.conv2 = nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1)

self.se2 = SEBlock(128)

# 其他网络层...

def forward(self, x):

x = F.relu(self.conv1(x))

x = self.se1(x)

x = F.relu(self.conv2(x))

x = self.se2(x)

# 其他网络层的前向传播...

return x

# 创建模型实例并进行前向传播

model = BackboneNetwork()

input_tensor = torch.randn(1, 3, 224, 224) # 示例输入张量

output_tensor = model(input_tensor)

print(output_tensor.shape) # 打印输出张量的形状

二、 数据集

2.1 数据集

       宠物犬牵绳数据集是由两部分组成的。首先,从Kaggle竞赛的猫狗图像数据集中获取了2000张图像。其次,为了适应本文中公共场景下未牵绳宠物犬的识别任务,使用网络爬虫技术爬取了特定公共场景(公园、马路、小区)下的2000张图像,并对这些图像进行了数据增强扩充,增加了500张图像。

毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

2.2 数据扩充

       由于公共场景中遛宠物犬的时间和天气条件各不相同,包括晴天、多云、阴天、下午和晚上等,为了提高模型对公共场景下宠物犬图像的鲁棒性,对图像进行了色域调整。具体地,调整了HSV(Hue、Saturation、Value)颜色模型中的色调(H)、饱和度(S)和明度(V),以模拟不同天气和时间点的环境情况。通过这种方式,生成了500张经过数据增强的图像。

毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python

       宠物犬牵绳数据集由2000张来自Kaggle竞赛的猫狗图像和2000张从特定公共场景中爬取并经过数据增强的图像组成。为了增强模型对公共场景下宠物犬图像的鲁棒性,使用了色域调整技术模拟不同天气和时间点的环境情况,并以此生成了额外的500张图像。

相关代码示例:

# 图像随机旋转和翻转

transform = transforms.Compose([

transforms.RandomRotation(45), # 随机旋转图像,最大旋转角度为45度

transforms.RandomHorizontalFlip(), # 随机水平翻转图像

transforms.RandomVerticalFlip(), # 随机垂直翻转图像

])

# 图像随机缩放和裁剪

transform = transforms.Compose([

transforms.RandomResizedCrop(256), # 随机缩放和裁剪图像为256x256大小

])

# 图像亮度、对比度和色调调整

transform = transforms.Compose([

transforms.ColorJitter(brightness=0.2, contrast=0.2, hue=0.1), # 随机调整亮度、对比度和色调

])

# 图像添加高斯噪声

transform = transforms.Compose([

transforms.ToTensor(),

transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # 归一化图像

transforms.ToPILImage(),

transforms.ToTensor(),

transforms.Lambda(lambda x: x + torch.randn_like(x) * 0.1), # 添加高斯噪声

])

三、实验及结果分析

3.1 实验环境搭建

3.2 模型训练

       在本次实验中,测试集共包含4500张图片,针对公共场景下宠物犬是否牵绳的检测任务,提出的算法表现出了良好的效果。当宠物犬被牵绳活动时,本模型能够获取并识别细小的绳索信息,对于宠物犬绳索的粗细也能够较好地识别。提出的算法在公共场景下宠物犬是否牵绳的检测任务中取得了良好的效果,平均精确度较高,并且能够准确检测和识别宠物犬的牵绳状态。

相关代码示例:

# 进行宠物犬牵绳检测

def detect_leash(image):

preprocessed_image = preprocess_image(image)

prediction = model.predict(preprocessed_image)

if prediction[0][0] > 0.5:

return "Leashed"

else:

return "Unleashed"

# 加载图像

image = cv2.imread('path/to/image.jpg')

# 进行宠物犬牵绳检测

leash_status = detect_leash(image)

# 打印结果

print("Leash Status: ", leash_status)

       对YOLOv5模型在公共场景下检测宠物犬是否牵绳的任务进行了改进,并与原始的YOLOv5和Mobilenet V2 YOLOv5网络模型进行了对比实验。在测试集上进行了训练、测试和评估,并使用参数量、模型大小和平均精度均值(mAP)作为评价标准来衡量模型的性能。

python train.py --img <image_size> --batch <batch_size> --epochs <num_epochs> --data <path_to_data.yaml> --cfg <model_config_file.yaml> --weights <pretrained_weights_file.pt> --name <experiment_name>

        改进后的YOLOv5模型在公共场景下宠物犬是否牵绳的检测任务上表现出更好的性能。它具有较小的参数量和模型大小,同时平均精度均值(mAP)也较高。这些结果表明,通过对YOLOv5模型进行改进,可以提升它在公共场景下检测宠物犬是否牵绳任务中的准确性和效果。

实现效果图样例

最后

我是海浪学长,创作不易,欢迎点赞、关注、收藏。

毕设帮助,疑难解答,欢迎打扰!

相关知识

毕业设计:基于计算机视觉的遛狗牵绳识别系统 目标检测
基于深度学习的高精度狗狗检测识别系统(PyTorch+Pyside6+YOLOv5模型)
基于YOLOv8深度学习的120种犬类检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战、狗类检测、犬种识别
[数据集][目标检测]遛狗不牵绳数据集VOC格式
一种基于人工智能的智能宠物训练助手系统的制作方法
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)
python计算机毕设【附源码】宠物寄养系统(django+mysql+论文)
python+flask计算机毕业设计基于智能推荐的宠物之家网站设计与实现(程序+开题+论文)
毕业设计:基于深度学习的动物叫声识别系统
计算机毕业设计基于Python的猫狗宠物展示系统

网址: 毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python https://m.mcbbbk.com/newsview348242.html

所属分类:萌宠日常
上一篇: 未栓绳!宠物狗迎面扑来,绍兴曹先
下一篇: 庆大霉素是否适合给宠物狗使用(解