【源码】YOLOv5云端API部署
简介
这是一个YOLOv5的云端部署代码,其存在的主要目的是为了解决将YOLOv5训练出来的权重或者官方权重简单快速的部署上云服务或者Docker中,并且可以通过POST请求在任意代码中调用(如Java、Python、Android…)。
- 环境要求:python3和YOLOv5官方指定环境
- 设备要求:Windows(GPU/CPU)、Linux(GPU/CPU)
目录
.
├── Serving_model # 模型文件夹
│ └── commodity
│ └── 1 # 版本
│ └── weights.pt # 权重
├── clear.bat # Windows环境下清理服务缓存
├── clear.sh # Linux环境下清理服务缓存
├── config.yaml # 配置文件
├── detector.py # YOLOv5的封装
├── images # 测试图和POST案例
│ ├── bus.jpg
│ ├── post.py # POST案例
│ └── zidane.jpg
├── models # YOLOv5文件夹
├── server.py # 云端部署主Server启动文件
├── static # 静态网页相关内容
│ ├── css
│ │ └── overall.css
│ ├── icon
│ │ └── favicon.png
│ └── js
│ ├── jquery-1.11.1.min.js
│ └── main.js
├── templates
│ └── Index.html # 静态页面
└── utils # YOLOv5工具文件夹
使用
- 面包多-【源码】YOLOv5云端API部署
- 修改配置文件config.yaml:
# 未解释内容不要做修改!!!
HOST: localhost # 本地测试为localhost,云端部署为0.0.0.0
PORT: 8090 # 根据需求指定端口,默认8090FOLDER: ['caches', 'results','results_json']
CACHE_FOLDER: caches
RESULTS_FOLDER: results
ALLOWED_EXTENSIONS: ['png', 'jpg', 'jpeg']MYDEVICE: '0' # 使用的设备('0':代表使用GPU;'cpu':代表使用CPU)
IMG_SIZE: 640 # 输入图片大小640
THRESHOLD: 0.6 # 置信度
DIR_PATH: Serving_model/commodity/
- 修改server.py:
# 第101到114行,确定某种场景下使用后,删除另外一种方式即可
'''
方式一运行,调试情景下使用
app.run()中可以接受两个参数,分别是threaded和processes,用于开启线程支持和进程支持。
1.threaded : 多线程支持,默认为False,即不开启多线程;
2.processes:进程数量,默认为1.
'''
app.run(host=cfg['HOST'], port=cfg['PORT'], debug=False, threaded=True, processes=1)'''
方式二运行,部署情景下使用
'''
# server = pywsgi.WSGIServer((cfg['HOST'],cfg['PORT']),app)
# server.serve_forever()
- 启动服务:
# 确认自己安装好python3环境,其他环境同YOLOv5官方指定环境
python server.py输出
============================================
Model Version:1,Use Model Weight:/weights.pt
============================================
YOLOv5 2022-2-9 torch 1.10.1+cu102 CUDA:0 (NVIDIA GeForce GTX 1050, 4096MiB)Fusing layers...
Model Summary: 213 layers, 7225885 parameters, 0 gradients, 16.5 GFLOPs* Serving Flask app 'server' (lazy loading)* Environment: productionWARNING: This is a development server. Do not use it in a production deployment.Use a production WSGI server instead.* Debug mode: off* Running on http://localhost:8090/ (Press CTRL+C to quit)
服务启动后,在浏览器访问(与配置文件
config.yaml
中的HOST
和POST
保持一致访问):http://127.0.0.1:8090
即可测试发送post请求:
# 进入images文件夹下,修改post.py即可
import requests
import jsonurl = 'http://127.0.0.1:8090/detect'
files = {'file': open('./bus.jpg', 'rb')}
r = requests.post(url, files=files)
print(r.text)
# 之后运行这个post.py文件
输出:
{"img_info": {"bus-04": {"confidence": 0.849,"label": "bus","xmax": 810,"xmin": 13,"ymax": 789,"ymin": 223},"person-01": {"confidence": 0.896,"label": "person","xmax": 810,"xmin": 672,"ymax": 878,"ymin": 395},"person-02": {"confidence": 0.87,"label": "person","xmax": 346,"xmin": 221,"ymax": 867,"ymin": 408},"person-03": {"confidence": 0.852,"label": "person","xmax": 248,"xmin": 49,"ymax": 912,"ymin": 390}},"img_url": "static\\caches\\ba26d4fff86a4143a00daf058ee458eb.jpg","result_url": "static\\results\\ba26d4fff86a4143a00daf058ee458eb.jpg","status": 1,"time": "1.6179s"
}
- 更换为你自己训练的模型:
请注意,我们的API服务默认支持YOLOv5 version6.1训练出来的权重,其他版本训练出来的权重,需要调整相应的文件,即
modules
和utils
文件夹为对应版本即可!
将你自己训练的模型重新命名为:weights.pt
,在Serving_model\commodity
文件夹下新建一个最新的数字文件夹(例如Serving_model\commodity
文件夹下有一个1
文件夹,你可以新建一个2
文件夹),将weights.pt
放入到新建的这个数字文件夹。
这里我们的server.py里面会自动检测大数字的文件夹并且调用其权重。这里2比1大因此会优先调用2文件夹中的权重。
- 重复上述步骤4-6即可完成自己项目的本地部署和测试。
- 云端部署与本地部署无差异。
API参数解释
前面我们说到将YOLOv5做成了API服务,参数解释如下:
发送
参数 | 解释 |
---|---|
file | 二进制读取的图片 |
回传
参数 | 解释 |
---|---|
status | 1 - 成功检测到目标;0 - 未检测到目标 |
img_url | 上传的图片在云端存储地址 |
result_url | 模型检测绘制的图片的云端存储地址 |
result_json | 模型检测信息的云端存储地址 |
img_info | 返回多个物体的检测类别、置信度、xywh值 |
time | 模型预测该张图片的时间 |
【源码】YOLOv5云端API部署相关推荐
- 【最强最全车牌识别算法】支持13种中文车牌识别的云端API部署(可直接获取源码使用)
项目简介 在城市交通管理.视频监控.车辆识别和停车场管理中车辆检测与车牌识别是一项富有挑战而重要的任务.利用深度学习识别不同条件下的车辆及其车牌信息.更具体地说,实时目标检测网络(Yolov5)用于从 ...
- java毕业生设计中小型饭馆餐饮管理系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计中小型饭馆餐饮管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计中小型饭馆餐饮管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B ...
- java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...
- CentOS 6.7 源码搭建LNMP架构部署动态网站环境
源码搭建LNMP架构部署动态网站环境 Nginx 简介 Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳定性.丰富的功能以及占用较少的系统资源等独特特性. Nginx (& ...
- java毕业生设计东理咨询交流论坛计算机源码+系统+mysql+调试部署+lw
java毕业生设计东理咨询交流论坛计算机源码+系统+mysql+调试部署+lw java毕业生设计东理咨询交流论坛计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...
- java毕业生设计学术会议论文稿件管理系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计学术会议论文稿件管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计学术会议论文稿件管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构 ...
- java毕业生设计新疆旅游专列订票系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计新疆旅游专列订票系统计算机源码+系统+mysql+调试部署+lw java毕业生设计新疆旅游专列订票系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S ...
- java毕业生设计学习类视频网计算机源码+系统+mysql+调试部署+lw
java毕业生设计学习类视频网计算机源码+系统+mysql+调试部署+lw java毕业生设计学习类视频网计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- java毕业生设计预防接种服务平台计算机源码+系统+mysql+调试部署+lw
java毕业生设计预防接种服务平台计算机源码+系统+mysql+调试部署+lw java毕业生设计预防接种服务平台计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...
最新文章
- 95行代码实现最大熵模型训练
- SQL - SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)[转]...
- C++中的虚函数与纯虚函数
- Java 调用树莓派硬件资源
- Matplot的常见问题
- Pseudoprime numbers POJ - 3641(快速幂+判素数)
- LeetCode 1933. 判断字符串是否可分解为值均等的子串
- 计算机硬件课题,课题:计算机硬件结构介绍
- 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”
- BZOJ 4269: 再见Xor [高斯消元 线性基]
- android曲线水波纹录音动画,Android-贝塞尔曲线实现水波纹动画
- 右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动
- java插件开发_编写一个IDEA插件之:自动生成Java代码
- 杨森翔的书法-10斗方:杜牧中秋月
- 清理C盘内存有用的办法
- 操作系统课程设计——文件系统
- 02326操作系统课后答案
- matlab图像粘连计数,Matlab图像处理在水稻谷粒计数中的应用
- 微信成语接龙小程序|微擎框架|带流量主|前端+后端完整源码
- java之Mybatis(实训笔记)