【YOLOv5个人学习笔记】

初步先这样,之后有时间再慢慢改


一、环境配置

1、安装pycharm

参考:
安装教程

2、安装miniconda

Miniconda下载网址:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

在这里插入图片描述
选上面那个版本下载,双击安装,尽量在C盘,其他盘也可以,路径不要出现非英文和空格。
在这里插入图片描述
在这里插入图片描述
最后安装完成,点击Finsh。

打开cmd输入下面命令,创建一个名字为yolov5的环境,python版本是3.8,回车:

conda create -n yolov5 python=3.8

等待一会儿,提示需要安装一些包,输入“y”再回车

环境创建完毕,然后激活环境(每次进cmd都要先激活),接下来的pip安装都在环境中进行,输入以下命令再回车:

conda activate yolov5

补充:
查看现在已经安装的所有环境。

conda env list

删除这个环境

conda remove --name 环境名 --all

3、PYPI镜像源

激活完成(先别关闭cmd),下面配置一个国内的PYPI镜像,以便于后续下载python的一些包。PYPI镜像安装帮助:

https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

在这里插入图片描述
这里我们选取上面安装帮助的这段代码:(输入到cmd)

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4、Pytorch框架

YOLOv5是基于PyTorch框架开发的,安装PyTorch是为了更好地运行YOLOv5算法。PyTorch提供了丰富的功能和API,使得训练和推理深度学习模型变得更加简单和高效。

Pytorch官网:https://pytorch.org/

YOLOv5用不到这么高的版本,点击下面的“Previous version of Pytorch”
这里选择1.8.2版本Wheel里面的pip安装方法(不推荐conda install的安装形式)。
注:如果只有CPU就选择第三个,有10和20系列显卡的选第一个,有30系列显卡选第二个(具体什么型号的显卡对应第1个还是第2个一定要实现调查清楚)
在这里插入图片描述
将对应的安装命令输入到cmd,这里选择的是CUDA 10.2

# CUDA 10.2
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
# CUDA 11.1
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
# CPU Only
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cpu

5、YOLOv5检测算法

YOLOv5官方github:https://github.com/ultralytics/yolov5

点进右边Releases的v7.0-YOLOV5版本,下滑下载Source code(zip),可以解压到桌面,打开里面的requairments记事本文件。修改numpy和pillow的版本(更改时要用英文),并注释掉torch和torchvision(因为之前已经安装了符合要求的版本,自动安装可能会默认成cpu版本),保存txt记事本。
下面在cmd安装该requirements文件。首先进入该文件夹所创建的环境(一定要保证环境是激活状态即前面有环境名yolov5)

pip install -r requirements.txt

安装完成,到这里基本可以认为环境配置完成。
注:可以在官网下载weights模型文件
yolov5s.pt
yolov5l.pt
yolov5x.pt
yolov5n.pt
yolov5m.pt等

二、Pyside6 UI设计

1、准备工作

pip install pyside6

在这里插入图片描述

miniconda/envs/(环境名)/Lib/site-packages/PySide6

找到designer.exe并运行,可以发送快捷方式到桌面以方便打开。

2、设计工作

①创建一个Main Window
②利用左侧的Label,创建两个图片显示框,一个显示原图片/视频,另一个显示检测结果(可自行设计)
③用到左侧的Push Button来充当功能按钮

在这里插入图片描述在这里插入图片描述

文字位置等可在右侧属性编辑器中更改居中,图片和检测结果框需选中scaledContents勾选,因为实际图片的尺寸是不确定的。
在这里插入图片描述
在这里插入图片描述
设计布局:
在这里插入图片描述
如此UI设计结束,将其保存在我们的yolov5-7.0文件夹中,.ui文件命名为main_window
再ui文件转py文件:

pyside6-uic main_window.ui -o main_window.py

三、接入蜂鸣器

pip install pyserial

串口通信:

def control(self, obj_name):
    print(obj_name)
    if not self.serial_thread.isRunning():
        self.serial_thread.start()  # 启动线程
    if obj_name == 'lacks':
        self.serial_thread.write('0'.encode('utf-8'))
        print("Sent '0' to Arduino")
    elif obj_name == 'good':
        self.serial_thread.write('1'.encode('utf-8'))
        print("Sent '1' to Arduino")

串口线程:

class SerialCommunicationThread(QThread):
    data_received = Signal(str)

    def __init__(self, port, baudrate):
        super().__init__()
        self.port = port
        self.baudrate = baudrate
        self.running = False
        self.serial = None
        self.serial = serial.Serial(port=self.port, baudrate=self.baudrate, timeout=2)

    def run(self):
        self.running = True
        while self.running:
            data = self.serial.readline().decode('utf-8').strip()
            if data:
                self.data_received.emit(data)
        self.serial.close()

    def write(self, data):
        if self.serial.isOpen():
            self.serial.write(data)

    def stop(self):
        self.running = False
        if self.serial and self.serial.isOpen():
            self.serial.close()
            self.wait()

arduino代码:

// 定义蜂鸣器连接的引脚
const int buzzerPin = 13;

void setup() 
{
  pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式
  Serial.begin(9600); // 启动串行通信,设置波特率
  digitalWrite(buzzerPin, LOW);
}

void loop() 
{
  if(Serial.available() > 0){ // 检查是否有数据可读
    int a = Serial.parseInt(); // 读取解析的整数值
    Serial.flush(); // 清空串口缓冲区,防止读取错误

    if(a == 0){ // 如果收到信号0
      Serial.println("收到来自Python的信号0");
      digitalWrite(buzzerPin, HIGH);
      delay(2000); 
      digitalWrite(buzzerPin, LOW); // 关闭蜂鸣器
    }
    else if(a == 1){ // 如果收到信号1
      Serial.println("收到来自Python的信号1");
      digitalWrite(buzzerPin, LOW);
    }
    // 默认情况下,不改变蜂鸣器状态(即保持关闭)
  }
}

总结

本文设计并实现了训练好的YOLOv5模型检测到特定标签时,与arduino进行通信,从而触发蜂鸣器进行报警处理。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yolov5是一个目标检测算法,它采用了和Yolov4一样的Mosaic数据增强方式,该方式由Yolov5团队的成员提出。Mosaic数据增强使用了随机缩放、随机裁剪和随机排布的方式进行拼接,对于小目标的检测效果很不错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOv5 学习笔记](https://blog.csdn.net/W1995S/article/details/118114221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [YOLOv5学习笔记](https://blog.csdn.net/qq_54809548/article/details/125403163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [YOLOv5 自学笔记(持续更新)](https://blog.csdn.net/Mr_wjjianyan/article/details/128475887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值