# Gradio-YOLOv5-Det
**Repository Path**: mark0931/gradio_yolov5_det
## Basic Information
- **Project Name**: Gradio-YOLOv5-Det
- **Description**: 🚀 基于Gradio的YOLOv5通用目标检测系统
- **Primary Language**: Python
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/PyCVer
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 49
- **Created**: 2022-05-16
- **Last Updated**: 2022-05-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
中文简体|[English](./README.en.md)
基于Gradio的YOLOv5通用目标检测演示系统
可自定义检测模型、演示便捷、安装简单
## 🚀 作者简介
曾逸夫,从事人工智能研究与开发;主研领域:计算机视觉;[YOLOv5官方开源项目代码贡献人](https://github.com/ultralytics/yolov5/graphs/contributors);[YOLOv5 v6.1代码贡献人](https://github.com/ultralytics/yolov5/releases/tag/v6.1)
❤️ Github:https://github.com/Zengyf-CVer
🔥 YOLOv5 官方开源项目PR ID:
- Save \*.npy features on detect.py `--visualize`:https://github.com/ultralytics/yolov5/pull/5701
- Fix `detect.py --view-img` for non-ASCII paths:https://github.com/ultralytics/yolov5/pull/7093
- Fix Flask REST API:https://github.com/ultralytics/yolov5/pull/7210
- Add yesqa to precommit checks:https://github.com/ultralytics/yolov5/pull/7511
- Add mdformat to precommit checks and update other version:https://github.com/ultralytics/yolov5/pull/7529
💡 YOLOv5 v6.1代码贡献链接:
- https://github.com/ultralytics/yolov5/releases/tag/v6.1
🚀更新走势
- `2022-05-14` **🚀 \[好消息\] [Gradio YOLOv5 Det v0.3](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v3)** 正式加入到 **[Gradio官方demo列表](https://github.com/gradio-app/awesome-demos)** 🎉🎉🎉🎉🎉
- `2022-05-13` **🚀\[推荐\] [Gradio YOLOv5 Det 开发版 脚本指令操作](https://gitee.com/CV_Lab/gradio_yolov5_det#-%E8%84%9A%E6%9C%AC%E6%8C%87%E4%BB%A4%E6%93%8D%E4%BD%9C-%E6%8E%A8%E8%8D%90)**
- `2022-05-12` **⚡ [Gradio YOLOv5 Det v0.2.2](https://gitee.com/CV_Lab/gradio_yolov5_det/releases/v0.2.2)正式上线**
- `2022-05-08` **⚡ [Gradio YOLOv5 Det v0.2](https://gitee.com/CV_Lab/gradio_yolov5_det/releases/v0.2)正式上线**
- `2022-04-30` **⚡ [Gradio YOLOv5 Det v0.1](https://gitee.com/CV_Lab/gradio_yolov5_det/releases/v0.1)正式上线**
🤗在线demo
### **🚀 [Gradio YOLOv5 Det v0.3](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v3)** 正式加入到[Gradio官方demo列表](https://github.com/gradio-app/awesome-demos) 🤗
❤️ 点击下图进入[Gradio awesome-demos](https://github.com/gradio-app/awesome-demos) ,在**Computer vision**列表中***Find Me!***
### ❤️ 快速体验
本项目提供了**在线demo**,点击下面的logo,进入**Hugging Face Spaces**中快速体验:
### 💡 Demo 列表
❤️ 点击列表中的链接,进入对应版本的**Hugging Face Spaces**界面中快速体验:
| Demo 名称 | 输入类型 | 输出类型 | 整体界面 | 状态 |
| :--------------------------------------------------------------------------------------------: | :--: | :-------------: | :-------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| 🚀 [Gradio YOLOv5 Det v0.3](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v3) | 图片 | 图片,JSON,PDF,数据表 | | [](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v3) |
| 🚀 [Gradio YOLOv5 Det v0.2.2](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v2_2) | 图片 | 图片,JSON,PDF | [检测前](https://pycver.gitee.io/ows-pics/imgs/gyd_v2_2_screenshot.png) , [检测后](https://pycver.gitee.io/ows-pics/imgs/gyd_v2_2_screenshot02.png) | [](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v2_2) |
| [Gradio YOLOv5 Det v0.2](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v2) | 图片 | 图片,JSON,PDF | [检测前](https://pycver.gitee.io/ows-pics/imgs/gyd_v2_screenshot.png) , [检测后](https://pycver.gitee.io/ows-pics/imgs/gyd_v1_screenshot02.png) | [](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v2) |
| [Gradio YOLOv5 Det v0.1](https://huggingface.co/spaces/Zengyf-CVer/gradio_yolov5_det) | 图片 | 图片,JSON | [检测前](https://pycver.gitee.io/ows-pics/imgs/gyd_v1_screenshot.png) , [检测后](https://pycver.gitee.io/ows-pics/imgs/gyd_v1_screenshot02.png) | [](https://huggingface.co/spaces/Zengyf-CVer/gradio_yolov5_det) |
❗ 注:点击`整体界面`链接,查看项目**整体界面大图**
💎项目流程与用途
### 📌 项目整体流程
### 📌 项目示例
#### ❤️ 检测界面与效果01
#### ❤️ 检测界面与效果02:检测信息
检测界面
检测信息(JSON版)
#### ❤️ 功能界面
包括**图片上传**、**设备切换**、**模型切换**、**推理尺寸**、**置信度阈值**、**IoU阈值**、**标签显示**、**类别选择**等
❗ 注:Gradio的滑动条组件的滑块的位置,初始时不跟随默认值变化,但不影响检测。[Gradio YOLOv5 Det v0.2.2](./gradio_yolov5_det_v2_2.py) 解决了这个问题
功能界面01
功能界面02
功能界面03(v0.1)
❤️ Gradio YOLOv5 Det v0.2 加入**检测报告pdf下载**功能,可以与**JSON**功能组合使用。
功能界面04(v0.2)
检测报告PDF功能界面(v0.2)
检测报告PDF与JSON功能界面(v0.2)
检测报告JSON功能界面(v0.2)
#### ❤️ 快速体验
本项目提供了三个**示例**,用户可以快速体验检测效果:
示例界面 (v0.2)
💡项目结构
```
.
├── gradio_yolov5_det # 项目名称
│ ├── yolov5 # YOLOv5项目
│ ├── model_download # 模型下载
│ │ ├── yolov5_model_p5_p6_all.sh # YOLOv5 P5模型
│ │ ├── yolov5_model_p5_all.sh # YOLOv5 P5模型
│ │ ├── yolov5_model_p6_all.sh # YOLOv5 P6模型
│ │ └── yolov5_model_p5_n.sh # yolov5n模型
│ ├── model_config # 模型配置
│ │ ├── model_name_p5_all.yaml # YOLOv5 P5 模型名称(yaml版)
│ │ ├── model_name_p6_all.yaml # YOLOv5 P6 模型名称(yaml版)
│ │ ├── model_name_p5_p6_all.yaml # YOLOv5 P5 & P6 模型名称(yaml版)
│ │ ├── model_name_p5_n.yaml # yolov5n 模型名称(yaml版)
│ │ ├── model_name_p5_all.csv # YOLOv5 P5 模型名称(csv版)
│ │ ├── model_name_p6_all.csv # YOLOv5 P6 模型名称(csv版)
│ │ └── model_name_p5_n.csv # yolov5n 模型名称(csv版)
│ ├── cls_name # 类别名称
│ │ ├── cls_name_zh.yaml # 类别名称文件(yaml版-中文)
│ │ ├── cls_name_en.yaml # 类别名称文件(yaml版-英文)
│ │ ├── cls_name_ru.yaml # 类别名称文件(yaml版-俄语)
│ │ ├── cls_name_es.yaml # 类别名称文件(yaml版-西班牙语)
│ │ ├── cls_name_ar.yaml # 类别名称文件(yaml版-阿拉伯语)
│ │ ├── cls_name_ko.yaml # 类别名称文件(yaml版-韩语)
│ │ ├── cls_name.yaml # 类别名称文件(yaml版-中文-v0.1)
│ │ └── cls_name.csv # 类别名称文件(csv版-中文)
│ ├── util # 工具包
│ │ ├── fonts_opt.py # 字体管理
│ │ └── pdf_opt.py # PDF管理
│ ├── img_example # 示例图片
│ ├── __init__.py # 初始化文件
│ ├── gradio_yolov5_det_v2_2.py # v0.2.2主运行文件
│ ├── gradio_yolov5_det_v2.py # v0.2主运行文件
│ ├── gradio_yolov5_det.py # v0.1主运行文件
│ ├── LICENSE # 项目许可
│ ├── CodeCheck.md # 代码检查
│ ├── .gitignore # git忽略文件
│ ├── yolov5_pytorch_gpu.md # YOLOv5 PyTorch GPU安装教程
│ ├── README.md # 项目说明
│ ├── README.en.md # 项目说明(英文版)
│ └── requirements.txt # 脚本依赖包
```
❤️ 版本改进
🔥 [Gradio-YOLOv5-Det v0.2](./gradio_yolov5_det_v2.py) 采用[Pillow](https://github.com/python-pillow/Pillow)组件绘制图片检测效果,可**自定义字体**文件。
🔥 [Gradio-YOLOv5-Det v0.2](./gradio_yolov5_det_v2.py) 的检测结果可以在图片上**显示ID、自定义字体标签以及置信度**,同时提供了**6**种语言:**中文、英文、俄语、西班牙语、阿拉伯语以及韩语**,具体效果如下图所示。(点击图片,可查看大图)
| 版本-语言 | 效果图 |
| :-----------: | :---------------------------------------------------------------------------: |
| v0.1-英文 |
|
| **v0.2-中文** |
|
| **v0.2-英文** |
|
| **v0.2-俄语** |
|
| **v0.2-西班牙语** |
|
| **v0.2-阿拉伯语** |
|
| **v0.2-韩语** |
|
🔥安装教程
### ✅ 第一步:创建conda环境
```shell
conda create -n yolo python==3.8
conda activate yolo # 进入环境
```
### ✅ 第二步:克隆
```shell
git clone https://gitee.com/CV_Lab/gradio_yolov5_det.git
```
### ✅ 第三步:安装Gradio YOLOv5 Det依赖
```shell
cd gradio_yolov5_det
pip install -r ./requirements.txt -U
```
❗ 注意:yolov5默认采用pip安装PyTorch GPU版,如果采用官网安装**PyTorch GPU**版,参见[YOLOv5 PyTorch GPU安装教程](./yolov5_pytorch_gpu.md)
⚡使用教程
❤️ 注:**Gradio YOLOv5 Det v0.2.x** 的使用方法和v0.1相同,将`gradio_yolov5_det.py` 改为 `gradio_yolov5_det_v2_x.py` 即可。
### 💡 运行YOLOv5模型
📌 下载YOLOv5 P5模型
❤️ 将yolov5n.pt—yolov5x.pt,yolov5n6.pt—yolov5x6.pt下载到`models`目录中
```shell
bash ./model_download/yolov5_model_p5_p6_all.sh
```
📌 运行
```shell
python gradio_yolov5_det_v3.py # v0.3
python gradio_yolov5_det_v3_2.py # v0.3.2
# 在浏览器中输入:http://127.0.0.1:7860/或者http://127.0.0.1:7861/ 等等(具体观察shell提示)
```
❗ 注意:v0.1和v0.2.x版本运行如下:
```shell
cd gradio_yolov5_det && git clone https://github.com/ultralytics/yolov5.git
cp *.pt yolov5
python gradio_yolov5_det.py # v0.1
python gradio_yolov5_det_v2.py # v0.2
python gradio_yolov5_det_v2_2.py # v0.2.2
```
❤️ 本项目提供了3种YOLOv5模型下载脚本,默认为`yolov5_model_p5_p6_all.sh`
```shell
# yolov5n模型下载及运行
bash ./model_download/yolov5_model_p5_n.sh
python gradio_yolov5_det.py -mc ./model_config/model_name_p5_n.yaml (yaml版)
# python gradio_yolov5_det.py -mc ./model_config/model_name_p5_n.csv (csv版)
# YOLOv5 P5模型下载及运行
bash ./model_download/yolov5_model_p5_all.sh
python gradio_yolov5_det.py -mc ./model_config/model_name_p5_all.yaml (yaml版)
# python gradio_yolov5_det.py -mc ./model_config/model_name_p5_all.csv (csv版)
# YOLOv5 P6模型下载及运行
bash ./model_download/yolov5_model_p6_all.sh
python gradio_yolov5_det.py -mc ./model_config/model_name_p6_all.yaml (yaml版)
# python gradio_yolov5_det.py -mc ./model_config/model_name_p6_all.csv (csv版)
```
❗ 注:默认类别文件[cls_name_zh.yaml](./cls_name/cls_name_zh.yaml)|[cls_name.csv](./cls_name/cls_name.csv)
### 💡 运行自定义模型
```shell
python gradio_yolov5_det.py -mc custom_model_name.yaml -cls custom_model_cls_name.yaml (yaml版)
# python gradio_yolov5_det.py -mc custom_model_name.csv -cls custom_model_cls_name.csv (csv版)
# 在浏览器中输入:http://127.0.0.1:7860/或者http://127.0.0.1:7861/ 等等(具体观察shell提示)
```
📌 自定义模型名称
`custom_model_name.yaml`格式:
```yaml
model_names: ["widerface-s", "widerface-m", "widerface-l"]
```
`custom_model_name.csv`格式(`\n`分隔):
```shell
widerface-s
widerface-m
widerface-l
```
📌 自定义模型类别
`custom_model_cls_name.yaml`格式:
```yaml
model_cls_name: ["face"]
```
`custom_model_cls_name.csv`格式(`\n`分隔):
```shell
face
```
### 💡 脚本指令操作 \[推荐\]
❤️ 本项目提供了一些脚本指令,旨在扩展项目的功能。
❗ 注:其中的一些功能是界面组件(按钮、文本框等)无法实现的,需要通过脚本指令完成:
```shell
# 输入源切换,默认为图片上传(v0.3)
python gradio_yolov5_det.py -src upload # 图片上传
python gradio_yolov5_det.py -src webcam # webcam拍照
# 输入图片操作模式,默认为图片编辑器(v0.3)
python gradio_yolov5_det.py -it editor # 图片编辑器
python gradio_yolov5_det.py -it select # 区域选择
# 设备切换(cuda 或者 cpu)
python gradio_yolov5_det.py -dev cuda:0 # cuda
python gradio_yolov5_det.py -dev cpu # cpu
# 自定义下拉框默认模型名称
python gradio_yolov5_det.py -mn yolov5m
# 自定义NMS置信度阈值
python gradio_yolov5_det.py -conf 0.8
# 自定义NMS IoU阈值
python gradio_yolov5_det.py -iou 0.5
# 设置推理尺寸,默认为640
python gradio_yolov5_det.py -isz 320
# 设置最大检测数,默认为50(v0.3)
python gradio_yolov5_det.py -mdn 100
# 设置默认不显示检测标签,注:v0.3弃用
python gradio_yolov5_det.py -lds
```
### 💡 界面操作
操作下拉框、滑动条、复选框来对模型进行相关设置
操作复选框组来对模型类别进行设置
点击`Submit`按钮进行检测功能,点击`clear`按钮重置所有设置
点击`Flag`按钮,下载相关检测数据
❗ 注:上述界面仅供参考,具体界面以实际项目为主。
❤️ 检测报告下载功能:点击`下载检测报告界面`即可下载PDF文件
`Det_Report.pdf`内容如下:
相关检测数据存储在`run`目录中,结构如下:
```
# run目录
.
├── run # 人脸数据保存目录
│ ├── 原始图片 # 原始图片目录
│ │ ├── 0.jpg # 原始图片
│ │ ├── 1.jpg # 原始图片
│ │ ├── ......
│ ├── 检测图片 # 检测图片目录
│ │ ├── 0.png # 检测图片
│ │ ├── 1.png # 检测图片
│ │ ├── ......
│ ├── 下载检测报告 # 检测报告目录
│ │ ├── 0.pdf # 检测图片
│ │ ├── 1.pdf # 检测图片
│ │ ├── ......
│ ├── log.csv # 检测日志
```