B站视频笔记。
1.首先到Github上找RoboFlow的仓库地址
该教程提供了传统算法比如Resnet、YOLO等,还有包含一些较新的算法。
2.通过Colab打开例程
- 可以直接通过Colab打开,还支持其他的打开方式,这里提供三种方式。
- 提示:
- 点击授权即可。
3.算法步骤
-
开始前准备
-
安装YOLOV7
-
安装Requirements
-
使用预训练的Coco Model
-
需要的数据格式
-
下载数据集从Roboflow Universe
-
自定义训练
-
评估
准备用户数据集:在这个教程中,我们使用从Roboflow Universe网站下载的90000+个数据集之一,如果你有了自己的图像(或者已经完成标注),你可以使用Roboflow转换你的数据集【一组开发人员用来快速准确地构建更好的计算机视觉模型的工具】。超过100K+开发者使用Roboflow进行自动化标注,转换数据集格式(比如YOLOV7),训练、部署和提升他们的数据集或者模型。 -
按照开始指导手册,可以创造或者准备你自己的数据集,保证选择Instance Segmentation选项,如果你想拥有自己的数据集在Roboflow。
4.开始
首先我们确定我们可以使用GPU,可以使用nvidia-smi来执行。运行该命令提示:
点仍然运行,
5.安装YOLO v7
- 获取当前路径。
import os
HOME = os.getcwd()
print(HOME)
- 克隆YOLO V7代码
# clone YOLOv7 repository
%cd {HOME}
!git clone https://github.com/WongKinYiu/yolov7
# navigate to yolov7 directory and checkout u7 branch of YOLOv7 - this is hash of lates commit from u7 branch as of 12/21/2022
%cd {HOME}/yolov7
!git checkout 44f30af0daccb1a3baecc5d80eae22948516c579
6.安装依赖
%cd {HOME}/yolov7/seg
!pip install --upgrade pip
!pip install -r requirements.txt
部分效果展示。
7.使用预训练的COCO模型进行推理
# download COCO starting checkpoint to yolov7/seg directory
%cd {HOME}/yolov7/seg
!wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-seg.pt
WEIGHTS_PATH = f"{HOME}/yolov7/seg/yolov7-seg.pt"
# 下载图片到yolov7/seg目录
# download example image to yolov7/seg directory
%cd {HOME}/yolov7/seg
!wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=1sPYHUcIW48sJ67kh5MHOI3GfoXlYNOfJ' -O dog.jpeg
IMAGE_PATH = f"{HOME}/yolov7/seg/dog.jpeg"
开始预测
%cd {HOME}/yolov7/seg
!python segment/predict.py --weights $WEIGHTS_PATH --source $IMAGE_PATH --name coco
这里要注意YOLOV7会单独创建一个结果文件夹,默认是exp,exp2,exp3等等,
RESULT_IMAGE_PATH = f"{HOME}/yolov7/seg/runs/predict-seg/coco/dog.jpeg"
from IPython.display import Image, display
display(Image(filename=RESULT_IMAGE_PATH))
显示预测结果:
8.需要的数据格式
对于YOLOv7分割模型,我们需要 YOLO v7 Pytorch格式,注意:如果想学习更多的标注格式,可以访问
Computer Vision Annotation Formats
1.数据集目录结构
数据集包含图片和标签,分成三部分,训练、测试和验证三个子部分,另外,应该有一个data.yaml文件在数据集的根目录。
2.标注文件的结构
每个标签文件都是一个txt文档,和图片具有相同的名称,请看下面的标签文件的内容。
每一行在标签文件里面,应该有一定的结构,class_index x1 y1 x2 y2 x3 y3 …
3.data.yaml文件结构
9.从Roboflow Universe下载数据集
你需要你的API_KEY,你可以通过Roboflow右上角的资料里找到,然后设置,你将重新进入设置界面,在左边WORKSPACES点击Roboflow->Roboflow API,复制private API key,使用Shift+enter运行这个cell,粘贴API-key到提示窗口。
注意:网络有时候有段慢,执行会遇到卡顿的情况。
这里输入秘钥后,直接回车,这个运行状态的按钮一直处于旋转的状态。直接回车,可以运行下一行。
%cd {HOME}/yolov7/seg
!pip install roboflow --quiet
from roboflow import Roboflow
rf = Roboflow(api_key=api_key)
project = rf.workspace("university-bswxt").project("crack-bphdr")
dataset = project.version(2).download("yolov7")
10.训练
%cd {HOME}/yolov7/seg
!python segment/train.py --batch 16 \
--epochs 10 \
--data {dataset.location}/data.yaml \
--weights $WEIGHTS_PATH \
--device 0 \
--name custom
from IPython.display import Image, display
display(Image(filename=f"{HOME}/yolov7/seg/runs/train-seg/custom/val_batch0_labels.jpg"))
11.评估
我们可以评估
%cd {HOME}/yolov7/seg
!python segment/predict.py \
--weights {HOME}/yolov7/seg/runs/train-seg/custom/weights/best.pt \
--conf 0.25 \
--source {dataset.location}/test/images
我们可以显示一些结果:
import glob
from IPython.display import Image, display
for imageName in glob.glob('/content/yolov7/seg/runs/predict-seg/exp/*.jpg')[:2]:
display(Image(filename=imageName))
print("\n")
注意:前面的是猫狗。只是用于测试和后面的裂缝检测是两个项目,前面的主要用于测试