# Gradio-YOLOv5-Det **Repository Path**: wanghouting2/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-06 - **Last Updated**: 2022-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 中文简体|[English](./README.en.md)

Simple Icons

基于Gradio的YOLOv5通用目标检测演示系统

可自定义检测模型、演示便捷、安装简单

code check Releases Version YOLOv5 Version Gradio Version Hugging Face Spaces License

Python Version Imports: isort flake8 markdown format Safety

## 🚀 作者简介 曾逸夫,从事人工智能研究与开发;主研领域:计算机视觉;[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-04-30` **⚡ [Gradio YOLOv5 Det v0.1](https://gitee.com/CV_Lab/gradio_yolov5_det/releases/v0.1)正式上线**

🤗在线demo

❤️ 本项目提供了**在线demo**,点击下面的logo,进入**Hugging Face Spaces**中快速体验:
### 💡 Demo 列表 ❤️ 点击列表中的链接,进入对应版本的**Hugging Face Spaces**界面中快速体验: | Demo 名称 | 输入类型 | 输出类型 | 状态 | | :----------------------------------------------------------: | :------: | :--------: | :----------------------------------------------------------: | | [Gradio YOLOv5 Det v0.2](https://huggingface.co/spaces/Zengyf-CVer/Gradio_YOLOv5_Det_v2) | 图片 | 图片,JSON | [![demo status](https://img.shields.io/website-up-down-green-red/https/hf.space/gradioiframe/Zengyf-CVer/Gradio_YOLOv5_Det_v2/+.svg?label=demo%20status)](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 | [![demo status](https://img.shields.io/website-up-down-green-red/https/hf.space/gradioiframe/Zengyf-CVer/gradio_yolov5_det/+.svg?label=demo%20status)](https://huggingface.co/spaces/Zengyf-CVer/gradio_yolov5_det) |

💎项目流程与用途

### 📌 项目整体流程
### 📌 项目示例 #### ❤️ 检测界面与效果01
#### ❤️ 检测界面与效果02:检测信息
检测界面
检测信息(JSON版)
#### ❤️ 功能界面 包括**图片上传**、**设备切换**、**模型切换**、**推理尺寸**、**置信度阈值**、**IoU阈值**、**标签显示**、**类别选择**等 ❗ 注:Gradio的滑动条组件的滑块的位置,初始时不跟随默认值变化,但不影响检测
功能界面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.1)
示例界面 (v0.2)

💡项目结构

``` . ├── gradio_yolov5_det # 项目名称 │ ├── yolov5 # YOLOv5项目 │ ├── model_download # 模型下载 │ │ ├── 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_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.yaml # 类别名称文件(yaml版) │ │ ├── cls_name_en.yaml # 类别英文名称文件(yaml版) │ │ └── cls_name.csv # 类别名称文件(csv版) │ ├── img_example # 示例图片 │ ├── __init__.py # 初始化文件 │ ├── 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) 的检测结果可以在图片上**显示中文** (左:v0.1,右:v0.2;点击查看大图)

🔥安装教程

### ✅ 第一步:安装Gradio YOLOv5 Det 📌 创建conda环境 ```shell conda create -n yolo python==3.8 conda activate yolo # 进入环境 ``` 📌 递归式克隆 ```shell git clone https://gitee.com/CV_Lab/gradio_yolov5_det.git --recursive ``` 📌 安装Gradio YOLOv5 Det依赖 ```shell pip install -r ./requirements.txt -U ``` ### ✅ 第二步:安装YOLOv5依赖 ```shell conda activate facelabel # 进入环境 cd ./face-labeling/yolov5 pip install -r requirements.txt -U ``` ❗ 注意:yolov5默认采用pip安装PyTorch GPU版,如果采用官网安装**PyTorch GPU**版,参见[YOLOv5 PyTorch GPU安装教程](./yolov5_pytorch_gpu.md)

⚡使用教程

❤️ 注:**Gradio YOLOv5 Det v0.2** 的使用方法和v0.1相同,将`gradio_yolov5_det.py` 改为 `gradio_yolov5_det_v2.py` 即可。 ### 💡 运行YOLOv5模型 📌 下载YOLOv5 P5模型 ```shell # 将yolov5n.pt,yolov5s.pt,yolov5m.pt,yolov5l.pt,yolov5x.pt下载到yolov5目录中 bash ./model_download/yolov5_model_p5_all.sh ``` 📌 运行 ```shell python gradio_yolov5_det.py # 在浏览器中输入:http://127.0.0.1:7860/或者http://127.0.0.1:7861/ 等等(具体观察shell提示) ``` ❗ 注:本项目提供了3种YOLOv5模型下载脚本,默认为`yolov5_model_p5_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 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.yaml](./cls_name/cls_name.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 # 设备切换(cuda 或者 cpu) python gradio_yolov5_det.py -dev 0 # cuda 0 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 # 设置默认不显示检测标签 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 # 检测日志 ```