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