毕设步骤详情
本文最后更新于 41 天前,其中的信息可能已经有所发展或是发生改变。

本课设使用yolov3,详情参考视频

公司方面也是源码套用即可。

step1:yolo-v3的简介

1.改进方面最大改进就是网格结构,使其更适合小目标检测;

2.特征做的更细致,融入多持续特征图信息来预测不同规格物体

3.先验框由三种变成九种

4.softmax:多分类分类器,对其进行改进,预测多标签任务,一个物体可以有多个标签,如:狗-哺乳动物-犬科……

多scale

为了检测不同大小的物体,设计了3个scale(13×13,26×26,52×52),13×13预测大的,26×26预测中的,52×52预测小的,每种有三种候选框。

如何得到?scale变换,需要特征融合,先取出13×13,后面的需要借鉴前面的,

image-20230328194946405

方法:上采样。

残差连接

resnet(深度残差网络),v3中也使用了resnet的思想,堆叠更多的层来进行特征提取。vgg网络会越学越差劲(19层后),而resnet解决了这个问题。

resnet思想:为了将好的卷积留下,差劲的卷积放弃,至少不比原来差。

darknet53

image-20230328200009505

池化:将特征做压缩。

image-20230328200451752
image-20230328214910635

softmax

损失,对数函数,

image-20230328215503061

step2:流程

1.准备一个编译器

eclipse,pycharm,idea都可,相关教程自己找。

2.环境配置

创建虚拟环境yolov3

(一)首先我们要创建适合yolov3运行的虚拟环境,本机器使用的是python3.8,故降低python版本。

在anaconda控制台中进行虚拟环境创建。

# 创建yolov3环境
conda create -n yolov3 python=3.7 anaconda
# 激活环境
conda activate yolov3![](C:/Users/Lenovo/AppData/Roaming/Typora/typora-user-images/image-20230331223549508.png)
image-20230331224027278

(二)安装pytorch

因为要在低版本中将本身的gpu调用起来,所以选用以下命令。

# 安装pytorch
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.2 -c pytorch

请耐心等待,因为是从原镜像安装,所以可能会有点慢。如果失败请多试几次一定可以安装成功。

image-20230331225311711

(三)测试

# 测试torch
import torch
torch.cuda.is_available()
# 查看torch版本
torch.__version__
image-20230331225525566

出现上面结果证明你已安装成功。

3.进入代码实现环境匹配

下载yolov3的源码,地址

image-20230331232430757

下载官方权重文件,地址

image-20230331232404868

下载完成后找到源码压缩包进行解压,在文件夹中新建weights文件夹,将下载好的权重文件放入其中。

image-20230331232639807
image-20230331232711435

安装yolov3需要的包和库

# 安装代码
pip install -r requirements.txt
image-20230331230050515

错误解决

# 解决pip问题
python -m ensurepip
python -m pip install --upgrade pip
# 解决pyqt5问题
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple " pyqt5<5.13"

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple " pyqtwebengine<5.13"

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

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

安装完成后就不会报错了。

4.测试代码

# 测试是否完成环境与源码配套
python detect.py --weights D:\A-bishe\code\yolov3-master\weigths\yolov3.pt --source data/images/bus.jpg
image-20230331233454511

step3:训练与测试

1.数据标注

使用labelimg进行标注。

image-20230407214809232

2.配置环境

(一)在data文件夹下新建voc_rbc.yaml文件

path: ../yolov3-9.6.0/VOCdevkit/
train:
 - C:\Users\Lenovo\Desktop\dataset\images\train
val:
 - C:\Users\Lenovo\Desktop\dataset\images\val

nc: 4  # number of classes
names: ['xfc','xc','yzc','jc']  # class names
image-20230407231140677

(二)在models文件下新建yolov3_rbc.yaml文件

# YOLOv3 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 4  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
anchors:
 - [10,13, 16,30, 33,23]  # P3/8
 - [30,61, 62,45, 59,119]  # P4/16
 - [116,90, 156,198, 373,326]  # P5/32

# darknet53 backbone
backbone:
 # [from, number, module, args]
[[-1, 1, Conv, [32, 3, 1]],  # 0
  [-1, 1, Conv, [64, 3, 2]],  # 1-P1/2
  [-1, 1, Bottleneck, [64]],
  [-1, 1, Conv, [128, 3, 2]],  # 3-P2/4
  [-1, 2, Bottleneck, [128]],
  [-1, 1, Conv, [256, 3, 2]],  # 5-P3/8
  [-1, 8, Bottleneck, [256]],
  [-1, 1, Conv, [512, 3, 2]],  # 7-P4/16
  [-1, 8, Bottleneck, [512]],
  [-1, 1, Conv, [1024, 3, 2]],  # 9-P5/32
  [-1, 4, Bottleneck, [1024]],  # 10
]

# YOLOv3 head
head:
 [[-1, 1, Bottleneck, [1024, False]],
  [-1, 1, Conv, [512, [1, 1]]],
  [-1, 1, Conv, [1024, 3, 1]],
  [-1, 1, Conv, [512, 1, 1]],
  [-1, 1, Conv, [1024, 3, 1]],  # 15 (P5/32-large)

  [-2, 1, Conv, [256, 1, 1]],
  [-1, 1, nn.Upsample, [None, 2, 'nearest']],
  [[-1, 8], 1, Concat, [1]],  # cat backbone P4
  [-1, 1, Bottleneck, [512, False]],
  [-1, 1, Bottleneck, [512, False]],
  [-1, 1, Conv, [256, 1, 1]],
  [-1, 1, Conv, [512, 3, 1]],  # 22 (P4/16-medium)

  [-2, 1, Conv, [128, 1, 1]],
  [-1, 1, nn.Upsample, [None, 2, 'nearest']],
  [[-1, 6], 1, Concat, [1]],  # cat backbone P3
  [-1, 1, Bottleneck, [256, False]],
  [-1, 2, Bottleneck, [256, False]],  # 27 (P3/8-small)

  [[27, 22, 15], 1, Detect, [nc, anchors]],   # Detect(P3, P4, P5)
]
image-20230407231256354

2.训练

# 训练代码           权重                                                      预设模型                     数据
python train.py --weights D:\A-bishe\code\yolov3-master\weigths\yolov3.pt --cfg models/yolov3_rbc.yaml --data data/voc_rbc.yaml --epochs 100 --workers 0
image-20230407215125220
image-20230407215147001

3.测试

# 测试代码
python detect.py --weights runs/train/exp3/weights/best.pt --source  C:\Users\Lenovo\Desktop\1\xfc1.mp4
image-20230407215336537
image-20230407215354128

问题解决区

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇