部署准备1(代码片段)

小宁宁呀 小宁宁呀     2022-12-11     742

关键词:

目录

VisualDL可视化功能的使用

 VisualDL可视化结果

 预处理和后处理对齐

部署流程概括

准备环境。安装好CMake、OpenCV等工具

准备PaddleLite推理库

准备模型

构建并运行程序

总结

引用柠檬分类范例


 

两点:

  • 模型的输入与输出
  • 模型的预处理与后处理
     

如果你想了解一个陌生模型的输入与输出该怎么做呢?可以使用VisualDL的模型可视化功能观察模型的输入与输出。

如果你想了解一个陌生模型的预处理,后处理。该怎么做呢?以PaddleHub上的预训练模型为例。我们可以去阅读这个模型在Paddlehub上的源代码来了解它的预处理,后处理。

如果你无法得知模型的输入与输出、预处理与后处理,那么你是无法进行模型部署的。
 

部署时预处理与后处理与训练时对齐,这是部署时的难点。而不是部署框架使用的本身。


部署的原则,即与训练对齐。

为了进行部署,我们首先需要了解模型的输入与输出,及他的预处理和后处理。这些仍可以通过PaddlePaddle进行。

VisualDL可视化功能的使用

在代码中插入visualDL日志官方代码:

from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 初始化一个记录器
    with LogWriter(logdir="./log/scalar_test/train") as writer:
        for step in range(1000):
            # 向记录器添加一个tag为`acc`的数据
            writer.add_scalar(tag="acc", step=step, value=value[step])
            # 向记录器添加一个tag为`loss`的数据
            writer.add_scalar(tag="loss", step=step, value=1/(value[step] + 1))

 点击可视化板块,选择存储日志目录,选择模型文件,即可得到visualDL结果。

 VisualDL可视化结果

根据结果可以看到模型的训练和测试结果的准确率上升,超过0.9,且loss下降至0.1以下,可以判定模型是合适的。

使用visualDL的网络结构功能,可以看到模型的输入和输出。

 

 预处理和后处理对齐

对于图像的预处理部分,还有许多不解,比如数据库的图片大小设置错了,尝试在代码上进行改动后,总是会有各种原因的报错,而且项目里似乎并没有后处理的部分,明天专门解决这部分的问题。

部署流程概括

准备环境。安装好CMake、OpenCV等工具

  • C++准备环境:

主要安装OpenCV3.2.0(推荐3.2)与CMake3.10

sudo apt-get update
sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
tar -zxvf cmake-3.10.3.tar.gz
cd cmake-3.10.3
./configure
make
sudo make install
  • Python环境准备:

主要是安装,numpy(1.13.3),Pillow(8.1.0),matplotlib(2.1.1),OpenCV(3.2.0)(推荐3.2)

以上工具版本号仅供参考,非必须对齐。

优先推荐通过pip3 install xxx安装numpy,Pillow,matplotlib,OpenCV。

pip install numpy==1.13.3 pillow==8.1.0 matplotlib==2.1.1 opencv=3.2.0

安装matplotlib,OpenCV可能遇到报错,无需慌张,可apt install python3-dev后再次使用pip安装。若依旧不成功可使用apt install python3-matplotlib , apt install python3-opencv安装。

配置好环境后稍后克隆一份部署Lemon源码,进入cd ./lemon/wheels文件夹后pip3 install paddlelite-2.8rc0-cp36-cp36m-linux_aarch64.whl(根据自己的Python版本选择,提供了Python2.7,3.5,3.6,3.7的包)

 

部署代码示例,这是接下来工作需要重点理解的地方。

git clone https://github.com/hang245141253/lemon.git 

准备PaddleLite推理库

树莓派3blinux64位使用如下推理库,extra.tar含有模型的flatten算子。

下载网址https://github.com/PaddlePaddle/Paddle-Lite/releases/

 

uname -a 命令可知系统位数。

准备模型

  • 使用opt工具将Paddle模型转化成Paddle Lite nb模型 这里已经将opt工具作为数据集形式上传到了Notebook中,只需执行如下代码即可完成模型转化。

 

!pip install paddlelite==2.9 
!paddle_lite_opt --model_file=output.pdmodel --param_file=output.pdiparams --optimize_out==face

 一开始会报错

Check failed: (idx < BlocksSize()): 0!<0 idx >= blocks.size() Aborted (core dumped) 

后来发现model保存的是用于预测的而没有save用来部署的模型。

model.save('infer/zodiac')#模型用来预测
model_2.save('infer/zodiac', training=False)#模型用来部署

重新保存一份模型,得到需要的Paddle Lite nb 模型。

 

 

构建并运行程序

这一步因为C++会直接在寄存器上进行操作,比python封装好的各种函数运行速度更快,我们选择C++进行部署。接下来需要学习C++的基本知识。

总结

虽然模型达到了较好的准确率,但是经过这几天的学习,我们发现整个学习的重点,即数据的预处理和后处理,仍然没有研究明白,这会在部署的时候给我们带来阻碍。

接下来首先要在模型的预处理上作出改变,确定后处理与其对齐。

另外则需要进行C++的学习,为部署做准备。

引用柠檬分类范例

https://aistudio.baidu.com/aistudio/projectdetail/1592283 

azurestackdevelopmentkit部署环境准备(代码片段)

AzureStackDevelopmentKit用于单节点部署的POC环境。由于硬件环境不支持,只能通过Hyper-V嵌套的方式进行AzureStack部署。在物理机中部署WindowsServer2016,添加Hyper-V功能。更改Hyper-V的资源设置注:内存推荐至少是128GB;18个逻辑CPU;5个虚... 查看详情

nginx实战:部署react前端项目(代码片段)

Nginx实战:部署React前端项目文章目录Nginx实战:部署React前端项目正文1.准备React项目&完成打包2.准备Docker镜像&配置文件3.启动/停止服务其他资源参考连接完整代码示例正文1.准备React项目&完成打包先准备一个React项目,... 查看详情

k8s—admin部署dashboard部署harbor仓库搭建(代码片段)

步骤一、集群部署1.1准备工作1.2全节点安装服务1.3各节点设置1.4测试二、dashboard部署全节点设置三、harbor私有仓库部署3.1准备工作3.2服务设置一、集群部署1.1准备工作master:192.168.253.11(2c4g)服务:docker、kubeadm、... 查看详情

k8s—admin部署dashboard部署harbor仓库搭建(代码片段)

步骤一、集群部署1.1准备工作1.2全节点安装服务1.3各节点设置1.4测试二、dashboard部署全节点设置三、harbor私有仓库部署3.1准备工作3.2服务设置一、集群部署1.1准备工作master:192.168.253.11(2c4g)服务:docker、kubeadm、... 查看详情

zookeeper集群部署(代码片段)

Zookeeper集群部署前言一、Zookeeper概述1、Zookeeper定义2、Zookeeper工作机制3、Zookeeper特点4、Zookeeper数据结构5、Zookeeper应用场景6、Zookeeper选举机制第一次启动选举机制非第一次启动选举机制二、部署Zookeeper集群准备3台服务器做Zookeepe... 查看详情

kubernetes高可用集群二进制部署(代码片段)

Kubernetes高可用集群二进制部署Kubernetes高可用集群二进制部署一、集群环境准备1.1主机规划1.2软件版本1.3网络分配二、集群部署2.1主机准备2.1.1主机名设置2.1.2主机与IP地址解析2.1.3主机安全设置2.1.3.1关闭防火墙2.1.3.2关闭selinux2.1.4... 查看详情

kvm及虚拟机部署(代码片段)

...作准备一台linux操作系统准备qcow2格式操作系统镜像准备部署虚拟机脚本2、KVM安装工作软件包安装yuminstallqemu-kvmqemu-kvm-toolsvirt-managerlibvirtvirt-installvim-y检查KVM内核加载状态lsmod|grepkvmkvm_intel1480810kvm4611261kvm_intel启动KVM相关服务systemc 查看详情

虚拟机console基础环境部署——工作目录准备(代码片段)

1.概述2.相关约定2.1删除旧文件2.2创建全局共享文件目录2.3创建全局软件安装目录2.4创建数据放置目录3.总结1.概述上述博客中,已经为console最小化安装了操作系统。接下来,就要通过console来做一些初始的工作目录。这些目录主... 查看详情

堡垒机安装部署!(代码片段)

...)、1台Win10操作系统【站点】 【网卡/IP】 部署方式管理工作站 NAT网卡:192.168.118.88 真机自带(不需要)堡 查看详情

堡垒机安装部署!(代码片段)

...)、1台Win10操作系统【站点】 【网卡/IP】 部署方式管理工作站 NAT网卡:192.168.118.88 真机自带(不需要)堡 查看详情

lyncserver2013标准版部署ad准备(代码片段)

AD服务器部署完成后,将需要安装LyncServer2013系统的1台前端服务器加入到域中;初始化服务器:服务器名称、IP地址、防火墙、Windows补丁。检查服务器初始化的配置:服务器名称服务器IP地址LyncServer2013标准版部署:打开WindowsPower... 查看详情

rabbitmq单机和集群部署(代码片段)

rabbitmq单机和集群部署一、单机部署1、准备工作2、部署安装2.1安装依赖环境2.2安装erlang环境2.3安装rabbitmq2.4创建RabbitMQ配置文件并修改2.5优化相关参数2.6添加RabbitMQ用户(新建用户三个mq都需要)二、集群部署1、准备工作2... 查看详情

pythonflask项目部署上线之gunicorn和nginx的准备(代码片段)

pythonflask项目部署上线之Gunicorn和Nginx的准备1.Gunicorn进入虚拟环境之后pipenvinstallgunicorn运行:gunicorn--workers=4wsgi:app需要创建一个wsgi.py指定主机:gunicorn--workers=4--bind=0.0.0.0:8000wsgi:app或者guni 查看详情

1.环境准备—openstackqueens三节点部署(代码片段)

本次部署的三个节点,一个控制节点,一个计算节点,一个网络节点,都是Ubuntu16.04的虚拟机。控制节点(controller):10.0.0.7计算节点(compute):10.0.0.5网络节点(network):10.0.0.25hosts配置(所有节点)在/etc/hosts文件中追加以下... 查看详情

linux自动部署--docket部署springweb和springboot项目(代码片段)

docket部署springweb和springboot项目文章目录docket部署springweb和springboot项目1.docket安装及部署2.docket部署springweb2.1.准备Dockerfile2.2.构建镜像2.3.运行容器3.docket部署springboot项目3.1.准备Dockerfile,Tomct、JDK的安装包以及java项目的War包 查看详情

kafka-集群部署(代码片段)

第2章Kafka集群部署 2.1环境准备2.1.1集群规划hadoop102hadoop103hadoop104zkzkzkkafkakafkakafka2.1.2jar包下载http://kafka.apache.org/downloads.html 2.2Kafka集群部署  1)解压安装包[[email protected]software]$tar-zxvfk 查看详情

ubuntu环境下用docker从0到1部署elasticsearch7集群(代码片段)

目录一、镜像准备二、配置准备1.ubuntu安装ssh2.开放22号端口3.配置密码可访问 4.登录到ubuntu服务器  三、搭建集群准备1.FileZilla工具网盘下载2.启动单节点3.修改并挂载配置4.搭建集群1)启动3个节点2)查看Ip3)准备配置文件4)验证集... 查看详情

clickhouse集群部署全网最佳实践(代码片段)

...准备工作:1.机器准备:我们准备了6台机器用来部署clickhouse,准备搭建一个3分片2副本集群,当然也可根据你自己实际情况选择机器数量。2.在每台机器上安装clickhouse:依次执行以下命令(来源于官网文档... 查看详情