树莓派配置YOLOv7

前言

​ 笔者目前仍在学习阶段,本文章只为记录配置yolov7过程,以防日后忘记。

正文

各种事前准备

代码克隆与环境配置

​ 首先在终端克隆一下代码。

git clone https://github.com/WongKinYiu/yolov7

​ 然后先不着急安装文件夹里面的requirement.txt,先把pytorch安装一下,否则有可能会导致pytorch版本不适配树莓派(具体我也不是很懂)

​ 进入该网站 https://download.pytorch.org/whl/torch_stable.html后,寻找自己需要的版本即可。笔者用的是cpu/torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whlcpu/torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

​ 下载好后,运行一下安装命令。然后pytorch不出意外的话就安装好啦。

pip3 install torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl
pip3 install torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

​ 安装完pytorch之后,就可以去安装requirement.txt了。

cd yolov7
pip3 install -r requirement.txt

​ 然后双手离开键盘泡杯咖啡吃点零食,慢慢等待进度条就好了。也许会有几个橙色的warning,不过只要没有红色应该就基本ok。

下载权重并试运行

​ 首先先建立一个存放权重的文件夹。

mkdir weights
cd weights

​ 然后去这个网站看一下https://github.com/WongKinYiu/yolov7/releases。先下载yolov7_training.pt,这个是预训练模型,之后训练的时候得用。

wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7_training.pt

​ 再下载个已经训练好的模型,用来试运行。笔者一般会用yolov7.pt或者yolov7-tiny.pt。

wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt

​ 下载好之后,就要开始试运行了。运行以下命令(以yolov7.pt为例)。

cd ..
python detect.py --weights weights/yolov7.pt --source inference/images 

​ 这时,有可能会出现OpenBLAS Warning : Detect OpenMP Loop and this application may hang这样的报错(我也不知道算不算报错,总之就是一种非正常状态)。ctrl+c停止运行后,执行以下命令。

export OMP_NUM_THREADS=1

​ 再运行一次,应该问题就解决了。具体原因我也不知道。

训练模型

突然想起来,训练模型的话总不可能在树莓派训练,所以记得要按上面的步骤在训练模型的设备上重新配置yolo。

可能不同的系统会有些出入,不过大体差不多,实在不行就看看别的文章吧。

创建数据集的文件夹

首先准备datasets的文件夹。

cd yolov7
mkdir datasets
cd datasets
mkdir NAME (这里是自己的项目名称)
cd NAME

然后在NAME里面建立images、labels两个文件夹。

mkdir images
mkdir labels

随后cd分别进入这两个文件夹,建立train、val的文件夹。

mkdir train
mkdir val

再把自己的图片和标注的数据塞进去就好啦。

准备数据集

标注数据这一环,虽然很想展开说说,但是实在是要写太多了,就不在这里详细展开了,不过我用的是labelIMG这款数据标注的工具,大家可以自行搜索一下。

标注好了以后,需要在NAME文件夹里创建train_list.txt、val_list.txt两个txt文件,里面包含的是图片的路径。生成这个文件只要一个for循环就好了,给大家参考一下:

import os

files = os.listdir("./images/train")

with open("train_list.txt", 'w') as f:
    for file in files:
        if ".DS_" in file:  # 用的是mac 所以需要这一行防止出bug
            continue
        path = "datasets/cone/images/train/" + file + "\n"
        f.write(path)

另外,如果你是用windows电脑来训练的话,要把path那一行的“/”换成“\”,不然之后在实际训练的过程中程序会找不到数据的位置,然后报错。

配置其他文件

第一个文件:

cd yolov7/cfg/training/

在这个文件夹里你会看到有一个文件叫做yolov7.yaml,然后我们需要在现在这个位置复制它、再修改它,给它取名叫yolov7-NAME.yaml(具体什么名字可以自己定,搞得清楚就行)。

打开yolov7-NAME.yaml,看到除了注释的第一行有一个nc: 80,请把这个80改成你自己的数据类别的个数,比如2。

第二个文件:

cd yolov7/data/

在这个文件夹里你会看到有一个文件叫做coco.yaml,然后同样地,复制一个副本在这个文件夹里,随后改名叫做NAME.yaml。

打开NAME.yaml,因为要修改的相对比较多,就直接把大概的样子贴在下面了。

# COCO 2017 dataset http://cocodataset.org

# download command/URL (optional)
#download: bash ./scripts/get_coco.sh

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ./datasets/NAME/train_list.txt  # 118287 images
val: ./datasets/NAME/val_list.txt  # 5000 images
#test: ./coco/test-dev2017.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# number of classes
nc: 2

# class names
names: ["FIRST", "SECOND"]
开始训练

终于要开始训练啦。在终端输入以下命令:

cd yolov7
python train.py --weights weights/yolov7_training.pt --cfg cfg/training/yolov7-NAME.yaml --data data/NAME.yaml --device 0 --batch-size 32 --epoch 50

其中,device表示的是gpu,我只有一个所以是0,如果有两个的话就是–device 0, 1,如果没有的话就是–device cpu。

batch-size和epoch大家按自己的需求设置就行了。

最后训练出来的结果会出现在yolov7/runs/train/的文件夹里,具体的我就不详细说啦。

总结

也没什么好总结的,祝大家都可以顺利完成自己的项目!可能会有没提到的内容,有问题的可以在下面反馈留言。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值