当前位置:网站首页>医疗影像领域AI软件开发流程
医疗影像领域AI软件开发流程
2022-07-31 02:01:00 【IT极客帮】
公司一般可以分为两类,业务驱动型和技术驱动型,业务型驱动公司的客户群体是普通大众,例如,饿了么,技术存在的目的是为了更好的支持业务发展,而像数据库软件公司则是技术驱动型,有的公司则是介于两者之间,例如阿里巴巴,当业务发展到一定的程度,所积累的技术相当雄厚,则可以通过技术变现去扩大公司规模。
当AI大潮来袭,很多行业都想跻身于其中时,AI软件公司是业务驱动还是技术驱动?AI软件虽然服务于医院机构,但其最终是服务于普通大众,另外随着AI框架的涌现,AI门槛并不是那么高,所以我更倾向其属于业务驱动。
提出需求:
既然是业务驱动我们就应该明白用户需要什么,可以参考我的前一篇文章【AI在影像设备全流程工作周期应用】,本篇文章主要针对当需求确定,如何进行下一步开发。
马斯克说过,相比于解决已知问题的能力,提出问题更为重要!要将AI完美的应用于医疗影响领域,需要对这个领域有很深的见解。
选择工具:
接下来就是要选择一个AI开发框架,“框架”可以让我们不关心技术细节,集中精力去做业务,“做业务”就是将业务转换成流程,将流程翻译成代码,AI的背后是数学,包括数学运算,优化算法,概率论等。
当下AI框架众星云集,Tensorflow,Pytorch,MXNet,Caffe,百度的飞浆,华为的MIndScope,旷视科技的MegEngine,这些框架都是开源的,为了吸引用户群体,有的框架提供了全流程的开发文档,AI课程和免费的算力。
框架的选择需要取决于团队的技术积累,有的框架集成度非常高,简单一个命令行就能开启训练,这样的框架适合前期AI技术经验积累少的团队,另外,模型的社区支持度也是一个重要因素,社区活跃度高,那么一些重要模型很快就能被复现并且开源。
目前工业界用的最多的是Tensorflow,学术界倾向Pytorch,国内的飞浆提供了AI算力,平台,框架,工具套件,培训课程,很全面且风格很像Pytorch,适合初学者。
AI开发分为训练和推理两个相对独立的过程,训练不需要集成到产品中,所以可以选择与产品开发语言不一致的开发语言,目前用的最多的是Python,每个AI框架都提供了针对不同语言推理框架,AI训练的结果是一个模型文件和参数文件,不同的框架虽然输出的文件格式不同,但有工具可以将其转换为通用的格式:ONNX,所以,经常有公司使用一种框架进行训练,用另一种框架进行推理,由于推理过程相对简单,有的公司技术积累雄厚,甚至基于CuDNN自己写推理框架。
结果分析:
当我们正因为完成一个AI产品而兴奋时,现实却给我们重重一击,效果不尽人意,过拟合还是欠拟合?我们开始疯狂调参,更换模型,如果效果仍不尽人意,则需要换个思路方向,是不是数据出了问题?
数据对于AI来说至关重要,数据稀缺是很多公司面临的问题,但医疗数据具有其特殊性,大规模数据集的预训练模型很难泛化到医疗领域,目前有效的方法就是采用数据增强方式对数据进行扩增,例如利用基本的图像变换,或者利用GAN生成数据,前期数据量少,可以采用集成学习的方式利用多种简单模型的组合;随着数据的增加,采用迭代增量的方式去重新训练,并增加模型复杂度。
模型复杂度和推理速度是一把双刃剑,模型复杂度高,其参数量大,浮点运算多,导致推理速度慢,但模型复杂度高也意味着模型精度高,所以需要在技术选型时根据自身业务去抉择。
边栏推荐
猜你喜欢
进程间通信学习笔记
Between two orderly array of additive and Topk problem
What does a software test report contain?
VSCode插件:嵌套注释
leetcode-399: division evaluation
Arbitrum 专访 | L2 Summer, 脱颖而出的 Arbitrum 为开发者带来了什么?
Layer 2 broadcast storm (cause + judgment + solution)
General introduction to the Unity interface
There is a problem with the multiplayer-hlap package and the solution cannot be upgraded
怎样做好一个创业公司CTO?
随机推荐
Teach you how to configure Jenkins automated email notifications
Can an inexperienced college graduate switch to software testing?my real case
力扣每日一题-第46天-704. 二分查找
[1154]如何将字符串转换为datetime
To write good test cases, you must first learn test design
MySQL stored procedure
VSCode插件:嵌套注释
项目开发软件目录结构规范
【Map与Set】之LeetCode&牛客练习
Fiddler captures packets to simulate weak network environment testing
系统需求多变如何设计
计算S=a+aa+…+aa…a
Brute Force/Adjacency Matrix Breadth First Directed Weighted Graph Undirected Weighted Graph
uniapp uses 3rd party fonts
Path and the largest
Arbitrum 专访 | L2 Summer, 脱颖而出的 Arbitrum 为开发者带来了什么?
tcp框架需要解决的问题
Crypto Life, a day in the life of a Web3 project partner
静态路由解析(最长掩码匹配原则+主备路由)
【微信小程序】一文带你了解数据绑定、事件绑定以及事件传参、数据同步