如图,PaddleX RESTful主要由数据集(dataset),项目(project),任务(task),模型(model)组成。上述模块数据保存在指定的工作空间(workspace)内,相应的结构化信息通过protobuf保存,workspace的protobuf消息定义。
说明:后续RESTful API通过[HTTP request method] url来表示
对于通过RESTtful接口来进行二次开发,主要的流程如下:
通过如下命令启动PaddleX的RESTful服务,同时会初始化工作空间,初始化工作空间主要做载入工作空间内已有的数据集、项目等模块的信息。初始化工作空间后就可以正常调用其他的RESTful API,所有新建的数据集、项目等数据都会保存在此工作空间目录下面
paddlex_restful --start_restful --port [端口号] --workspace_dir [工作空间目录]
可以通过调用"[post] /dataset"接口创建数据集、创建数据集后会在工作空间内创建相应的文件夹,按照workspace protobuf定义的变量保存数据集信息。创建数据集后可以通过"[put] \dataset"接口导入数据集,目前仅支持从路径导入并且数据集需储存在后端服务器。目前支持图像分类、目标检测、语义分割与实例分割四种数据集,具体格式如下
如图所示
如图所示
如图所示
如图所示
可以通过调用"[post] /project"接口创建项目,目前支持的项目类型有分类(classification)、检测(detection)、语义分割(segmentation)、实例分割(instance_segmentation)。对于新建的项目首先需要绑定项目类型对应的数据集,通过"[post] \workspace"可以实现;然后便可以在项目下创建任务,进行一系列任务相关的操作。
在创建项目后,首先需要通过"[get] /project/task/params"获得默认的训练参数,可以通过调用"[post] /project/task"接口在项目中创建任务,创建好任务后可以通过API实现以下功能:
目前PaddleX RESTful API支持将训练评估后的模型保存为预训练模型、导出inference模型、导出Padlle-Lite模型、同时能支持模型的量化,可以通过调用"[post] /model接口来完成这些功能