社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

BIB |基于分而治之的分子图片识别深度学习框架

DrugAI • 3 年前 • 566 次点击  

今天给大家介绍中南大学曹东升教授/国防科技大学吴城堃教授/浙江大学侯廷军教授团队共同在国际期刊Briefings in Bioinformatics上发表的分子图片识别的文章《ABC-Net: a divide-and-conquer based deep learning architecture for SMILES recognition from molecular images》。该文章基于分而治之的思想提出把分子识别问题转换为其组成元素的识别包括分子键线与原子字符标识,然后使用关键点识别技术进行相关元素的识别并重新组装恢复分子结构。该方法在构造的数据集以及基准测试集上较以前的方法取得了显著的提升。


1

摘要

在大多数科学文献中,化合物的结构信息通常以图片形式描述,不适合计算机识别与操作。这使得分子图片识别工具在从大量文献中自动挖掘知识变得必不可少。然而,现有的方法由于其恢复精度差而远远达不到现实应用的需求。在本文中,作者开发了一个名为 ABC-Net(Atom and Bond Center Network)的深度神经网络模型框架来直接预测图结构。基于分而治之的原则,作者提出将原子或键建模为中心的单个点。通过这种方式,作者可以利用全卷积神经网络生成一系列热图来识别这些点并预测相关属性,例如原子类型、原子电荷、键类型和其他属性。基于此,可以通过组装检测到的原子和键来恢复分子结构。该方法将所有检测和属性预测任务集成到一个多任务的全连接卷积神经网络中,具有非常高的执行效率。实验结果表明,与公开可用的工具相比,该方法可以显著提高识别性能,为解决 OCSR 问题提供了一个高效率的基于深度学习框架的解决方案。


2

方法

框架的中心思想是将化学结构识别转化为一系列像素级别的预测问题。具体来说,系统将输入图像按固定步幅划分为均匀网格(在实验中步幅设置为4)。每个网格单元负责 (i) 确定它是否是原子或者键中心,以及 (ii) 如果它是对象中心,则负责预测相关属性。基于上述思路,整个OCSR流程由三个核心步骤组成,包括(A)原子和键检测,(B)原子和键的辅助信息识别(C)分子重建(图1a)。


基于上述设计,作者提出了一种称为 ABC-Net(图 1b)的多任务学习模型框架,只需一次推理即可做出所有预测。在模型训练阶段,使用多任务训练方法同时训练原子和键检测任务以及其他辅助属性分类任务。在推理阶段,原子和键的检测被用作前导任务。仅在原子和键热图中检测到的候选位置预测辅助特性(图 2a)。

图1. 模型识别架构图


在训练原子和键位置检测热图时,相较于平等地惩罚所有负位置,大大降低了对所有正位置的一阶邻居的惩罚(图2b)。原因是由于下采样操作可能会引入离散化误差,真实位置可能位于正位置与其负邻居之间的子像素中。因此,将预测目标热图中的所有正位置点设置为 1,将所有正位置点的一阶邻居设置为 0.95,其他位置设置为 0。值得注意的是,键检测更加复杂,因为一些键可能相互交叉。当两个键中心太靠近甚至在热图中重叠时,此设置可能会导致键丢失。在分子图像中,重叠键必须具有不同的方向才能被区分。因此,通过将0-360°统一划分为 60 个区间,将它们分为 60 个类别,以提供更好的区分。具体来说,在键位置检测之后,对候选键像素点进行 60 个二元分类任务,确定在检测到的位置是否存在特定角度的键。


在预测阶段,首先可以通过分别在原子和键热图中找到峰值点来检测原子和键中心。之后,通过找到沿角度类别轴的局部最大值,可以在每个键中心检测到不同角度类别的键。这意味着如果一个角度的响应大于其邻居并且进一步大于某个阈值,它将被识别为键。然后,针对指定的键中心和键角计算键长。接下来,对于每个键,可以根据键中心位置、键角和键长找到与该键相连的两个原子。通过这种方式,原子和键可以组装成分子图。至于其他原子和键的性质,例如原子类型和键类型,可以从原子和键的性质预测图中在相应的位置上推断出来。


图2. 模型核心方法和策略的图形展示


3

模型评估

为了训练ABC-Net模型,需要用每个原子和键的像素坐标以及相关属性都标记过的2维化学结构图像。目前这种类型的数据集还没有人建立,手动构建包含数千张图像的标记数据集所需人工成本太高,也是不可行的。幸运的是,两个不同的化学信息学库(RDKit和Indigo)提供了一些API,可在绘制分子图期间进行自动标注。因此,作者开发了一个Python程序,可以在绘图时自动记录所需的标注信息。为了提高模型的鲁棒性并防止过度拟合,进一步探索了不同的分子图绘制风格,例如改变原子标记模式、改变键厚度、改变分子方向、改变芳香性标记等。本研究中从ChEMBL数据库随机抽取10万分子以构建训练数据,分子中重原子数分布如图3a。然后将RDKit图像数据集和Indigo图像数据集以8:1:1的比例分成三组(训练、验证和测试)。此外,作者还通过将RDkit和Indigo数据集组合在一起构建了一个混合数据集。


3.1 模型单项任务的表现

这一部分实验使用了包含更多分子图像样式的组合数据,这样可以更好地评估模型性能。如图3b所示,所有检测和属性分类任务的得分都在0.998以上,键长预测任务的MAE小于0.1像素,这些结果清楚地表明ABC-Net模型可以在每个单独的任务上实现出色的性能。


然而,这些任务中的大多数都存在严重的数据不平衡的问题,其中这些结果对于每个任务中的少数类别来说都不太令人信服。为了更好地评估模型性能,作者进一步评估了由精度和召回指标衡量的不同类别的检测和属性预测性能。检测精度和召回指标通过综合考虑位置检测和分类任务,为每个分类提供可靠的性能评估。如图2.5c所示,ABC-Net模型对每个任务的不同类别都取得了良好的性能。不同原子的检测性能均在0.98以上,表明该模型在寻找原子物体方面非常有效。对于普通键,该模型表现良好,但立体化学键的性能略有下降。至于原子电荷检测,ABC-Net模型取得了非常令人满意的超过0.99的性能。值得注意的是,对于每个类,它在训练数据中出现的频率与相应的性能呈现出正相关。

图3. 数据分布和模型表现分析:(a)数据集的分子非氢原子数分布范围为5到50,平均为28,(b)八个子任务根据其性质使用各种指标进行评估,(c)根据不同预测类型对原子位置检测、键位置检测和原子电荷预测的模型性能与出现频率的关系。


3.2 模型分子重建的整体精度

在完成多任务ABC-Net的训练之后,可以整合所有单项任务的预测结果进行分子重建并评估分子重建的整体准确性。作者将该模型与两个开源和公开可用的分子图像识别系统,MolVec和OSRA进行了比较。两者都属于基于规则的方法。此外,一种极具竞争力和代表性的基于深度学习的方法:Img2mol,利用相同来源的数据,因此将其结果列出以供比较。分别使用单独的RDKit图像、单独的Indigo图像和混合图像进行了实验来训练和评估模型。如表1所示,传统的基于规则的方法MolVec相当不理想,其恢复精度低于50%。OSAR稍好一些,在RDKit数据集上达到了61.5%,但性能在不同数据中差别很大并不一致。基于深度学习的Ing2mol方法的表现比基于规则的方法取得更好的结果。然而,Img2mol使用了数百万的数据进行训练才达到这一精度,训练数据使用非常低效。该方法在不同的数据上都在很大程度上优于其他方法,恢复准确率始终保持在94%~98%,Tanimoto相似度在98%以上。考虑到该模型仅使用数万个数据进行训练,这些结果充分证明了该方法是数据高效的并且具有出色的泛化性。


为了进一步评估ABC-Net模型的泛化能力,作者进一步利用基准数据集UOB作为外部测试数据集。UOB数据集由伯明翰大学开发,包含两千多张从专利文件中获取的分子图像,图像的平均分辨率为762x412px。此数据集的图片含有一定的噪声,所以作者在输入图像中随机加入各种级别的噪声来训练模型以消除噪声影响。详细内容请参考以下噪声部分。如表1所示,传统OSRA和MolVec方法的准确率超过80%,远优于之前的RDKit和Indigo风格数据集。这些结果可能是由于两种传统方法建立在类似于UOB的数据集上,导致模型具有过拟合风险。Img2mol方法的准确率仅为78.2%,这表明基于图像标题生成的方法可能非常脆弱且缺乏泛化能力。ABC-Net模型可以实现更好的性能,准确率超过95%,这一结果可以充分证明模型的强大有效性和高泛化能力。


表1  ABC-Net和基线方法在多个数据集上的比较结果


3.3 训练数据量对模型性能的影响

在许多计算机视觉任务中,通常使用数百万个数据来训练深度学习模型。相比之下,只分别用RDKit以及Indigo绘制了10万张图像,并使用80%来训练模型。这导致训练数据似乎不足以充分训练深度神经网络。然而,模型被训练来检测分子图像的组成元素(原子和键)。通常,一张图像中有几十个原子和键。因此,训练样本大大超过了图像数量,并且已经足以训练一个强力的模型。为了验证假设,作者使用不同的数据量,并使用相同的超参数设置进行了一系列实验。根据图4b所示的比较结果,一开始,模型的性能随着数据数量的增加而迅速提高。当模型数据量达到8万时,模型性能达到约95%。然后模型性能随着数据数量的增加而变慢。当数据量达到160K时,模型相比80K张时只增加了1%左右。因此,训练数据足以训练模型,并且可能需要非常多的数据样本才能获得进一步的微不足道的改进,这是耗时且不必要的。

图4. ABC-Net的性能分析:(a)不同噪声水平的分子图像。(b)模型性能与训练数据大小。(c)模型性能与噪声水平,即使在严重的噪音下,模型也能正确识别大部分分子结构,而且几乎没有错误。(d)错误的案例研究,错误用红色标记,原始的正确结构与绿色并排。


3.4 分子图像噪声水平的影响

在实际场景中,用于识别的真实分子图像通常包含大量噪声。为了减轻真实图像和训练图像之间的不匹配,本文使用椒盐噪声模拟真实图像。图4a显示了具有不同胡椒和盐噪声水平的分子图像。作者进行了一系列实验来验证模型在不同噪声水平下的性能。图4c中显示的结果表明,模型性能随着噪声水平的增加而下降。当噪声水平p小于0.1时,模型性能仅显示小于2%的轻微下降。这是符合预期的,因为分子图像仍然足够清晰,完全可以进行识别。当噪声水平p达到0.6时,图片已经很模糊无法识别,性能下降很多(超过15%)。值得注意的是,Tanimoto相似度指标的下降幅度远小于准确度指标,这表明该模型仍然可以正确识别其大部分子结构以识别错误分子。为了验证这个猜想,作者随机选择了两张错误识别的图像。如图4d所示,即使在严重的噪声下,该模型也能正确识别大部分分子结构,仅在一些细节处有一些错误。


4

总结

在这项工作中,作者提出了一种基于分而治之的策略从分子图像中提取化学结构的深度学习方法。遵循分而治之的思想,文章把化学结构识别问题转化为原子和键检测问题。具体操作中用它们中心的单个像素点来表示原子和键,并利用关键点估计方法来检测它们。基于此,本文开发了一个称为 ABC-Net 的全连接卷积神经网络来预测所有原子与键中心的热图以及用于原子和键属性预测的一系列属性图。如果 GPU 硬件可用,这个 ABC-Net 模型结合简单的分子组装算法可以非常高效的进行分子图像识别。为了训练模型,作者使用了两个开源 Python 库(RDKit 和 Indigo)来绘制分子图像并在绘图过程中对这些图像进行注释。作者随机更改了这两个 Python 中可用的绘图样式库,基本涵盖了主流的分子绘图风格。实验结果表明,作者提出的方法可以在测试数据集上取得更好的性能。总体而言,该模型在所有任务上的准确率均 > 94%,甚至在外部数据集上优于其他模型约 14%,充分证明了有效性和方法的普遍性。作者相信该方法将为相关研究人员提供许多新的启发,并极大地促进相关方法的发展。


参考资料

Xiao-Chen Zhang, Jia-Cai Yi, Guo-Ping Yang, Cheng-Kun Wu, Ting-Jun Hou, Dong-Sheng Cao, ABC-Net: a divide-and-conquer based deep learning architecture for SMILES recognition from molecular images, Briefings in Bioinformatics, 2022;,bbac033, 

https://doi.org/10.1093/bib/bbac033

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/127670
 
566 次点击