yolov5 github:https://github.com/ultralytics/yolov5
跟踪:https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch
TensorRT:https://github.com/TrojanXu/yolov5-tensorrt
NCNN:https://github.com/WZTENG/YOLOv5_NCNN

detect:

from torchvision import transforms
import torch
from PIL import Image,ImageDraw
from models import yolo
from utils.general import non_max_suppression
from models.experimental import attempt_load# model = yolo.Model(r"D:\GoogleEarthProPortable\yolov5-master\models\yolov5s.yaml")
# model.load_state_dict(torch.load(r"D:\GoogleEarthProPortable\yolov5-master\weights\yolov5s.pt"))
model = attempt_load("weights/yolov5s.pt")  # load FP32 model
model.eval()img = Image.open("inference/images/bus.jpg")tf = transforms.Compose([transforms.Resize((512,640)),transforms.ToTensor()
])print(img.size) # w,h
scale_w = img.size[0] /640
scale_h = img.size[1] /512
im = img.resize((640,512))img_tensor = tf(img)pred = model(img_tensor[None])[0]
pred = non_max_suppression(pred,0.3,0.5)imgDraw = ImageDraw.Draw(img)
for box in pred[0]:b = box.cpu().detach().long().numpy()print(b)imgDraw.rectangle((b[0]*scale_w,b[1]*scale_h,b[2]*scale_w,b[3]*scale_h))# imgDraw.rectangle((b[0],b[1],b[2],b[3]))
img.show()

serving:

import io
import jsonfrom torchvision import models
import torchvision.transforms as transforms
from PIL import Image,ImageDrawfrom utils.general import non_max_suppression
from models.experimental import attempt_loadfrom flask import Flask, jsonify, request
app = Flask(__name__)model = attempt_load("weights/yolov5s.pt")  # load FP32 model
model.eval()names= ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee','skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard','tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch','potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear','hair drier', 'toothbrush']def transform_image(image_bytes):my_transforms = transforms.Compose([transforms.Resize((512,640)),transforms.ToTensor(),])image = Image.open(io.BytesIO(image_bytes))return my_transforms(image)def get_prediction(image_bytes):tensor = transform_image(image_bytes=image_bytes)outputs = model(tensor[None])[0]print(outputs)outputs = non_max_suppression(outputs,0.3,0.5)boxs = outputs[0]print(boxs[0])print(int(boxs[0][-1].item()))class_name = names[int(boxs[0][5].item())]print(boxs.shape)boxes = []for i in range(boxs.shape[0]):boxes.append([boxs[i][0].item(),boxs[i][1].item(),boxs[i][2].item(),boxs[i][3].item(),boxs[i][4].item(),boxs[i][5].item()])return boxes@app.route('/predict', methods=['POST'])
def predict():if request.method == 'POST':file = request.files['file']img_bytes = file.read()boxes = get_prediction(image_bytes=img_bytes)return ({'boxes': boxes})if __name__ == '__main__':app.run()

client:

import requests
import osfor i in os.listdir("inference/images"):image = open("inference/images/"+i,'rb')payload = {'file':image}r = requests.post(" http://localhost:5000/predict", files=payload).json()print(r)

git bash控制台:
启动flask服务器:FLASK_ENV=development FLASK_APP=app.py flask run
测试命令:curl -X POST -F file=@test_img/dog.jpg http://localhost:5000/predict

yolov5的flask部署python调用相关推荐

  1. python supervisor flask_Python Web 部署:Nginx Gunicorn Supervisor Flask部署笔记

    python web 部署 web开发中,各种语言争奇斗艳,web的部署方面,却没有太多的方式.简单而已,大概都是 nginx 做前端代理,中间 webservice 调用程序脚本.大概方式:ngin ...

  2. python supervisor flask_python web 部署:nginx + gunicorn + supervisor + flask 部署笔记

    分享一篇文章,原文来自:python web 部署. Python web 部署 web开发中,各种语言争奇斗艳,web的部署方面,却没有太多的方式.简单而已,大概都是 nginx 做前端代理,中间 ...

  3. python使用redis队列_Python的Flask框架应用调用Redis队列数据的方法

    任务异步化打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大小 ...

  4. Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程

    Docker selenium自动化 - 环境部署与 Python 自动化运行实战演示 第一章:docker selenium 环境部署 ① 下载 selenium 镜像 ② 容器 selenium ...

  5. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  6. python实时监控redis队列_Python的Flask框架应用调用Redis队列数据

    任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大 ...

  7. centOS6.5中部署java调用h2o中python包环境

    centOS6.5中部署java调用h2o中python包环境 升级centOS6.5中的python版本 6.5版本中自带了python2.6.6的环境,但对于使用h2o版本过低,建议升级至3.6或 ...

  8. 用MATLAB训练caffe,[转载]windows caffe部署训练+python调用全部流程

    原版caffe代码项目编译在windows下非常麻烦,还好微软集成了所有三方包之后放出了一个windows版本的,省了不少时间. 项目下载地址: https://github.com/Microsof ...

  9. 【源码】YOLOv5云端API部署

    简介 这是一个YOLOv5的云端部署代码,其存在的主要目的是为了解决将YOLOv5训练出来的权重或者官方权重简单快速的部署上云服务或者Docker中,并且可以通过POST请求在任意代码中调用(如Jav ...

最新文章

  1. oracle12c spa,Oracle12c功能加强 新特性之管理功能的加强
  2. 什么是Java实例初始化块
  3. 关于Qomo于ajax的异同~
  4. python语法实例_python基本语法练习实例
  5. Python学习—基础数据结构之列表
  6. jQuery---过滤选择器
  7. LSTM训练过程与参数解读
  8. 搜狗输入法回应误推地震信息;近亿人在钉钉上报健康情况;Rust 1.41.0发布 | 极客头条...
  9. python 设计模式之装饰器模式 Decorator Pattern
  10. JEPLUS表格高级展示——JEPLUS软件快速开发平台
  11. paip.c++ 常用类库attilax总结
  12. sfm支持Linux和Windows吗,VisualSFM的使用方法
  13. ubuntu格式化硬盘
  14. 计算机主机名称在哪里,Mac修改主机名和计算机名
  15. Java使用BufferedImage裁剪图片
  16. php网站做分享到朋友圈,PHP实现微信分享朋友圈
  17. ele.getBoundingClientRect()使用
  18. 12.unity编程基础
  19. EXCEL日月年转换成年月日
  20. 分享系列--面试JAVA架构师--链家网

热门文章

  1. http缓存机制之304状态码
  2. html---textarea初始化时就有个table空格以及tab键操作无效
  3. 仿新浪微博滚动,无文字渐显功能
  4. Using JSON for data transfer
  5. C#实现Singleton (转载)
  6. c语言中 d 1是啥意思,空开D/C是什么意思?终于有人把它说清楚了!
  7. mysql数据库容量和性能_新品速递丨容量盘性能提升超 300%,数据库支持 MySQL 8.0...
  8. Visio图形自动编号
  9. 方便微信公众号等手机网页调试插件eruda和vConsole
  10. mysql 索引_MySQL之索引