自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 在PYNQ-ARM环境中基于ONNX运行神经网络

在PYNQ的ARM处理器中使用ONNX运行神经网络

2023-03-14 16:23:21 1145 1

原创 hm程序员C++数据结构OOP实现

现在工作上常用C++,也是为了业余时间锻炼思维,开始回顾下数据结构,在B站上找不到太像样的基于C++的数据结构课程,好不容易找到了来自黑马程序员的一个号称基于C++的数据结构课程,结果打开一看,基本是就是纯C实现,没有体现C++的特点。这个课程简洁明快,只包含了最基础的几个数据结构,虽然有些地方说的太简单了点,但对于有基础的人来说足够了。于是花了点时间把其中的算法进行了C++ OOP实现。课程链接:https://www.bilibili.com/video/BV13b411t7LF?p=1数据结构类:

2021-02-06 12:38:06 2377 14

原创 不同获取方式下TensorFlow(Keras)-CPU性能差异

前言作为算(diao)法(bao)工作者,最常用的工具之一就是深度学习框架,在众多框架之中,TensorFlow及其高层封装Keras是非常受欢迎,也是绝对用户数最多的。同时,在深度学习的研究中,GPU是必不可少的,因为它能够加速训练与推理,带来速度上质的飞越,显卡的档次从根本上决定了速度提升幅度。然而,很少有人关注其在CPU上的性能问题,尽管在CPU上只能跑一些小模型,才能把训练时间缩小到可接受范围内。然而,安装或获取TensorFlow的途径有很多种,是否会明显影响TensorFlow在CPU上的性能

2020-06-10 01:30:54 2016 5

原创 基于Spring Boot的ALBERT词向量服务(5)

当前总结到此已经完成了一个基于Spring Boot的ALBERT词向量服务的小项目,但其实还存在一些需要改进的点:目前仅支持单次单个词请求,不支持单次批量词向量生成。分词器尚未考虑英文分词情况,而在BERT系列中英文分词的机制其实比汉字更加复杂一点。目前仅进行了简单测试,未进行针对性的一致性测试和单元测试。目前可以想到的就这些点,有时间再补,如果有大佬很懂相关领域,望不吝赐教!P...

2020-03-28 18:56:54 562 2

原创 基于Spring Boot的ALBERT词向量服务(4)

打包与应用示例打包与启动上述基于Spring Boot已经对词向量服务开发完毕,接下来要打成jar包,才算做真正完成一个流程,当然这里要借助maven,在IDEA的Terminal中输入:mvn clean packagemaven就会开始打包流程,如果没有问题,最终会提示BUILD SUCCESS。在生成的target目录下可以找到打好的包:取出来放到桌面上,使用java -jar...

2020-03-28 18:56:43 440

原创 基于Spring Boot的ALBERT词向量服务(3)

Spring Boot工程开发前面我们已经做好了模型的准备,下面就可以进行Spring Boot工程的开发了。这里我使用的是IntelliJ IDEA,借助Spring initializer创建一个Spring Boot Maven工程,添加Spring Boot Web starter和Lombok,确保IDEA已经安装了Lombok插件,这个是使用IDEA创建Spring Boot工程的基...

2020-03-28 18:56:30 559

原创 基于Spring Boot的ALBERT词向量服务(2)

ALBERT模型转换与准备模型载入与简单推理最基本的,我们需要有一个ALBERT的中文预训练模型。这里选择是Google推出的Tiny版本ALBERT,下载地址为:https://storage.googleapis.com/albert_zh/albert_tiny_zh_google.zip,下载完成后解压,会得到TensorFlow的checkpoint:众所周知,TensorFlo...

2020-03-28 18:55:44 1071

原创 基于Spring Boot的ALBERT词向量服务(1)

前言近期在学习Java EE后台开发,因为工作和流行度的双重原因,选择学习了Spring Boot框架。不同于算法工程师的本职工作,Spring Boot,甚至于是整个Java EE后台的学习曲线和各项技术的依赖项,对于我来说都是全新的领域。总结成博客也算是对初学一段时间的检验。当然,毕竟初学,接下来的东西可能略显粗糙和幼稚,如果有对Java EE很熟的朋友,希望不吝赐教!词向量生成服务在自...

2020-03-28 18:54:52 1054 2

原创 轻量级生理信号处理工具BioSPPy中的ECG(4)

轻量级生理信号处理工具BioSPPy中的ECG(4)后记到这里,关于在BioSPPy中的专门用于ECG处理的方法就已经讲解完毕了,总体来说使用起来很简单,没有需要特别注意的坑,对于小白来说非常友好。不过这里还是要说一下这个工具包的缺点,其中最关键的就是目前还很不完善,距离一个全面的,可以作为基础组件的工具包还有很大距离,甚至,原作者连教程文档都没有写全(https://biosppy.read...

2020-01-08 23:49:16 2729 3

原创 轻量级生理信号处理工具BioSPPy中的ECG(3)

1 简介前面介绍了使用BioSPPy中提供的R波检测算法以及基于此的心拍截取方法。除了这些,还有3个API需要细讲一下,见下表:API用途biosppy.signals.ecg.compare_segmentation对比算法检测的R峰位置与标准的R波位置,给出评估结果。biosppy.signals.ecg.correct_rpeaks在一定范围内校准算法检测的...

2020-01-08 23:48:18 5531 6

原创 轻量级生理信号处理工具BioSPPy中的ECG(2)

1 简介研究ECG算法,除了那些经典变换,最常见的应该就是R波的识别了(或者说QRS波识别,不同人叫法可能不太一样)。这个我在之前的博客中有讲解过,是一个我自己用matlab实现的R波识别算法(该节最后一部分给出了网址)。事实上,BiosPPy工具包中有关ECG的处理基本都是围绕R波检测展开的,它提供了5个不同的R波检测算法如下:算法文献来源biosppy.signals....

2020-01-08 23:47:39 7544 9

原创 轻量级生理信号处理工具BioSPPy中的ECG(1)

1 前言很久没有写博客了,之前也想过要放弃。不过想来当个业余爱好也好啊,也当是知识的巩固和积累。废话少说,下面介绍这次的主角——Biosppy工具包。2 简介接下来的这段主要是对官方英文文档的翻译和整理,关于官方英文文档具体可访问:https://biosppy.readthedocs.io/en/stable/index.html2.1 概况BioSPPy是基于Python的生理信号...

2020-01-08 23:46:55 7366 3

原创 U-Net新玩法——ECG精准语义分割(4)

大概的内容就是之前的3节所说的了。严格来说,这个小项目只是介绍了一种新的ECG分析思路,受限于数据,并没有进行细致的测试。如果真想把这个完成一个很好的工作,个人认为起码要达到以下几个标准:数据量要足够大,类别足够全面。这个需要耗费大量的人力物力才能办到,而且最好要有心血管疾病专家的辅助; 在考虑病人差异性,也就是inter-patient情况下,仍然可以取得比较好的性能。根据在分类上的经验,...

2019-04-22 23:57:40 3679 6

原创 U-Net新玩法——ECG精准语义分割(3)

上篇已经准备好了数据,这篇就是开始训练模型。目标很明确,我们要搭建一个1维形式的U-Net,使其能够处理1维ECG。代码实现参考了https://github.com/divamgupta/image-segmentation-keras 。输入是5s的ECG片段,在采样率为360Hz的情况下长度为1800,输入前先做z-score标准化;输出结果是关于3种区域(正常N,室性早搏PVC,背景Bac...

2019-04-22 23:57:31 5071 5

原创 U-Net新玩法——ECG精准语义分割(2)

接上篇,我们的思路已经很清楚了,就是将U-Net改为1维处理ECG信号。可问题来了,数据怎么来?要知道,既然想用模型完成更高级的功能,那给出更为详尽的人工标注几乎是必然的。在这个任务里面,我们要给出的监督信号要包括各个片段中的信号类型以及它们精确的分界点。常用的MIT-BIH数据库只是给出了心拍的类型标记,而QT数据库中的信号虽然给出了心拍的边界参考,但大部分也是用某个算法来做的,真...

2019-04-22 23:57:20 6356 10

原创 U-Net新玩法——ECG精准语义分割 (1)

熟悉ECG算法处理的同学都知道,在这个领域,做的最多的就是分类,可以基于心拍,也可以基于片段。两种方法各有优劣,这个我在之前的博客:Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(2)(https://blog.csdn.net/qq_15746879/article/details/88698720)中也做过一些分析。简单总结下来是这样的,基于心拍...

2019-04-22 23:57:09 8987 7

原创 Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(4)

结果分析 话不多说,直接上结果。由于网络本身具有随机性,因此每次的结果也会有些许差异。根据我的实验,一般测试准确率会维持在85%左右,好的时候可以到86%,87%以上。这里我选择了一个整体表现较好的模型(myNet.h5可直接载入),总体准确率为86.41%,混淆矩阵如下:除此之外,论文中也习惯用各类的敏感度(Se)和正预测率(P+)来衡量表现。汇总如下:N: Se ...

2019-03-20 20:44:41 5146 21

原创 Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(3)

网络搭建 正如我们前面所说的,原文中所使用的网络并没有什么特别新奇之处,与经典的ResNet-34架构很类似。不过这里的网络使用了更大的,长度为16的一维卷积核,而原ResNet用于二维图像分类,则倾向于使用尺寸为3×3的小卷积核。个人认为这种尺寸上的不同主要还是源于ECG信号和图像数据的本质不同。一般直接输入网络的图像分辨率较低,哪怕在感受野最小时,3×3的区域也很有可能包含了具...

2019-03-20 20:44:16 4783

原创 Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(2)

数据处理 目前大部分的文章均是基于心拍的分类。这样做在理论上本身没什么问题,因为数据库中的标签就是针对每个心拍给出的。但是在具体操作中,心拍的定位要么直接使用了数据库中的人工位置标记,这样在实际应用中等同于加入人工干预,自动化程度不够;要么使用一些经典的QRS波检测算法,如Pan-Tompkins算法,而这样的定位方式依赖于QRS检测算法的准确度。鉴于目前QRS波检测算法动辄99%...

2019-03-20 20:43:56 7569 19

原创 Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(1)

相信不少人已经早就看过了吴恩达(Andrew Y. Ng)大佬发表在Nature Medicine上的ECG诊断算法方案。深度学习网络一举打败了经验丰富的心血管疾病专家,在常见的12种ECG正常或异常判定中的F1达到了0.837,而参与实验的6位医生的平均F1却仅有0.780。对这样的结果,当然可以有所质疑,毕竟这几位医生可能并不能代表人类的诊断水平,不过这确实再一次反映了深度学习的...

2019-03-20 20:43:28 7335 1

原创 一个不成熟的开源小方案:关于2018中国生理信号挑战赛(CPSC-2018)(4)

效果评估与改进方向分析 这里我们给出在最终测试集上的混淆矩阵和F1统计:  Actual/Predict N AF AVB LBBB RBBB PAC PVC STD STE ...

2019-01-01 00:00:06 5137 15

原创 一个不成熟的开源小方案:关于2018中国生理信号挑战赛(CPSC-2018)(3)

深度学习网络深度学习是啥,以及各种网络原理什么的,以及它们有什么样的特点,这里都不去系统阐述了。不懂的自行出门右转补基础。这里我所采用的是CNN和RNN(双向LSTM)的混合网络,对每一个导联都搭建一个对应的模型训练,最终再进行综合。这是总体的大框架。 不过在讲具体地网络结构之前,我们这里先来看一个问题。 记录与片段的标签“冲突”现在有很多论文都在使用CNN进行ECG的分类判别,他...

2018-12-31 23:59:58 9688 32

原创 一个不成熟的开源小方案:关于2018中国生理信号挑战赛(CPSC-2018)(2)

数据与预处理数据库介绍正如我们前面所提到的,我们用到的数据库是来自2018年中国生理信号挑战赛(China Physiological Signal Challenge 2018)的数据。该数据库是由11家医院中收集而来,官方公开的训练集中包含了6877条记录,男性3699,女性3178。此外还有2954条记录作为测试集,不对外公开,用作比赛时的评分。信号的采样率为500 Hz,每条记录包...

2018-12-31 23:59:51 8464 10

原创 一个不成熟的开源小方案:关于2018中国生理信号挑战赛(CPSC-2018)(1)

动机与声明:较早之前从某位不知名网友那里得知了CPSC-2018(http://2018.icbeb.org/Challenge.html),一个有关于12导联ECG分类诊断算法的比赛。不过当时因为忙于找工作和修改paper,并未多在意,也并没有参加。前段时间,又想起这个比赛,不过这个时候已经结束了。其实并非觉得遗憾,真正吸引我的,是这个比赛提供的大量的12导联,正常+8类症状共计9大类的EC...

2018-12-31 23:59:42 9587 4

原创 ECG ×AI: 机器/深度学习的ECG应用入门(8)

再次强调:以下内容仅供小白食用,大佬请绕行!!!                  觉得好请点赞,github给颗星~~~~RNN:长短时记忆网络(LSTM)的应用1.引言前面的教程中说了有关1维卷积神经网络(CNN)在ECG算法中的应用,目前也有众多论文在该方面有所探讨。为什么在图像领域表现出色的CNN能够适用于ECG信号?原因我们前面也进行了一些分析,其实感性地说起来,就是ECG信号与2维图像...

2018-06-10 21:17:39 12494 12

原创 ECG的ML/DL算法碎碎念:主动学习(Active Learning)—— Patient Specific

0 写在前面    很高兴前面的一些总结可以帮助到在这个领域做研究的同学们,不过也有同学有更多的问题。下面也是几点说明吧,先说两个问题:1. 有人反映Matlab的分类代码不能正常运行(报错:未定义函数或变量 'Classification'),这一点是我的责任。主要是文件名有问题(“Classification-SVM.m”和“Classification-CNN.m”),忽略了m文件名不能有横...

2018-05-29 23:58:36 7378 9

原创 ECG ×AI: 机器/深度学习的ECG应用入门(7)

Python 代码补充及说明1. 引言    补充了关于前面ECG算法入门教程的有关机器学习和深度学习的Python版本代码。为了运行效率更快,更易上手,机器学习算法与深度学习算法均使用目前流行的第三方库,而非手动实现。不要觉得这是“调包侠”的可耻行为,因为如果非要“不可耻”地手写一遍,代码的运行效率是远远不如由众多大佬维护的第三方库的。手动实现只适合自己想要锻炼能力的情况,不适合做应用研究的情况...

2018-05-18 17:08:48 10938 33

原创 ECG ×AI: 机器/深度学习的ECG应用入门(6)

后记正文已经结束了,在这里还想罗嗦几句,那就是一些棘手的问题:1.特征选择与参数调优。这个前面已经提到了。2.个体间差异带来的性能恶化。不知道你发现没有,前面的算法中,我们是把所有提取到的心拍放在一起,然后再划分训练集和测试集的,没有考虑个体差异问题。也就是说,来自相同病人的心拍是可以同时存在于训练集和测试集中,这样使得我们的结果都很好看,很多的国内外论文也是这么做的。但是,这与实际场景似乎有些不...

2018-05-16 19:53:50 10436 8

原创 ECG ×AI: 机器/深度学习的ECG应用入门(5)

深度学习:卷积神经网络(CNN)1.引言上一部分简单介绍了传统机器学习框架在ECG分类领域的基本应用。传统机器学习框架对于人工特征非常依赖,如果算法设计者没有足够经验,很难提取出高质量的特征,这也是传统机器学习框架的局限性。近几年来以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习技术蓬勃兴起,其优势在于可以从大数据中自动习得特征而无需人工设计特征,...

2018-05-16 19:53:32 20934 29

原创 ECG ×AI: 机器/深度学习的ECG应用入门(4)

传统机器学习:特征工程+分类器1.引言经过前面的工作,我们已经解决了数据来源和识别对象问题。那么接下来,我们就要进行机器/深度学习算法的应用了。由于本人写这些博文的目的不在于讲解机器/深度学习理论,所以,涉及到这部分的内容基本不会做太深的原理探讨,不懂的请自行百度,网上的资料有的是。这一部分,我们先从传统机器学习框架开始,几乎所有利用传统机器学习算法进行分类的问题都遵循“特征工程+分类器”的思路,...

2018-05-16 19:52:35 26825 40

原创 ECG ×AI: 机器/深度学习的ECG应用入门(3)

QRS心拍定位: 解决识别对象问题1.引言上一节我们解决了数据来源问题,成功将ECG数据读入了Matlab中.而我们现在还不能马上使用高大上的机器/深度学习算法,原因在于一个问题:在这个问题中,对于我们的机器/深度学习来说,直接处理的对象是什么?是我们在上一节说的一条"记录"吗?对于大多数研究/论文来说,并不是所谓的记录,而是ECG的基本单位:心拍,就是在最开始的时候介绍的,包含了P波,QRS波,...

2018-05-16 19:52:09 38076 124

原创 ECG ×AI: 机器/深度学习的ECG应用入门(2)

ECG数据库:解决数据来源问题1.数据库简介与获取经过上一章节的介绍,相信你对于我们的研究对象——心电信号ECG已经有了一个初步的认识,也清楚了我们的目标就是使用机器/深度学习算法,能自动识别指定的ECG类型,从而实现“人工智能”式的诊断(汗。。。)。“巧妇难为无米之炊”,我们的“米”(ECG数据)从哪里来呢?当然有喜闻乐见的数据库供我们使用。首先贴一个网址:https://www.physion...

2018-05-16 19:51:40 28232 41

原创 ECG ×AI: 机器/深度学习的ECG应用入门(1)

前言你好,我是研究ECG算法的搬砖工Wenhan。目前搞这个方向已经挺长时间了,总想着把自己的一些入门经验分享一下,却不知道从何下手。说实话,关于ECG算法的研究相对冷门一些,网络上系统的资料也比较少,有的多是故作高深的论文。想想当时入门时真是走了不少弯路,也真心体会到如果能有一个相对系统一点的教程或是博客,再配合一些可以直接上手的代码,对于初学者来说是很重要的。所以写了这几篇渣文,内容简短,简单...

2018-05-16 19:51:00 31435 16

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除