yolov5的flask部署python调用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sql Server内置函数实现MD5加密

实例 MD5加密“123456”: HashBytes(MD5,123456) 结果:0xE10ADC3949BA59ABBE56E057F20F883E (提示:看完最后,结果要进行转换。) 函数 函数描述返回值 HashBytes HashBytes (加密方式, 待加密的值)加密方…

(转)关于X64位系统IIS7下支持32位asp.net程序

最近在windows2008 x64位系统下的IIS7下部署asp.net程序。 vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的。可我的程序在引用了一个三方dll组件时引起了这样的错误: 错误“/test”应用程序中的服务器错误。 -------------------------------…

Ubuntu16.04 Caffe 编译安装步骤记录

历时一周终于在 ubuntu16.04 系统成功安装 caffe 并编译,网上有很多教程,但是某些步骤并没有讲解详尽,导致配置过程总是出现各种各样匪夷所思的问题,尤其对于新手而言更是欲哭无泪,在我饱受折磨后决定把安装步骤记录下…

oracle11g arm,想知道ARM11架构?这篇介绍告诉你

实际上,处理器采用的架构才是影响处理器性能的关键因素。手机中采用的ARM架构,从最早的ARM9到下一代的Cortex-A15,已经经历了多次的更新换代,每一次的升级都带来了性能的大幅提升,那么它们各自的性能到底怎么样呢?今天…

C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)

前言 C# 用IP地址(123.125.114.144)查询位置(北京市百度公司)的东西,非常好用也非常方便,可手动升级刷新IP库,一次编码永久收益,可支持winform、asp.net等程序。 本文使用的IP库为…

WCF简单教程(8) 安全 - Windows认证

第八篇:WCF安全WCF提供了非常丰富的加密机制与审核机制,以保证对外提供的服务安全可靠。本文是简单教程,所以只挑其中的一小部分来聊聊。先来看看最简单的Windows认证。所谓Windows认证,是指客户端访问时,要提供服务端…

常用Sql整理笔记

一、多行结果转换为一行,用逗号隔开。 mssql代码如下: 点击打开 -- 多行select tid from typeinfo where pid4-- 一行select STUFF((Select ,Convert(varchar(50),tid) FROM typeinfo where pid4 FOR XML PATH()),1,1,) as tid sqlite代码如下&#xff…

Ubuntu16.04 Caffe2 编译安装步骤记录

我的本机环境如下,任何的环境上的不一致可能会带来一些安装上的问题,所以这个教程只是一个简单的参考。 环境 操作系统: Ubuntu 16.04GPU型号: Tesla M40 24GBPython: 2.7 路径 /usr/bin/python即全局的python解释器 caffe2必备依赖的安装 sudo apt-g…

oracle中视图窗粉色的,Oracle 11g日常操作与维护手册

# /oracle/crs/bin/srvctl config nodeapps -a -n linux1RAC安装完以后,可以修改两个节点的VIP。前提是修改后的VIP必须没有被其他系统使用掉。正确的修改方法如下:步骤1:使用srvctl修改VIP进入/crs/bin目录下执行如下命令:# ./sr…

Go语言Web框架gwk介绍 (一)

今天看到Golang排名到前30名了,看来关注的人越来越多了,接下来几天详细介绍Golang一个web开发框架GWK。 现在博客园支持markdown格式发布文章么?后台的编辑器不太好用嘛。 GWK 简介 gwk(GO Web Server Kit)是GO语言的Web Server开发框架&…

3D手势姿态跟踪算法:手机端实时检测,多个手势同时捕捉

就在不久前,Google 人工智能实验室宣布,他们在「实时手部跟踪」方面取得了新的进展,并将这项新技术运用在了 MediaPipe 中,这也是 AI 计算机视觉任务的一大突破。这一技术不光可以在手机上实现实时捕捉性能,甚至可以同…

Windows服务的快速搭建与调试(C#图解)

目录 一、什么是Windows 服务? 二、创建Windows 服务与安装/卸载批处理。 三、调试Windows 服务。 正文 一、什么是Windows 服务? 答:Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自…

使用 JMeter 进行API接口压力测试

使用 JMeter 进行API接口压力测试 一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施…

ser,ver

friend_conservation_bgfriend_conversation_bg.png, [self.bgButtonsetBackgroundImage:[[UIImageimageNamed:"conversation_bg.png"] stretchableImageWithLeftCapWidth:10topCapHeight:30] forState:UIControlStateNormal]; xy方向 找 两根线 来 拉伸,…

linux 删除node进程,关于node.js:杀死Linux中的节点进程

尝试使用节点server.js运行节点服务器时,我收到侦听EADDRINUSE ::: 4002的错误。 我通过以下命令在端口4002上监听进程:sudo lsof -i:4002。 之后,我尝试使用kill -9终止进程。 问题是当我在终止进程后再次运行sudo lsof -i&#…

MS SQL查询库、表、列数据结构信息汇总

前言 一般情况我们下,我们是知道数据库的表、列信息的(因为数据库是我们手动设计),但特殊情况下,如果你只能拿到数据库连接信息,也就是知道的一个数据库名的情况下,你要怎么得到它下面的所有表…

linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php(1). ps aux:html其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存。linuxRSS列 表示, 程序占用了多少物理内存。ios虚拟内存能够不用…

C#常用代码汇总

1、字符串首字母转为大写。 System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("字符串"); 2、winform选取文件及文件夹。 // 选取文件OpenFileDialog openFileDialog new OpenFileDialog();openFileDialog.Filter "文本文件|*.*|C#文件…

如何搭建一个完整的Vue3.0 + ts 的项目

如何搭建一个完整的Vue3.0 ts 的项目 相信9月18日尤大大的关于Vue3.0的发表演讲大家一定有所关注,现在Vue3.0 也已经进入RC阶段(最终产品的候选版本,如果没有问题则可发布成为正式版本)。所以Vue3.0的学习是我们必然的趋势,今天&…

C#下2\10\16进制互转代码总汇

1、十进制转换其他:Convert.ToString(十进制数字, 2|8|16进制模式) //十进制转二进制Convert.ToString(69, 2);//十进制转八进制Convert.ToString(69, 8);//十进制转十六进制Convert.ToString(69, 16); 2、其他进制转换十进制:Convert.ToInt32(待转换数…