卷积网络和卷积神经网络_卷积神经网络的眼病识别-程序员宅基地

技术标签: 卷积  卷积神经网络  网络  深度学习  神经网络  

卷积网络和卷积神经网络

关于这个项目 (About this project)

This project is part of the Algorithms for Massive Data course organized by the University of Milan, that I recently had the chance to attend. The task is to develop the Deep Learning model able to recognize eye diseases, from eye-fundus images using the TensorFlow library. An important requirement is to make the training process scalable, so create a data pipeline able to handle massive amounts of data points. In this article, I summarize my findings on convolutional neural networks and methods of building efficient data pipelines using the Tensorflow dataset object. Entire code with reproducible experiments is available on my Github repository: https://github.com/GrzegorzMeller/AlgorithmsForMassiveData

该项目是我最近有幸参加的由米兰大学组织的“海量数据算法”课程的一部分。 任务是开发使用TensorFlow库从眼底图像识别眼睛疾病的深度学习模型。 一个重要的要求是使培训过程具有可扩展性,因此创建一个能够处理大量数据点的数据管道。 在本文中,我总结了有关卷积神经网络和使用Tensorflow数据集对象构建有效数据管道的方法的发现。 我的Github存储库中提供了具有可重复实验的整个代码: https//github.com/GrzegorzMeller/AlgorithmsForMassiveData

介绍 (Introduction)

Early ocular disease detection is an economic and effective way to prevent blindness caused by diabetes, glaucoma, cataract, age-related macular degeneration (AMD), and many other diseases. According to World Health Organization (WHO) at present, at least 2.2 billion people around the world have vision impairments, of whom at least 1 billion have a vision impairment that could have been prevented[1]. Rapid and automatic detection of diseases is critical and urgent in reducing the ophthalmologist’s workload and prevents vision damage of patients. Computer vision and deep learning can automatically detect ocular diseases after providing high-quality medical eye fundus images. In this article, I show different experiments and approaches towards building an advanced classification model using convolutional neural networks written using the TensorFlow library.

早期眼病检测是预防由糖尿病,青光眼,白内障,年龄相关性黄斑变性(AMD)和许多其他疾病引起的失明的经济有效方法。 根据世界卫生组织(WHO)的目前,全世界至少有22亿人有视力障碍,其中至少有10亿人本来可以预防[1]。 快速和自动检测疾病对于减轻眼科医生的工作量并防止患者视力损害至关重要。 提供高质量的医学眼底图像后,计算机视觉和深度学习可以自动检测眼部疾病。 在本文中,我展示了使用使用TensorFlow库编写的卷积神经网络构建高级分类模型的不同实验和方法。

数据集 (Dataset)

Ocular Disease Intelligent Recognition (ODIR) is a structured ophthalmic database of 5,000 patients with age, color fundus photographs from left and right eyes, and doctors’ diagnostic keywords from doctors. This dataset is meant to represent the ‘‘real-life’’ set of patient information collected by Shanggong Medical Technology Co., Ltd. from different hospitals/medical centers in China. In these institutions, fundus images are captured by various cameras in the market, such as Canon, Zeiss, and Kowa, resulting in varied image resolutions. Annotations were labeled by trained human readers with quality control management[2]. They classify patients into eight labels including normal (N), diabetes (D), glaucoma (G), cataract (C), AMD (A), hypertension (H), myopia (M), and other diseases/abnormalities (O).

眼病智能识别(ODIR)是一个结构化的眼科数据库,包含5,000名年龄的患者,左眼和右眼的彩色眼底照片以及医生的医生诊断关键字。 该数据集旨在代表由上工医疗技术有限公司从中国不同医院/医疗中心收集的“真实”患者信息集。 在这些机构中,眼底图像由市场上的各种相机(例如佳能,蔡司和Kowa)捕获,从而产生不同的图像分辨率。 注释由经过培训的人类读者进行质量控制管理来标记[2]。 他们将患者分为八个标签,包括正常(N),糖尿病(D),青光眼(G),白内障(C),AMD(A),高血压(H),近视(M)和其他疾病/异常(O) 。

After preliminary data exploration I found the following main challenges of the ODIR dataset:

经过初步的数据探索,我发现了ODIR数据集的以下主要挑战:

· Highly unbalanced data. Most images are classified as normal (1140 examples), while specific diseases like for example hypertension have only 100 occurrences in the dataset.

·高度不平衡的数据。 大多数图像被归类为正常图像(1140个示例),而特定疾病(例如高血压)在数据集中仅出现100次。

· The dataset contains multi-label diseases because each eye can have not only one single disease but also a combination of many.

·数据集包含多标签疾病,因为每只眼睛不仅可以患有一种疾病,而且可以患有多种疾病。

· Images labeled as “other diseases/abnormalities” (O) contain images associated to more than 10 different diseases stretching the variability to a greater extent.

·标记为“其他疾病/异常”(O)的图像包含与10多种不同疾病相关的图像,这些图像在更大程度上扩展了变异性。

· Very big and different image resolutions. Most images have sizes of around 2976x2976 or 2592x1728 pixels.

·非常大且不同的图像分辨率。 大多数图像的大小约为2976x2976或2592x1728像素。

All these issues take a significant toll on accuracy and other metrics.

所有这些问题都会对准确性和其他指标造成重大损失。

数据预处理 (Data Pre-Processing)

Firstly, al

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_26752765/article/details/108132559

智能推荐

单机Redis迁移K8s-Redis集群-程序员宅基地

文章浏览阅读161次。需要把这个RedisShake安装到k8s集群,然后k8s集群相互检测到redis集群的节点(因为节点直接都是用内Pod内网进行通讯所以必须安装到K8s的Pod内部切记!redis单机之间的迁移比较好解决,但是和redis和k8s-redis集群迁移目前市面的成熟解决方案较少。接下来分享一个较为成熟的解决方案来解决这个问题。文件,写上对应的端口号。和redis版本(很重要)遇到重复的key要求重写或者跳过。主备好pod里面的命令。

怎么更改mac电脑的系统语言,Mac电脑的语音设置在哪_如何在苹果电脑里设置语言-程序员宅基地

文章浏览阅读6.1k次。在国内,我们使用mac电脑,默认都是使用中文的。如果我们想要体验一下其他语言环境下的操作系统,那么如何设置更改Mac的系统语言呢?下面小编就给大家讲解一下苹果电脑系统语言更换的设置方法。1、首先在里面找到。2、点击左下角的号按钮,选择添加新的语言后点击下方的按钮。3、然后系统会提示需要将选择的语言设置为首选语言吗,选择是的话,系统语言就会被更改成我们选择的语言了。4、我们暂时选择不使用,回到设置页,在左边菜单栏中可以看到鼠标已经变成了的样子。5、英文的选项,直接至顶部,那么英文就变成了首选系统语言。6、更改_如何在苹果电脑里设置语言

CV_8U和CV_32F与CV_8UC3和CV_32FC3区别-程序员宅基地

文章浏览阅读5.6k次,点赞4次,收藏19次。标题 opencv 中常用数据类型的区别以及数据类型的转换8代表8bit 每一个像素点在内存空间占用8bitS–代表—signed int—有符号整形U–代表–unsigned int–无符号整形F–代表–float---------单精度浮点型同时注意 CV_8U 代表的是单通道图像,数据范围是{0-255} CV_32F代表的图像是单通道图像,数据范围是{0.0 - 1.0}imshow在显示图像时均会映射到{0-255}之间 CV_8U显示的就是0-255但要注意,在显示CV_32F类_cv_8u

cv2.dnn读取模型报错原因归纳_error: (-210:unsupported format or combination of -程序员宅基地

文章浏览阅读7.7k次,点赞3次,收藏4次。问题1:读取onnx出现报错“error: (-210:Unsupported format or combination of formats) Failed to parse onnx model in function 'ONNXImporter'”出现这个原因网上有挺多种解答,但是首先先检查onnx文件路径是否填写正确。问题2:读取onnx出现报错“error: (-2:Unspecified error) Can't create layer "317" of type "Clip"._error: (-210:unsupported format or combination of formats) failed to parse o

【GD32F427开发板】Liteos-m 移植_liteos keil-程序员宅基地

文章浏览阅读1k次,点赞7次,收藏15次。Cortex-M 嵌入式系统 MCU Arm 开发板。_liteos keil

idea java 运行参数_idea设置JVM运行参数-程序员宅基地

文章浏览阅读1.8k次。对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式。方式一java程序运行时指定 -Dproperty=value该参数通常用于设置系统级全局变量值,如配置文件路径,保证该属性在程序中任何地方都可访问。当然,也可以通过在程序中使用System.setProperty进行设置。注意:1、如果-Dproperty=value的value中包含空格,..._idea run property参数

随便推点

关于地址引脚、数据引脚与片选-程序员宅基地

文章浏览阅读486次。因为看到有人对这个概念很模糊,怕自己以后脑子抽了也懵了,所以记录一下。实际上非常简单

二级考试C语言基础知识精讲概述(三)-程序员宅基地

文章浏览阅读759次,点赞19次,收藏12次。【考点1】函数的定义这里函数名为func,返回类型为int,并接受两个int类型参数。【考点2】库函数例如,调用C语言的数学库函数需要引入头文件。此代码段会计算4.0的平方根。【考点3】函数的返回值函数可以通过 return 语句返回一个值。这个函数返回两个整数的和。【考点4】函数的声明【考点5】函数的调用此代码调用之前声明的multiply函数,并将返回值存储在result中。【考点6】函数的参数及值传递在C语言中,函数参数默认是值传递。

[Latex]newcommand\renewcommand\newtheorem的使用、总结、报错_latex renewcommand-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏9次。newcommand, renewcommand, newtheorem的使用和总结_latex renewcommand

内存泄漏检测工具(转载)-程序员宅基地

文章浏览阅读51次。内存泄漏检测工具2007年08月08日1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2. Dmalloc-Debug Malloc Library. 3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。 4. Leaky..._修改1286400

FPGA入门学习网站汇总【自学FPGA专用】_fpga学习课程推荐 csdn-程序员宅基地

文章浏览阅读184次。【BILIBILI网课——电子】Verilog硬件描述语言 西安电子科技大学 蔡觉平等主讲硬件安全技术+数字IC串讲——摆渡沧桑程序员宅基地牛客网——verilogHDLBITS——Verilog练习SOC总线的相关知识verilog——FPGA 20个例程专栏(作者: 青青豌豆)字节FPGA实习字节IP实习华为个人中心_fpga学习课程推荐 csdn

esp8266通过串口与stm32通信,实现远程控制pca9685_服务器下发指令通过sp8266控制stm32-程序员宅基地

文章浏览阅读231次。/client.setCallback(callback)在vscode中只能放在loop函数中而不能放在setup中,而且在arduino中无论是放在哪里速度都差不多。2.stm32代码请到github下载https://github.com/fengyib/Remote-Control-of-Stepper-Motor。首先本项目通过esp8266连接服务器,实现远程通信,在和stm32串口通信实现pca9685的远程控制。1.esp8266代码。//回调函数只能有一个。_服务器下发指令通过sp8266控制stm32