项目背景

近期需要开发一个对巨量的图片数据进行车辆品牌信息标注的工具,为了提高标注效率,准备先通过现有车辆品牌识别的算法模型进行下预标注,标注人员在此基础上进行审核和修改即可。另外,需要统计出各个品牌数据的数量等信息。

软件架构确定

用户是分散的,待标注数据量大而且通常存在用户PC机的磁盘上,软件做成一款即开即用的桌面应用是非常合适的。但考虑到要用算法进行预标注,算法模型运行要用到性能较好的GPU资源,为每个用户提供具有这样硬件资源的是不切合实际的,所以可以采用部署后端服务的方法。是采用C/S架构呢,还是B/S架构呢?针对实际应用场景,需要进行大量的数据交互,而且用户数也不算多,对实用性、稳定性的要求较高,因此决定采用C/S架构。
后端服务采用Flasky框架,主要对算法模型进行封装,数据库增删改查接口以及算法运行几个Restfull风格的API实现;数据库采用mysql,建立车辆品牌表;前端GUI采用PqQt5,通过http协议和后端进行通信。

设计方案

  1. 进一步确认沟通、细化需求。时间允许的话,最好进行评审,形成需求文档。
  2. 业务流程梳理。
  3. 数据库表单制定,示例如下图:
  4. 接口设计,形成文档,示例如下图:
• 方法 :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款”
 }
 }
  1. 前端
    时间允许的话,最后画出界面的设计示意图,作为前端界面开发的依据。