向AI转型的程序员都关注了这个号👇👇👇
机器学习AI算法工程 公众号: datayx
此为2017-2018年度工程实践项目,主要目的是能够识别图像类别,尤其是医学类,然后在医学类中再进行更为细致的类别识别,以达到医学影像这一垂直领域的应用目的。环境
完整代码 以及预训练模型 获取方式:
关注微信公众号 datayx 然后回复 图像分类 即可获取。
文件结构及意义
main:主文件 - MedicalLargeClassification.py——图像识别GUI搭建——运行此文件即可启动程序
MedicalLargeFine_tuning.py——图像大类识别模型搭建
MedicalSegmentClassificationModel_weights_15.h5——训练好的医学小类分类模型
picture:数据源
从国外开源医疗图像网站www.openi.org上爬取图片,进行修剪,最终得到医学类图像
其中医学类又细分为了胸部、头部、四肢三类模型
其实这一步花费了很长时间,因为模型的迁移涉及到两个部分,一个是模型的框架,另一个是模型的参数。
先说官方文档,众所周知,keras的模型结构有两种:Sequential、Model。阅读VGG16的源码可以发现,VGG16是Model结构,而官网文档给的例子是用Sequential结构搭建模型后,将vgg16_weights_tf_dim_ordering_tf_kernels.h5的权重加载进模型,但是实际运行会报错——两种结构并不兼容
再说说博客,几乎所有的blog都和我的想法一致,尝试自己用Model结构搭建模型,但是在Flatten层都会报错,尝试各种写法都报错误
最后我决定不动Flatten层,利用Model的pop()将最后三层Dense删除,再增加合适尺寸的Dense层,问题解决
注:想要利用训练好的VGG16,最好自己下载,然后改VGG16源码里面的载入地址(因为Keras需要去国外下载,及其慢,本库存放在VGG16_model中)
训练
GUI
利用python的tkinter搭建交互界面
将大类识别和医学小类识别串联起来,形成应用。
测试
测试样本:testCase
测试截图:红线框标注的为分类错误
阅读过本文的人还看了以下:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注