工程实践_MIP项目设计

一、项目介绍

      MIP即医学图形处理项目,我们使用网上公开发布的 Deep Lesion 数据集,它包含各种病变,包括肺结节、肝病变、淋巴结扩大、肾病变、骨病变等。开发一个通用病灶识别系统,通过一个统一的框架查找到每种病灶的区域并根据病灶识别出所有类型的病变,并挖掘出各个病灶之间的联系;通过基于区域卷积神经网络(faster RCNN)的算法训练我们的数据集;通过误报率,准确率、召回率和损失函数来显示系统的性能好坏。

 

二、系统架构

     为了使该项目能更好的落地使用,对该项目的初步设想分为两部分。一是项目核心算法的设计,使用VGG-16网络等,更好的提取医学图片特征,供机器学习,提高医学图形分辨的准确度。二是为了方便使用者(医护人员等)的使用,利用网站开发技术进行界面展示,结果反馈等。

      本系统整体采用Django  Web 应用框架进行开发, Django 本身基于 MVC 模型。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 ,Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式。

 

 

  • 模型(M)- 编写程序应有的功能,负责业务对象与数据库的映射(ORM)。 

                                 在本项目中,在该层主要体现为

                                1.用VGG-16网络训练的算法,用于判断输入的医学图形

         2.用于存储,将用户输入的图片存入数据库,增加数据集的数量,以便提高模型准确率。

         3.查询数据库,用于查询用户的输入记录。

         4.删除数据,删除输入记录(修改标志位),系统本身保留图片,以便训练。

  • 视图(V)- 图形界面,负责与用户的交互(页面)。

                               该层主要是负责界面展示,提供给用户以操作的接口,和给与该用户以操作的反馈。

  • 控制器(C)- 负责转发请求,对请求进行处理 。

         该层主要负责接收视图层发来的操作请求,并调用模型层的方法,起到中间转接的作用。

      由于采用的是Django的框架来进行前后端的开发,所以,本系统采用的是B/S(Browser/Server)架构,即浏览器/服务器架构,是在C/S(Client/Service,客户机/服务器)模式的基础上发展起来的一种体系结构,在开发Web应用时有明显的技术优势。针对本系统而言,可以使得系统的扩展较为容易且不需要安装专门的软件,使用也较为方便。

 

三、系统架构描述

        软件架构模型是通过一组关键视图来描述的,同一个软件架构,由于选取的视角(Perspective)和抽象层次不同可以得到不同的视图,这样一组关键视图搭配起来可以完整地描述一个逻辑自洽的软件架构模型。一般来说,我们常用的几种视图有分解视图、依赖视图、执行视图、实现视图和工作任务分配视图。下面我们来进行具体的分析:

       1.分解视图

         分解视图,简单的说也就是将系统的功能进行分解,形成几个小的部分,然后这些小部分又包含各自所要处理的业务,我们所要做的就是对这些具体业务的设计和开发。本系统中,即分解为算法模型和网站设计这两个大模块,然后在各个模块内部细分为一些小的功能类,这样使得系统的结构较为清晰,同时也能看清楚各层次之间的联系,使得开发更加系统化。故可将系统按如下模块,进行分析:

 

 

 

 2.依赖视图

          依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。则,在本项目中的各个模块之间的依赖关系,如下图所示:

 

3.执行视图

        执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。执行实体可以最终分解到软件的基本元素和软件的基本结构,因而与软件代码具有比较直接的映射关系。在设计与实现过程中,我们一般将执行视图转换为伪代码之后,再进一步转换为实现代码。根据系统的各部分的功能实现,我们画出系统的整体流程图如下:

 

 

 4.工作分配视图

       工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在个项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。

 

四、用面向对象的方法进行系统分析

       用面向对象的思想对MIP项目进行分析,分析各个对象流程。对项目进行抽象,可以想到该项目中的类有:Image、doctor、Admin(开发人员)、Model(系统使用的模型)。根据各个对象所要完成的用例,可以分析他们应该具备的属性和方法。可得类图如下:

 

五、数据库设计

  根据类图,可以得知各个类所具有的属性和必要存储的信息。可以得出数据模型如下:

Image表

属性名称 字符类型 是否为空 默认 约束 含义
image_id int Not  null 自动增加 主键 图片编号
ill_type varchar Not  null     病变类型
loaction varchar Not null     图片来自身体哪个部位

Model表

 

属性名称 字符类型 是否为空 默认 约束 含义
model_id int Not  null 自动增加 主键 模型编号
model_name varchar Not  null     模型名称
model_para varchar Not null     存储模型参数
accuracy flaot Not null     模型准确度

 

 doctor表

 

属性名称 字符类型 是否为空 默认 约束 含义
doctor_id varchar Not  null   主键 医生证件号
input_image_id varchar Not  null   外键  处理图片的的id
result varchar Not null     模型返回结果

Admin表

 

属性名称 字符类型 是否为空 默认 约束 含义
admin_id varchar Not  null   主键 开发人员编号
model_id varchar Not  null   外键  对模型的调参记录
result varchar Not null     模型返回结果

六、运行开发环境和技术选型

  开发环境:Python3.6、Django2.0.1以及Tensorflow2.0

  编译器: JetBrains Pycharm

  技术选型:鉴于本项目做医学图像处理,因此在算法模型方面,采用VGG-16模型。该模型参加2014年的 ImageNet图像分类与定位挑战赛,取得了优异成绩:在分类任务上排名第二,在定位任务上排名第一。在特征提取方面,非常有效。在网站设计方面,Django 和python协同使用,在网站开发方面很方便。

 

七、系统概念原型的核心工作机制

        在本系统中,概念原型的核心工作机制是,首先基于Deeplesion数据库,做模型训练。当模型达到一定准确度之后,将该模型嵌入到网站后端中,作为核心功能模块。然后为了方便用户使用,设计网站,简化用户操作。让用户使用的同时,存储用户的输入数据,以便训练模型,提高模型的准确度,形成良性循环。

 

八、小结

       本文通过软件工程思想,对自己的工程实践做了一定原型设计。利用软工思想,可以使项目开发流程更加清晰,项目开发更加可控,保证了项目能够在“意料之中”发展成熟。对笔者来说,更加熟悉了该项目的设计细节,以及学习了软件工程的相关思想方法。文笔拙劣之出,欢迎批评指点。

 

posted @ 2020-12-29 13:51  天空下晓雨  阅读(392)  评论(0)    收藏  举报