【问题记录】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)

 -【学习资料】

子豪兄的零基础树莓派教程icon-default.png?t=N7T8https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95%E9%95%9C%E5%83%8F第2讲:树莓派新手无痛开机指南【子豪兄的树莓派零基础教程】icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ab411x7aC/?spm_id_from=333.999.0.0 树莓派4b开发之开发环境搭建 - 飞起的小田 - 博客园icon-default.png?t=N7T8https://www.cnblogs.com/tianxxl/p/13587054.html

基于树莓派4B的OpenCV安装与简单应用(真速通版)icon-default.png?t=N7T8https://blog.csdn.net/black_sneak/article/details/131343797 《树莓派快速上手》 说明 (itprojects.cn)icon-default.png?t=N7T8https://doc.itprojects.cn/0007.zhishi.raspberrypi/02.doc/index.html#/READMEYOLOv8应用及解析icon-default.png?t=N7T8https://www.youtube.com/watch?v=ydC9x1L5SJU目标检测---教你利用yolov5训练自己的目标检测模型icon-default.png?t=N7T8https://blog.csdn.net/didiaopao/article/details/119954291yolov5 训练结果解析icon-default.png?t=N7T8https://blog.csdn.net/sinat_37322535/article/details/117260081?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169080317916800186567366%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169080317916800186567366&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-117260081-null-null.268%5Ev1%5Ekoosearch&utm_term=yolov5%E7%BB%93%E6%9E%9C%E5%88%86%E6%9E%90&spm=1018.2226.3001.4450

-【超详细 Python+PyCharm的安装步骤及PyCharm的使用】

(超详细)Python+PyCharm的安装步骤及PyCharm的使用(含快捷键)_pycharm python_IT路上的军哥的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/JunLeon/article/details/120698578?ops_request_misc=%7B%22request_id%22%3A%22168955879816800222871340%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=168955879816800222871340&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-120698578-null-null.268%5Ev1%5Ekoosearch&utm_term=python%E4%B8%8Epycharm&spm=1018.2226.3001.4450

- 【python安装包不要放在python在install选择路径的文件夹里】

否则pycharm在配置python环境时会一直显示重新安装python

-【cmd安装pip和setuptools但pycharm的setting中检测不到这两个工具包,重点在于修改pycharm中python的安装路径(Pycharm cannot set up a python SDK问题解决方法)】Pycharm cannot set up a python SDK问题解决方法_山河不见老的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_42212872/article/details/122405569

-【第三方工具包清华大学镜像网站cmd用安装指令(以安装TensorFlow为例)】

pip install TensorFlow -i https://pypi.tuna.tsinghua.edu.cn/simple

-【最好用16GB的SD卡下载系统镜像泪的教训!!!为了配置用户名及密码,最新版本只能用树莓派官方的镜像下载器下载镜像

扫描二维码关注公众号,回复: 16850526 查看本文章

-【插上SD卡后红灯常亮,绿灯闪烁;网线绿灯不亮,橘灯常亮;此时需要重启树莓派;安装好系统后树莓派需要两次开机!!!

-【同一局域网下查找树莓派ip在cmd中(管理员身份运行)输入ping -4 raspberrypi.local

-【VNC连接树莓派出现cannot currently show the desktop问题的解决方法】树莓派默认分辨率模式为Default 720×480,这可能造成VNC显示异常,在putty中用sudo raspi-config修改相关设置,以更换到其他更高的分辨率模式。

-【由于ip分配是随机的,每次更换wifi后vnc都需要重新查找树莓派ip

-【sudo = superuser do】

-【使用putty重启树莓派时,如果卡了需要手动拔掉充电线;使用reboot重启不需要拔掉充电线】

-【使用camera后如果VNC不能打开,需要在putty中用sudo nano /boot/config.txt删除文件中hdmi_force_hotplug前的#符号(不要再添加其他语句!!!),然后ctrl+x再按y回车后退出,拔线重启树莓派;若仍旧不行,则查看分辨率是否又被更改

-【更换国内镜像源

注意下载的树莓派系统版本用户是什么,三种用户有三种不同的镜像源,本机用户为aarch64

如何查看本机用户,在终端输入 uname -m树莓派换源_code artist的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_55542305/article/details/125921513?ops_request_misc=%7B%22request_id%22%3A%22168990724916800185836822%22%2C%22scm%22%3A%2220140713.130102334.pc_all.%22%7D&request_id=168990724916800185836822&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-125921513-null-null.142%5Ev90%5Econtrol_2,239%5Ev3%5Econtrol&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE%E6%9B%B4%E6%8D%A2%E6%BA%90&spm=1018.2226.3001.4187

-【树莓派如果可以正常import cv2但是无法用print(cv2.__version__)语句查看opencv版本,可使用下面这个语句】

import pkg_resources

pkg_resources.get_distribution("opencv-python").version

-【树莓派使用opencv环境安装(实际上不知道到底有没有关系,主要还是跟着老师的教程做了一遍,估计是安装的软件包太多了,出了什么错,以至于把系统都搞崩了一次,重装系统后,按王铭东老师的步骤安装opencv(4.8.0)与numpy(1.25)等皆正常)】

sudo apt-get install libjpeg-dev libatlas-base-dev libjpeg-dev libtiff5-dev libpng12-dev libqtgui4 libqt4-test libjasper-dev  (后来安装的部分软件包,不知道安装成功和这些有没有直接关系)

-【一些linux终端的命令】

        - 以管理员身份运行终端

                sudo -s

        - 终端运行桌面上的python代码

                cd Desktop/       

                Python camera.py

        - 终端打开桌面上的xxx.txt文件

                cd Desktop/xxx.txt/

        - 查看文件目录

                 ll或者ls

        - 打开桌面上Data文件夹中的command.txt文件

                cd Desktop/Data/

                cat command.txt

-【使用OpenCV在树莓派上实时显示摄像头画面的Python代码示例】

import cv2



# 创建摄像头对象

cap = cv2.VideoCapture(0)

#调用摄像头‘0’一般是打开电脑自带摄像头,‘1’是打开外部摄像头

# 检查摄像头是否成功打开

if not cap.isOpened():

    print("无法打开摄像头")

    exit()



# 循环读取摄像头画面

while True:

    # 读取一帧图像

    ret, frame = cap.read()



    # 检查图像是否成功读取

    if not ret:

        print("无法获取图像帧")

        break



    # 在窗口中显示图像

    cv2.imshow("Camera", frame)



    # 按下 'q' 键退出循环

    if cv2.waitKey(1) & 0xFF == ord('q'):

        break



# 释放摄像头资源

cap.release()



# 关闭窗口

cv2.destroyAllWindows()



这段代码首先创建一个摄像头对象 `cap`,然后通过 `cap.read()` 循环读取摄像头画面的每一帧图像。每次读取到图像后,使用 `cv2.imshow()` 在窗口中显示图像。通过按下 'q' 键可以退出循环,最后释放摄像头资源并关闭窗口。

请确保已经安装了OpenCV库,并且摄像头设备正确连接并且具有适当的权限。可以将代码保存为 `camera.py`,然后在终端中运行 `python camera.py` 来执行代码。

- 【模型训练,文件修改】

文件目录

- yolov5-master

        - data

                - GarbageClassify(新建文件夹,存放训练图片和配置路径文件等)

                        - images

                                - test(模型训练好后测试时图片)

                                - train(模型训练时所用的训练图片)

                                - val(模型训练时所用的验证图片)

                        - labels

                                - train(模型训练时所用的训练标签)

                                - val(模型训练时所用的验证标签)

                                - GarbageClassify(ymal文件,根据注释修改路径、检测类别等内容)

                         - .......(固定文件)

        - model(固定文件夹)

        - runs(新建文件夹,存放训练结果)

        - detect(新建文件夹,存放训练结果)

        - train(新建文件夹)

        - segments(固定文件夹)

        - utils(固定文件夹)

        - ......一堆固定文件(注意有一个train.py文件,具体看下面)

        - train.py

(按照路径提示把yolov5s.pt预训练模型放在一级文件夹下查看model文件夹中是否包含yolov5的各种ymal文件③【最重要】data中的yaml文件路径

- 【labelimg标记】VOC更换成YOLO才能把标记结果的xml转换成txt文件

- 【树莓派运行yolo时,模型文件放置位置】训练好的模型文件best.pt(最好更改一个名称,因为每次训练模型文件都分为best和last)放置在整个文件夹的根目录下

- 【command命令】树莓派终端cd Desktop/yolo文件夹名称/

训练的命令:(云服务器上)

python3 train.py --weights yolov5s.pt --data data/GarbageClassify/GarbageClassify.yaml --workers 4 --batch-size 2 --epochs 50

(workers同时训练目标;batch训练批次;epochs训练轮次)

识别的命令:(树莓派上)

python3 detect.py --weight best.pt --source data/GarbageClassify/images/test

-【树莓派摄像头实时识别出现0: 480x640 (no detections), 2073.9ms】

        - 情况1:模型问题。第一轮仅用90张图片训练50轮,结果不是很理想;第二轮用300张图片训练100轮,准确率有明显提升

        - 情况2:摄像头问题。重新检查了一遍摄像头,包括连接、设置、固件等,均无问题。后面用第二次训练的模型实时测试时,正常识别了

        - 情况3:光线问题。第二次测试时也出现了同样有时无法识别的问题,主要在于周围杂物太多,放在干净的桌面上,准确率也会变高些,但主要还是在于模型训练的程度!!!需要增加数据集优化模型。

- 【多个种类训练时,总是第一个类别精确度高,且大多数都被认为是第一个类别】

添加数据集后需要手动标注每一张图,但由于每次只添加一个类别进行标注,故标号全成了0,后来更改txt文件中相应序号,就恢复正常了

所以标注时最好收集到全部类别,进行同一批次的标注,这样才能保证类别的序号不会对应错误

- 【YOLOv8目标检测,路径正确但找不到测试图片】

终端命令:yolo task=detect predict model=yolov8_train2_best.pt source=datasets/test/images

原因:images文件夹中的图片出现了非英文字符命名,在图像读取时出现问题

解决方案:重命名图片,且仅包含英文字符

猜你喜欢

转载自blog.csdn.net/Taylor_Kurt/article/details/132011729