本文为 52CV 粉丝投稿,分享对已开源的 tensorflow-yolov3 版本进行许多细节上算法改进,步骤详细,非常适合新手入门。

      01      

项目简要说明

本项目主要对原 tensorflow-yolov3 版本做了许多细节上的改进, 增加了TensorFlow-Serving 工程化部署, 训练了多个数据集,包括 Visdrone2019, 安全帽等数据集, 安全帽上 mAP 在 98% 左右, 推理速度1080上608 的尺寸大概25fps。本项目配有完善的说明, 如想你也想入门 TensorFlow 服务端部署, 那么, 这个项目是你非常好的选择.

      02      

TensorFlow Serving 介绍及优势

PyTorch越来越受欢迎, 但是TensorFlow在工业界的应用依旧比较广泛,

而TensorFlow Serving作为一个用于机器学习模型Serving的高性能开源库,它可以将训练好的机器学习模型部署到线上,使用gRPC作为接口接受外部调用。TensorFlow Serving支持模型热更新与自动模型版本管理,具有非常灵活的特点。

系统非常适用于大规模运行能够基于真实情况的数据并会发生动态改变的多重模型。它给出了一个把模型应用到实际生产的解决方案。

能够简化并加速从模型到生产的过程。它能实现在服务器架构和 API 保持不变的情况下,安全地部署新模型并运行试验。除了原生集成 TensorFlow,还可以扩展服务其他类型的模型,使用(之前训练的)模型来实施推理——基于客户端呈现数据的预测。

显著性能优势:

  • Cpu推理速度优化(5倍于Django+模型)

  • 支持分布式tensorflow模型

  • 模型动态加载卸载(无需中断服务,就能实现模型的版本替换)

  • 多个模型同时提供服务

  • 多编程语言客户端(C++,JAVA,GO等)

  • GPU推理加速

  • 多版本便捷管理

  • 本项目还采用了GRPC部署, 速度更加快, 亲测速度比HTTP快35%左右

gRPC显著性能优势:

  • 二进制框架和压缩。HTTP/2协议在发送和接收方面都很紧凑和高效

  • 通过单个TCP连接复用多个HTTP/2调用。多路复用消除了线头阻塞

  • TensorFlow预测API被定义为Protobufs。因此,可以通过生成必要的tensorflow和tensorflow_serving protobuf python 存根(stubs)

  • 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法

  • 减少数据传输的时间,不用频繁

  • gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,理解下 HTTP/2 是必要的,这里先简单介绍一下 HTTP/2 相关的知识,然后在介绍下 gRPC 是如何基于 HTTP/2 构建的

      03      

本项目主要亮点

  1. 修改了网络结构,支持TensorFlow-1.x 版本saved model模型导出以便进行TensorFlow-Serving部署,自己训练的数据集也可以在线部署, 并给出了 docker+python_client测试脚本, 支持HTTP跟GRPC协议 ;

  2. 修改了ulits文件,优化了demo展示,可以支持中文展示,添加了支持显示成中文的字体;

  3. 详细的中文注释,代码更加易读,添加了数据敏感性处理, 一定程度避免index的错误;

  4. 修改了训练代码,支持其他数据集使用预训练模型了,模型体积减小二分之一(如果不用指数平滑,可以减小到200多M一个模型,减小三分之二),图片视频demo展    示,都支持保存到本地,十分容易操作;

  5. 借鉴视频检测的原理, 添加了批量图片测试脚本,速度特别快(跟处理视频每一帧一样的速度);

  6. 添加了易使用的Anchors生成脚本以及各步操作完整的操作流程;

  7. 添加了 Mobilenetv2 backbone, 支持训练,预测,评估以及部署模型,模型大小70多M  ;

  8. 增加 ONNX 导出 ;

  9. 增加 GRPC 远程过程调用 Serving 接口,加快预测速度 ;

  10. 增加训练好的安全帽检测模型,数据集跟模型都在release中可下载;

      04      

算法效果

模型精度方面:

由于采用多尺度训练, warm-up等策略, 在VOC2007+2012数据集上的MAP可达88.38%, 在安全帽数据集上可达98%。

速度方面:

视频预测中, 在 GTX1080 显卡上 FPS 约为 23, 尺度为 608, 416 尺度下更快。

服务器端速度, 结合 Flask 或者 Django 等框架, 处理一张用户请求的图片大概为100ms。

以上皆是基于 darknet 的 backbone, 换成 mobilenetv2 速度会更快。

  • 项目链接:https://github.com/Byronnar/tensorflow-serving-yolov3

注:如果觉得有帮助, 麻烦给一个 star 哦, 有什么问题都可以在 issue 里面提, 看到一般都会回复的!

备注:框架

TF&PyTorch学习交流群

深度学习框架、TensorFlow、PyTorch等技术,若已为CV君其他账号好友请直接私信。

在看,让更多人看到  

保姆级教程 | TensorFlow-YOLOv3 从本地训练到服务器部署全过程相关推荐

  1. 【20210402期AI简报】TensorFlow-YOLOv3 从本地训练到服务器部署全过程

    导读:本期为 AI 简报 20210402 期,将为您带来 8 条相关新闻,明日寒食节~ 记得有一期有小伙伴留言说需要手势识别相关,本期它来啦~ 本文一共 2200 字,通篇阅读结束需要 5~7 分钟 ...

  2. 保姆级教程:NobePay从注册到充值开卡全过程

    保姆级教程:NobePay从注册到充值开卡全过程 目录 保姆级教程:NobePay从注册到充值开卡全过程 前言 应用场景 过程 费用明细: 对比 总结 前言 前段时间写过一篇文章是推荐信用卡的< ...

  3. 【保姆级教程】基于WordPress在阿里云服务器上搭建个人博客网站

    写之前先回答几个问题: 1,网上类似的教程非常多,为什么写这篇教程? 答:博客网站我搭建过好几次,但是每次搭建都需要再去网上搜教程:然而网上的教程坑很多,甚至有些是错误的,不能完美解决自己的问题,有时 ...

  4. 阿里云服务器部署网站(保姆级教程) 阿里云搭建宝塔面板 云服务器ECS搭建网站

    阿里云服务器部署网站 这两天白嫖了一个免费的云服务器就想着自己建个网站,以前用过轻量级服务器,那个搭建起来比较容易,现在用的是云服务器ECS ,第一次接触,因为以前没做过,想在网上找找教程,结果教程五 ...

  5. 恒源云GPU租用保姆级教程,助力深度学习训练!

    文章来源 | 恒源云社区(专注人工智能/深度学习GPU免费加速平台,官方体验网址:https://gpushare.com) 恒源云史上最全的平台使用教程诞生了,用实力证明咱们能唱能跳产品好用,助力大 ...

  6. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  7. 目标检测算法——YOLOv7训练自己的数据集(保姆级教程)

    >>>深度学习Tricks,第一时间送达<<< 目录 YOLOv7训练自己的数据集(保姆级教程): 一.YOLOv7源代码下载 二.安装深度学习环境 三.准备自己的 ...

  8. FTP架设及本地分享局域保姆级教程

    文章目录 FTP架设及本地分享局域保姆级教程 前置准备:软件下载 一.FTP环境配置 1. 安装调试FileZilla_server 安装:运行FileZilla服务端安装程序,参照下图进行默认安装即 ...

  9. FastText词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】

    目录 一.前言 二.FastText词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 一.前言 本文是word2vec词向量篇的姊妹篇.fasttext是静态词向量构建方法的一种,本 ...

最新文章

  1. 影像组学视频学习笔记(18)-使用MRIcroGL软件格式转换、勾画ROI、Li‘s have a solution and plan.
  2. 加速企业数字化转型,首届Spring Summit技术峰会圆满落幕
  3. 字节输出流的续写和换行
  4. 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题
  5. 莫烦python博客_《莫烦Python》笔记 -- numpy部分
  6. c#求三角形面积周长公式_C#源代码—三角形面积、圆的面积
  7. Runnable Thread分析比较
  8. 两条信号之间加电容_电容是什么?怎么用?怎么买?
  9. AfxMessageBox详细使用说明
  10. 送给你,PBA商业分析指南(全书下载)
  11. java短信验证码功能发送的验证码如何校验_Java实现短信发送验证码功能
  12. 文件转换-----(类型,格式)
  13. 小红书html布局自适应,Flutter实现马蜂窝小红书自适应高度轮播图
  14. model 和WEB前台页面提交完美自动填充
  15. 2020.10.18--PS--长角动画、挡眼、闪光效果
  16. flutter中地图定位
  17. java.net.UnknownHostException: master (HBase报错)
  18. HTML标签播放MP4视频
  19. su域名是什么?su域名的历程是怎样的?
  20. 2人同步听歌软件_安卓、IOS双端支持的这款“羞羞”软件!单身慎入啊.....

热门文章

  1. 华为root工具_华为手机EMUI9 ROOT通用操作方法
  2. 设置 mock_Quasar 使用 Mock.js
  3. CString常用方法
  4. CentOs基础操作指令(vim、关机)
  5. 吉林省计算机科学与技术专业测评,我校计算机科学与技术、英语两个专业在吉林省专业综合评价中获得可喜成绩...
  6. java biginteger使用_在Java中使用BigInteger值
  7. java信号灯_java 信号灯 Semaphore
  8. linux部署前后端分离项目命令笔记
  9. java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象
  10. java数据库的量级_程序员学Python还是Java?分析了8张图后得出这个结论