项目背景
近期需要开发一个对巨量的图片数据进行车辆品牌信息标注的工具,为了提高标注效率,准备先通过现有车辆品牌识别的算法模型进行下预标注,标注人员在此基础上进行审核和修改即可。另外,需要统计出各个品牌数据的数量等信息。
软件架构确定
用户是分散的,待标注数据量大而且通常存在用户PC机的磁盘上,软件做成一款即开即用的桌面应用是非常合适的。但考虑到要用算法进行预标注,算法模型运行要用到性能较好的GPU资源,为每个用户提供具有这样硬件资源的是不切合实际的,所以可以采用部署后端服务的方法。是采用C/S架构呢,还是B/S架构呢?针对实际应用场景,需要进行大量的数据交互,而且用户数也不算多,对实用性、稳定性的要求较高,因此决定采用C/S架构。
后端服务采用Flasky框架,主要对算法模型进行封装,数据库增删改查接口以及算法运行几个Restfull风格的API实现;数据库采用mysql,建立车辆品牌表;前端GUI采用PqQt5,通过http协议和后端进行通信。
设计方案
- 进一步确认沟通、细化需求。时间允许的话,最好进行评审,形成需求文档。
- 业务流程梳理。
- 数据库表单制定,示例如下图:
- 接口设计,形成文档,示例如下图:
• 方法 :POST
• URI: /vehicle_label/algorithem/get_result
• 数据格式:json
• 请求参数:
参数名 必选 类型 描述
image 是 base64• 应答参数:
参数名 必选 类型 描述
errorCode 是 int
desc 是 string
result 否 Dic• 请求示例:
{
“image_data”: ***
}• 应答示例:
{
“errorCode”: 0,
“desc”: “成功”,
“result”: {
“brand_a”: “a027_Jeep”,
“brand_b”: “a027b01_Jeep(进口)”,
“brand_c”: “a027b01c07_牧马人”,
“brand_d”: “a027b01c07d13_2010款”
}
}
- 前端
时间允许的话,最后画出界面的设计示意图,作为前端界面开发的依据。