two-stage (两阶段):Faster-rcnn Mask-Rcnn系列
one-stage (单阶段):YOLO系列
最核心的优势:速度非常快,适合实时监测任务。但是缺点也有,效果可能不好
速度较慢在2018年是
Mask R-CNN的原始实现能够在配备NVIDIA Tesla M40 GPU的5fps,但是效果很好,非常实用的通用框架maskrcnn
part1已经给出了这个
yolov1
这个思路很简单就是设定两个参数 h和w 然后得到一个预测框 计算和真实框的差别,再根据差别更新h和w,把你事先标好框的图片数据给yolo训练,yolo输出层会输出框来拟合标好的框,就是拟合与事先的框的偏移量,比如你最后特征图是13*13然后就每个像素生成三个框来拟合你真实的框
YOLO V1目标检测,看我就够了,看看b站【精读AI论文】YOLO V1目标检测,看我就够了_哔哩哔哩_bilibili
是针对每一个点都有两个候选框,根据IOU选择完候选框之后,通过置信度看其能不能算为一个物体,训练用的数据集一般是人工打上去的标签
发现网上yolov5视频主要是讲解原理,不讲解实战甚至安装
在github下载yolov5.zip,在prompt输入(base) C:\Users\eve>pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121,下载pytorch,
在一个单独的环境中,能使用pip就尽量使用pip,实在有问题的情况,再使用conda进行安装,不要来回混淆
·CUDA是否必须安装
·如果只需要训练、简单推理,则无需单独安装CUDA,直接在官网搜索对应的版本,通过pip安装即可
·如果需要编译、部署等,那么还是需要单独安装CUDA的,这部分大家可以自行百度
关键参数
- ·weights:训练好的模型文件
- ·source:检测的目标,可以是单张图片、文件夹、屏幕或者摄像头等
- ·conf---thres:置信度阈值,越低框越多,越高框越少
- ·iou---thres:IOU阈值,越低框越少,越少框越多
可以看到yolov5n是最小的,只要1.9M,速度也最快
输入python detect.py --weights yolov5s.pt即可检测那两个预定图片
python detect.py --weight yolov5s.pt -- source data /images/bus.jpg,这是对具体照片的检测
python detect.py --weight yolov5s.pt -- source screen,这是对电脑屏幕实时监测,持续循环,按ctrl+c即可暂停
还有其他方法,对应640*640图片尺寸变化
基于web的检测
基于torch.hub的检测方法,我们在jupyterlab
python
import torch
#Model
model = torch.hub.load("./","yolov5s", source="local")#即为加载本地的模型
# Images
img ="./data/images/zidane.jpg"
#Inference
results=model(img)
#Results
results.show()
数据集
python
import cv2
import matplotlib.pyplot as plt
#打开视频文件
video =cv2.videoCapture("./BVN.mp4")
#读取一帧
ret, frame video. read()
plt.imshow(frame)#因为要在notebook里面显示图片,而不是弹出窗口
plt.imshow(cv2.cvtColor(frame,cv2.COLOR_BGR@RGB))
结合后循环30fps一抽
video = cv2.Videocapture("./BVN.mp4")
num =0 #计数器
save step=30#同隔帧
while True:
ret, frame=video.read()
if not ret:
break
num+=1
if num%save_step == 0
cv2.imwrite("./images/" +str (num) + ".jpg", frame)
这里没有用OpenCV进行读取显示,单纯的打开图片
通过pip install labelimg下载标注工具,在prompt直接输入labelimg就打开了
这个框文件夹是把标注结果放在哪里,创建即可,把左边pasvoc的文件格式换成yolov5并且save,记得打开auto save自动保存
右键create box即可标注
模型训练
新建如下文件夹,把数据放入即可
what's your mission in shanghai!?
记住classes不要放
数据描述文件 ,修改train.py的439行
通常会出现一些问题,只好问ai了