部署官方tensorflow版本EfficientDet

2023-10-30 16:10

本文主要是介绍部署官方tensorflow版本EfficientDet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker部署官方tensorflow版本EfficientDet

在这里插入图片描述
官方版本EfficientDet依赖环境为tensorflow2.1.0,python版本为3;而tensorflow2.1.0gpu版本又依赖于cuda10.1,为了不对本机环境产生影响,所以采用docker部署

一、官方镜像下载

在tensorflow官方镜像地址copy下载命令,复制到host机器的终端运行
在这里插入图片描述
如果pull过程很慢,那就更换国内docker镜像源

vim /etc/docker/daemon.json

编辑daemon.json文件

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

下载完成之后,查看镜像

docker image ls

二、容器创建

NVIDIA Docker 支持

在docker里面运行需要cuda的支持,所以先安装nvidia的docker镜像

# Add the package repositories
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

检查是否安装成功

#### Test nvidia-smi with the latest official CUDA image
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi# Start a GPU enabled container on two GPUs
docker run --gpus 2 nvidia/cuda:10.0-base nvidia-smi# Starting a GPU enabled container on specific GPUs
docker run --gpus '"device=1,2"' nvidia/cuda:10.0-base nvidia-smi
docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:10.0-base nvidia-smi# Specifying a capability (graphics, compute, ...) for my container
# Note this is rarely if ever used this way
docker run --gpus all,capabilities=utility nvidia/cuda:10.0-base nvidia-smi
运行容器

下面两种方式都可以,指定runtime是docker2的写法

docker run -itd --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all --restart=always --shm-size 1G -p 5522:22 -v /opt:/opt -v /home:/home -v /mnt:/mnt --name lcg_tf2.0.1 tensorflow/tensorflow:2.1.0-gpu-py3 /bin/bash
docker run -itd --gpus all --restart=always --shm-size 1G -p 5522:22 -v /opt:/opt -v /home:/home -v /mnt:/mnt --name lcg_tf2.0.1 tensorflow/tensorflow:2.1.0-gpu-py3 /bin/bash

5522是端口号,将docker的22端口映射到host的5522端口上

创建容器内服务

1、创建容器内部用户

进入容器

docker attach <容器ID>

进入容器之后,默认的是root用户

#创建用户组lcg 制定组ID 1001
groupadd -g 1001 lcg
#添加一个用户到lcg组并指定id为1001
useradd lcg -g lcg -u 1001 -m -s /bin/bash
#修改用户密码
sudo passwd lcg
#安装常用的软件
apt-get update
apt-get install language-pack-zh-hans uuid-dev libtiff5-dev -y
apt-get install net-tools vim 

给lcg用户赋予root权限

apt-get install sudo
#编辑/etc/sudoers文件
vim /etc/sudoers

如下图
在这里插入图片描述

2、创建SSH服务

apt-get update
apt-get install -y openssh-server
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
$ echo "export VISIBLE=now" >> /etc/profile

然后建立一个配置文件夹并进行必要的配置:

mkdir /var/run/sshd
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

重启SSH激活配置

service ssh restart

测试是否生效

#在host机上测试docker的端口转发
docker port <container_name> 22
#如果配置生效了,会出现0.0.0.0:5522

使用ssh链接docker

ssh lcg@192.168.xx.xx -p 5022

在这里插入图片描述

Docker常用操作

#列举出正在运行的容器
dokcer ps
#列举出所有容器
docker ps -a
#获取容器信息
docker container ls -a
#如果要删除的容器还在运行状态,那么先停止容器
docker container stop <container ID>
#找到要删除的容器的ID,进行删除
docker container rm <container ID>
#删除镜像
docker image rm <image ID>

三、测试tensorflow环境

首先进入python环境

python

在python环境下

import tensorflow as tf
tf.test.gpu_device_name()

测试环境成功,则可以进入训练代码调试了

四、准备数据

将自己标注数据整理为voc格式,EfficientDet中datasets下面有有create_pascal_tfrecord.py脚本,可以将pascal格式数据转换为tfrecord数据

voc2007格式为
在这里插入图片描述

在create_pascal_tfrecord.py脚本中转换数据的时候,会在xml文件中读取folder,filename等字段
在这里插入图片描述

但是有个问题就是,标注图片信息的时候,往往是很多人用labeImg一起标注,然后最后汇总的,所以导致folder和path跟真实存储路径是不一样的,所以在脚本中需要进行一点修改。

PYTHONPATH=".:$PYTHONPATH"
python dataset/create_pascal_tfrecord.py      --data_dir=VOCdevkit --year=VOC2012  --output_path=mytfrecord/pascal  --set=trainval

运行完成之后,会在output_path路径下生成100个tfrecord文件

五、训练

直接在EfficientDet目录下,运行mian.py文件即可,然后需要配置一些参数

python main.py \
--mode=train_and_eval \
--training_file_pattern=output_tfrecord/*.tfrecord \
--validation_file_pattern=output_tfrecord/*.tfrecord \
--val_json_file=output_tfrecord/json_output_tfrecord.json \
--model_name=efficientdet-d1 \
--model_dir=tmp/efficientdet-d1-scratch \
--ckpt=efficientdet-d1 \
--train_batch_size=4 \
--eval_batch_size=1 \
--eval_samples=512 \
--hparams="num_classes=5,moving_average_decay=0" \
--use_tpu=False

然后就开始训练

目前EfficientDet的官方版本的代码一直在更新,截止到目前(2020年5月19日),最近的一次push是20小时之前,所以每一次的命令执行显示都会有所不一样。

一个月前,代码里面的很多东西还是使用tensorflow1的API写的,但是到现在很多tf1的写法都逐渐被改成了tf2的写法。
在这里插入图片描述
在这里插入图片描述

训练的效果还算不错,但是继续训练会需要一点trick

六、测试

1、导出模型

将ckpt文件导出为pb文件,顺便还可以生成tflite

python model_inspect.py \
--runmode=saved_model \
--model_name=efficientdet-d1 \
--ckpt_path=efficientdet-d1 
--saved_model_dir=savedmodeldir \
--tflite_path=efficientdet-d1.tflite

命令运行完成之后,在savedmodeldir目录下将会得到pb文件和tflite文件

2、时间测试

完成pb模型的导出之后,可以测试一下模型的latency,这里网络推理时间测试是指的是从第一个卷积到最后一个prediction output的计算时间,不包括前处理和后处理,例如图像归一化,NMS等都不包括

python model_inspect.py \
--runmode=bm \
--model_name=efficientdet-d1 \

如果需要end2end的测试时间,可以运行一下命令

python model_inspect.py \
--runmode=saved_model_benchmark \
--saved_model_dir=/path/ientdet-d1frozen.pb \
--model_name=efficientdet-d1 \
-input_image=testdata/img1.jpg  \
--output_image_dir=/tmp/  

下面是在V100上测试的结果
在这里插入图片描述

3、测试自己的图片
python model_inspect.py --runmode=saved_model_infer \--model_name=efficientdet-d0  \--hparams="image_size=1920x1280"  \--saved_model_dir=/tmp/saved_model/efficientdet-d0_frozen.pb  \--input_image=img.png --output_image_dir=/tmp/

在这里插入图片描述

这篇关于部署官方tensorflow版本EfficientDet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309087

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台运行的意思;&才是后台运行在缺省情况下该作业的所有输出都被重定向到一个名为nohup.o

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能