一、项目背景:
结直肠癌是常见恶性肿瘤之一,根据国际癌症研究署数据显示,2020年,全球结直肠癌新发病例数为188万,约占恶性肿瘤发病例数的9.7%。而息肉具有增加癌症发病率的风险,超九成的结直肠癌是由结肠息肉演变而来,但在实际应用中,由于息肉较小、较隐蔽,以及内镜设备有限,息肉出检率仅仅只有70%,而有三成的息肉被遗漏。因此我们打算开发一款可以辅助检测肠息肉的软件,旨在提高我们的肠息肉检测率。
并且我们预期利用相应ai模型根据我们检测后的医疗图像自动生成我们的结构化检测报告,这一步可以省去医生繁琐的文书工作,同时可以根据图像所见,自动生成一些诊断意见,因此构建一个能够辅助检测息肉,并根据相应医学图像转换成文本报告的软件是相对具有应用价值的。
二、技术创新:
本项目基于上述的背景,希望能够通过多模态模型,完成一个集成度高的,具备强大的应用价值的软件。软件通过医生提供的肠道探测视频或图像,利用微调过的ai模型进行辅助检测,并检测后的医学图像生成结构化电子病历发送给病人。
因此我们的技术创新点有以下几点:
1. 微调SAM模型:
SAM模型即Segment Anything Model,是计算机视觉领域的一款功能强大的ai模型,SAM模型虽然号称可以分割一切,但是在特定领域的应用精度仍然具备提升空间,我们在开发软件前已经进行过测试,SAM模型在医疗领域的精度需要进一步提升,因此我们的第一个技术创新就是通过投喂数据集,对我们的SAM模型进行微调,提高它在医疗领域方面的精度。
- 智能交互及肠息肉检测
通过医生提供的肠道检测的图像或视频,我们可以智能交互通过语音或文本进行prompt,提示我们的模型要进行息肉的分割处理,通过我们的软件提高肠息肉的检测率,并使用相关模型及算法,对我们分割后的图像进行关键词提取应用于后面生成我们的结构化检测报告。
- 结构化检测报告
我们通过我们提取的关键词交给大模型处理,生成相应的结构化检测报告。
三、技术路线:
为了实现上述工作内容,我们需要掌握相关技术来保证工作可以如期进行及顺利完成,接下来我们来分析一下技术路线。
- 模型选取:
在模型选取上,我们拟定通过SAM来进行图像的切割,辅助我们的医疗诊断,SAM号称CV领域的Chatgpt,由此可见SAM的功能之强大;在语音识别上,我们拟定使用Paraformer进行语音识别与转换。在选定好模型后,我们会基于Pytorch等框架对模型进行针对性地参数微调,及数据集训练,最终成为我们最后使用的模型。
- 模型优化:
我们通过模型量化、模型剪枝、模型蒸馏等压缩方法对模型进行优化,做到不影响精度的情况下提高模型的推理速度。
- 软件开发:
我们考虑使用 Web、移动开发等技术实现在网页或 APP 上部署,并搭建清晰易操作的可视化前端界面,方便用户理解及操作。
针对 Web 端网页,我们使用 B/S 架构,在前端使用 Vue 框架搭建可视化页面,同时使用 Vuetify 组件进行页面美化,使用 SweetAlert2 进行消息框的美化,使用Echarts 进行数据的展示。在后端使用 SpringBoot 框架进行模型的调用及前端的通信,使用 MyBatisPlus 进行数据库的管理,使用 Redis 进行数据的缓存。
四、实施方案:
我们的实施方案分成以下几个部分:
1.模型选择:
现在市面上的大模型非常多样化,我们得从模型的性能,以及它的算力消耗等综合考虑选取我们的模型,因为我们要分析医疗图像进行辅助诊断所以基于图像分割的能力,拟定选取SAM。为了进行语音-文本的转换,我们也要选取相应的语音识别模型来完善我们的功能。
2.模型优化:
为了使模型具有更高的效率和准确性,在选取模型完成后需要对所选模型进行系统性的优化,主要包括速度优化和精度优化。首先,需要对模型的速度进行优化,达到满足用户实时使用的标准。考虑通过剪枝、蒸馏、量化等模型压缩方法进行模型参数量的压缩,加快模型推理速度。随后,分析压缩后模型的精度,并且在精度优化方面,通过改善模型结构等方法提高模型精确度。最终,经过多次速度优化和精度优化,使模型推理速度和结果精确度达到平衡,以满足软件的使用需求,确保软件运行的速度。
3.软件开发:
软件的开发分为前端和后端两个方面,两者可以同时进行。首先应该进
行会议确定前后端接口的标准,如数据结构、数据格式、通讯协议等,随后开始进
行前后端的开发。对于后端开发,首先应选择方法调用目标模型,并考虑使用 redis
等工具对模型结果进行缓存,提高软件的运行效率;同时,在使用 SpringBoot 框架时应注意软件的耦合性和内聚性,做到低耦合高内聚。对于前端开发,应该首先设计用户界面,并进行用户问卷调查,讨论选择出最符合直觉、最易理解的和操作的用户界面。随后使用 Vue 框架和 Vuetify、Echarts 插件设计美观、易懂且易操作的前端页面。最后进行前后端的数据通讯,确保软件运行的可靠性。
4.文档撰写:
编写软件开发文档及使用文档,便于用户使用。对于软件开发文档,在
文档中应该清晰地描述每一个需求和功能,包括其目的、输入和输出、限制和前提
条件等。应该尽可能详细地描述每一个功能,以便开发人员和测试人员能够准确理
解和实现。对于软件使用文档,在文档中应该提供详细的使用说明,包括软件的基
本操作、高级功能、常见问题解答等。应该尽可能地详细描述每一个操作步骤,并
且应该使用简单易懂的语言,避免使用过于专业化或难以理解的词汇。