深度学习在MRI运动校正中的应用综述

news2024/11/23 15:29:03

运动是MRI中的主要挑战之一。由于MR信号是在频率空间中获取的,因此除了其他MR成像伪影之外,成像对象的任何运动都会导致重建图像中产生伪影。深度学习被提出用于重建过程的几个阶段的运动校正。广泛的MR采集序列、感兴趣的解剖结构和病理学以及运动模式(刚性与可变形、随机与规则)使综合解决方案变得难以可用。为了促进不同应用之间的交流,该综述详细概述了MRI中基于深度学习的运动校正方法,以及它们的常见挑战。该综述确定了基础数据使用、架构和评估策略方面的差异和协同。

来自:Deep Learning for Retrospective Motion Correction in MRI: A Comprehensive Review

目录

  • 背景
  • 数据和运动仿真
    • 大脑
    • 心脏和腹部
  • 架构
    • 基于图像的MoCo
    • 基于k空间的MoCo
  • 评价标准

运动是MRI诊断的主要挑战。尽管MRI是一种具有良好软组织对比度的非侵入性医学成像模式,但其固有的长采集时间使其比大多数其他模式更容易受到运动的影响。随着深度学习发展,已经提出了很多基于数据驱动的运动校正方法(MoCo,Motion Correction)。尽管存在关于运动伪影(motion artefacts)和经典MoCo的综述,但到目前为止,还没有对基于学习的MR运动校正方法进行综述。特别是缺少对越来越流行的MoCo + 图像重建领域的综述。

感兴趣区域、采集方案和运动类型的差异本质上影响数据驱动方法,所以需要确定基础模型和整体方法协同作用。该综述包含以下部分:

  • 背景:MR运动伪影和经典MoCo
  • 数据和运动仿真:常见的大脑和心脏模拟策略
  • 架构:基于图像和基于k空间的MoCo
  • 评价标准:图像质量、运动检测以及下游任务

背景

MR图像采集期间的相关运动包括运动器官(例如由于心脏运动或呼吸)和身体部位的有意识或无意识运动(例如由于患者不适)。当对不同的身体区域进行成像时,可以观察到不同的运动模式:

  • 对于大脑的图像,头部的运动通常被认为是随机的,由六个刚体运动参数(三个旋转分量和三个平移分量)表征,通常忽略了微小的可形变运动(比如大脑的脉动)
  • 相反,对于腹部和心脏成像,器官由于呼吸和心跳而产生的内在运动会导致准周期性模式和可变形的非刚性运动,其自由度明显更大。

无论确切的运动模式如何,成像对象的运动都会影响在频率空间(k空间)中获取的MR信号。一方面,位置的变化破坏了对所获取信号中的空间信息进行编码的能力。另一方面,物理MR信号特性受到二阶运动效应的负面影响,例如由于运动引起的磁场不均匀性或自旋效应。因此,在从频率到图像空间重构运动破坏的数据之后,可能会出现复杂的伪影,这无法在简单的过程中进行校正。图1A中大脑和腹部成像的示例性运动损坏图像说明了运动可能阻碍诊断。
fig1A

  • 图1A:大脑,腹部,心脏成像的典型运动模式,以及运动受损(motion-corrupted)和无运动(motion-free)图像的例子。对于大脑成像,通常假设随机刚体运动,这会导致伪影,这取决于确切的采集方案和运动模式。对于心脏和腹部成像,运动通常是可形变的和准周期性的。

目前已经提出了几种策略来减轻运动伪影。第一种,患者的运动可以受到物理限制,例如,仅在患者屏息期间进行腹部扫描,或在成像时使用镇静剂或全身麻醉。第二种,通过选择性地采集特定运动状态下的数据或使用高级采样模式(目前的图像采集方案已被设计为对运动更具鲁棒性)。第三种,目前已经引入了加速和并行成像方法,其优点是采集时间更短,运动事件的机会更少(MRI acceleration)。

除了这些仍然容易受到运动伪影影响的缓解策略之外,目前已经提出了另一组方法,通过明确地去除运动伪影来直接执行运动校正,并通过利用运动模式的规律性来进行补偿,以实现更好的重建。这些方法包括在图像采集过程中应用的前瞻性方法(prospective methods),以及在图像采集后在重建管道中的各个阶段应用的回顾性方法(retrospective methods)。回顾性方法必须处理运动引起的图像信息丢失,例如k空间中的数据不一致。为此,深度学习方法展示出前景,因为它们能够在缺乏完整分析模型的情况下识别复杂模式。

数据和运动仿真

大多数基于学习的MoCo方法依赖于监督训练,即依赖于具有和不具有运动伪影的配对数据。当然,即使是自监督方法也使用配对数据进行定量评估。一些研究已经获得了成对的运动破坏和无运动(GT)图像用于训练和评估。然而,获取大型配对数据集成本高昂,因此,这是运动仿真被广泛使用的原因

在模拟运动伪影时,重要的是要考虑感兴趣解剖结构的典型运动模式。下面,总结了大脑,心脏和腹部成像的常见模拟程序。

大脑

在存在运动的情况下,刚体运动的模拟遵循MRI正向模型: y = ∑ t = 1 T M t F U t x (1) y=\sum_{t=1}^{T}\textbf{M}_{t}\mathscr{F}\textbf{U}_{t}x\tag{1} y=t=1TMtFUtx(1)其中,傅里叶变换 F \mathscr{F} F,采样mask M t \textbf{M}_{t} Mt,运动变换 U t \textbf{U}_{t} Ut被应用于每个时间点 t t t的GT图像 x x x,以生成运动破坏的k空间 y y y。在刚体运动的情况下,运动变换 U t = T t R t \textbf{U}_{t}=\textbf{T}_{t}\textbf{R}_{t} Ut=TtRt,由旋转变换 R t \textbf{R}_{t} Rt和平移变换 T t \textbf{T}_{t} Tt组成。此外,线圈灵敏度或二阶运动效应可以包括在正向模型中,以将模拟扩展到特定应用。

它在数学上等效于模拟图像空间或k空间中的运动。如图2所示,图像空间中的模拟是通过旋转和平移图像并在每个时间步长用变换后的图像的傅立叶变换替换相应的k空间线来执行的。k空间中的模拟基于傅立叶变换的特性:成像对象的旋转对应于k空间中等效的旋转,平移 T \textbf{T} T对应于线性相位斜坡的乘法,这取决于平移参数 a a a和读出方向 k R O k_{RO} kRO上的k空间坐标: T ( y ) = y ⋅ e x p ( − i 2 π a k R O ) (2) \textbf{T}(y)=y\cdot exp(-i2\pi ak_{RO})\tag{2} T(y)=yexp(i2πakRO)(2)无论在哪个域进行模拟,重要的是将运动的时序与MR采集方案相匹配,以模拟真实的伪影。
fig2

  • 图2:基于每个时间步长的 x x x y y y z z z平移和旋转参数,在图像或频域中模拟刚体运动。当在图像域(1)中进行模拟时,平移和旋转参数应用于图像。当在频域(2)中模拟时,相应的k空间线被旋转并与线性相位斜坡相乘(通过箭头可视化)。对于两者,不同时间步长的k空间线被合并到一个损坏的k空间中。

心脏和腹部

( 1 ) (1) (1)可知,通过应用可变形矢量场(DVF,deformable vector field)作为运动变换 U t \textbf{U}_t Ut来实现基于图像的非刚性运动模拟。真实DVF可以通过配准参考图像来获得,例如来自不同运动状态的参考图像。如果可用,可以使用多个时间分辨重建 x t x_t xt来替换 U t x \textbf{U}_{t}x Utx,从而在没有DVF的情况下进行模拟。

与刚性运动相比,直接模拟k空间中的非刚性变形并非易事。因此,心脏和呼吸运动模拟可以在k空间中通过变化的平移来近似。为了模拟周期性运动,在 ( 2 ) (2) (2)中应用具有周期性变化的平移参数的线性相位斜坡,比如 a ( t ) ∝ s i n ( t ) a(t)∝sin(t) a(t)sin(t)。需要注意的是,这是一个非常简化的运动表示。

架构

基于图像的MoCo

基于图像的MoCo方法将受运动影响的图像作为输入,并产生经运动校正的图像作为输出,类似于图像去噪或去模糊任务,如图1B所示。这些方法的不同之处在于a.底层网络架构,b.先验信息的潜在使用,以及c.训练目标。
fig1B

  • 图1B:基于图像的MoCo的经典和对抗性训练目标的可视化。对于经典训练,例如使用voxel intensity-based损失函数 L L L将预测结果与GT图像进行比较。对于对抗性训练,训练额外的鉴别器网络以与生成器网络( L g e n L_{gen} Lgen)竞争并将预测图像与GT( L a d v L_{adv} Ladv)区分开。

对于底层网络架构
图像到图像的翻译任务可以使用卷积编码器-解码器结构,其包括用于特征编码的下采样路径,然后是用于解码提取特征的上采样路径。与U-Net一样,大多数方法使用skip连接将细节从编码器传输到解码器。此外,一些方法连续级联多个编码器-解码器结构。受transformer架构最近在其他领域取得成功的启发,后来的工作采用自注意机制来编码运动伪像的空间上下文。

先验辅助方法
可以修改所提出的架构以利用附加信息。这些现有的辅助方法通过具有共享特征提取的共享编码器和解码器处理多个输入。例如,Ghodrati等人试图通过计算由在动态图像上预训练的辅助网络提取的特征来利用时间信息。此外,动态信息可用于基于配准的方法,其中CNN用于将装仓的数据配准到公共空间中,其组合产生运动校正的输出图像。

训练目标
如图1B所示,在监督设置中的经典网络训练是通过使用基于体素强度的代价函数(即L1或L2)将网络的预测与无运动的GT图像进行比较来执行。然而,条件生成对抗网络(GANs)采用了不同的训练目标。利用鉴别器网络扩展了生成器网络,该生成器网络将运动破坏图像映射为无运动图像,鉴别器网络旨在将预测图像与GT图像区分开。除了对抗损失,其中一些方法依赖于基于体素强度的代价函数作为生成器损失来比较预测图像和GT图像。其他包括感知损失(perceptual loss)、风格迁移损失(style transfer loss)或结构相似性损失(SSIM,structural similarity loss)。除了对抗性方法,Küstner等人提出了另一种使用变分自编码器(VAE)的监督生成训练策略,该策略试图直接从图像对中学习无运动的潜在分布。

为了应对缺乏配对的无运动和损坏的数据,无监督生成模型旨在校正来自无配对数据的运动伪影。由两个GAN组成的CycleGAN架构在(Learning MRI artefact removal with unpaired data)和(Unsupervised Adversarial Correction of Rigid MR Motion Artifacts)中进行了调整。两个生成器,一个破坏无运动图像,另一个校正未配对的损坏图像。对抗性损失可以用来自另一个域的未配对图像来计算,而生成性损失是以无监督的方式在来自同一域的循环变换输入上计算的。刘等人将生成器的潜在表示分解为人工信息和内容信息,并使用从内容翻译中生成的图像来训练网络。这些方法都包括多尺度代价函数。在另一种情况下,Oh等人将运动视为概率欠采样问题,并训练生成器以消除欠采样伪影,他们试图通过组合重复的随机欠采样重建来校正运动破坏的测量Unpaired MR Motion Artifact Deep Learning Using Outlier-Rejecting Bootstrap Aggregation)。

基于k空间的MoCo

与基于图像的方法不同,MoCo还可以利用原始k空间数据的附加信息内容,与MR重建过程相互作用(见图1C)。运动感知重建管道的不同组件可以是基于学习的。在下面的部分中,概述了将经典模块和基于学习的模块结合在一起的方法,以及纯学习的方法
fig1C

  • 图1C:基于k空间的MoCo图解。
  • 将经典模块和基于学习的模块相结合的方法可以分为以下几类:1.替换基于模型重建的不同组件,该方法通过最小化损失函数 L ( θ , x ) L(θ,x) L(θ,x)在找到图像 x x x和相应的运动参数 θ θ θ之间迭代。基于学习的模块以图像初始化、损失函数或运动参数为目标。2.将经典重建与基于学习的损坏k空间测量的运动检测或基于学习的运动场 U t \textbf{U}_{t} Ut估计相结合。3.将经典的运动检测或估计与学习的展开重建相结合,该重建在去噪网络和数据一致性(DC)块之间迭代。
  • 纯粹基于学习的方法包括:4.直接旨在通过在k空间和图像空间中执行卷积或从基于学习的重建中排除运动破坏的k空间测量来校正运动伪影的方法。5.运动补偿方法,其隐式或显式地使用运动信息来实现更高质量的图像重建。一个子类方法将生成重建模型与个人的原始数据相匹配,而运动可以选择性地通过包括变形场来显式建模。

A.经典方法和基于学习的方法相结合:多种方法使用基于学习的MoCo或重建组件扩展了经典框架。可以学习基于模型的重建的一部分、运动分析或重建本身。

替换部分基于模型的重建
基于模型的MoCo算法依赖于运动参数 θ \theta θ和重建图像 x x x的联合估计。这些方法建议用基于学习的组件替换优化过程的不同部分,以实现更快的收敛和理想情况下更稳定的重建(图1C.1)。Kuzmina等人使用CNN作为自动聚焦的损失函数的一部分,其中优化基于图像质量度量。对于基于数据一致性(DC)的优化过程,CNNs或U-Nets被用于运动参数估计,作为运动校正图像的初始化,或者作为重建网络,其权重由依赖于运动参数的超网络定义。相反,Levac等人提出了一种无监督方法,使用基于分数的模型,在无运动图像上训练。所有这些方法的共同点是,网络经过预训练,并在测试时间优化期间用作即插即用组件。此外,所有这些方法都专注于刚体运动,其自由度比非刚体运动小得多。

基于学习的运动分析与经典重建
另一组方法利用了刚体运动的随机性。如图1C.2所示,他们学习受运动影响的k空间测量的检测模型,并用提取的运动时序为经典重建过程提供信息。Eichhorn等人将CNN用于k空间中的line检测,并将这些线分类标签用作基于总变化的重建过程的DC项中的权重。崔等人训练基于图像的CNN来校正运动伪影,并比较原始图像和运动校正图像的k空间,以生成受运动影响的k空间线的欠采样掩码,然后使用经典的压缩感测过程来重构欠采样的原始数据Motion artifact reduction for magnetic resonance imaging with deep learning and k-space analysis)。

在准周期运动的情况下,单个运动破坏的k空间线的假设不适用。运动补偿方法不是针对单个运动事件进行校正,而是利用运动的周期性来对欠采样数据进行更高质量的重建。这些方法学习运动估计,这些估计包含在基于模型的经典重建中。使用基于图像的配准来预测运动场,并将其集成到重建问题的前向算子中。现有的方法在注册网络的输入方面各不相同,即完整图像与图像patch,配对与分组输入。此外,运动估计网络可以进行预训练,也可以与重建问题一起进行优化。

经典运动分析与基于学习的重建
相反,运动检测和估计也可以用经典方法执行,并与学习的基于展开DC的重建相结合(图1C.3)。Rotman等人通过比较来自两个相对线圈元件的信号来检测离散运动定时,并学习展开重建,其中规则化网络分别接收在主导运动状态和剩余运动状态中获取的数据。Miller等人采用了动态图像到单个运动状态的经典时空约束配准。注册的图像被编码并转发到展开的重建中,该重建通过将可用数据分割成子集以自监督的方式进行训练。

B.纯粹基于学习的方法:与A相比,有几种方法将MoCo和图像重建结合在一个纯粹基于学习的框架中。这些可以通过其校正或补偿运动的目的来区分。

基于运动校正目的:所提出的运动校正方法明确旨在去除底层数据中的运动伪影(图1C.4)。Singh等人提出了一种由图像和k空间中的交错或交替卷积组成的网络,用于同时进行刚体MoCo和重建。这种方法被进一步发展为一种数据一致性方法。Oksuz等人提出使用CNN来学习受运动影响的k空间线的欠采样掩码,并使用递归网络重建欠采样数据(Detection and Correction of Cardiac MR Motion Artefacts during Reconstruction from K-space)。在扩展中,他们用分割网络来训练检测和重建网络,从而专门针对感兴趣的下游任务优化MoCo。

基于运动补偿目的:所提出的运动补偿方法利用发生的运动来改善重建结果,同时加快采集时间,如图1C.5所示。空间和时间卷积以级联或并行的方式应用于具有联合或分离时空内核的动态图像序列。为了利用来自相邻帧的进一步信息,Schlenper等人包括数据共享层。Terpstra等人用从预训练模型中获得的运动场扩展了隐式运动补偿重建。相反,有几种方法以端到端的方式明确地学习具有重建问题的运动模型。Huang等人将运动估计和校正模块附加到重建网络中,并用一个组合损失函数训练框架(Dynamic MRI reconstruction with end-to-end motion-guided network)。

评价标准

由于MoCo是作为实现高质量图像重建的一种手段,因此主要基于其最终结果,使用图像质量指标来评估所提出方法的性能。然而,一些人也评估中间运动估计或利用下游任务来评估。下面概述了最常见的评估策略。

图像质量
可以通过分别计算图像质量度量或专家图像质量评级来执行定量或定性图像质量评估。定量图像质量度量可以是通过与GT参考图像进行比较来评估图像质量的全参考度量,也可以是不依赖于单独的GT图像的无参考度量。由于运动伪影的可变性,没有一个单一的图像质量测量对所有可能的伪影敏感。

大多数方法使用了两种试图模仿人类视觉感知的完整参考(reference-full)指标:结构相似性指数(SSIM),用于评估结构信息的退化;峰值信噪比(PSNR),用于将像素误差与最大信号强度进行对比。不太常用的全参考指标是均方误差(MSE)、均方误差根(RMSE)、归一化均方误差、平均绝对(百分比)误差(MAE或MAPE)、归一化互信息(NMI)和视觉信息保真度(VIF)。此外,对于无参考指标(reference-free),如信噪比(SNR)、对比度噪声比(CNR)和Tenengrad,用于评估没有参考图像的图像质量。

下游任务
在某些情况下,MoCo框架不仅旨在提供高质量的重建,还能够完成进一步的下游任务。在这种情况下,下游发现可以独立评估,例如通过计算器官分割上的Dice重叠或计算T2* map上的SSIM和相对误差度量。为了评估MoCo在纵向分析中增加的统计能力,可以采用皮质表面重建和皮质厚度相关性分析等结构元素的手动质量控制。特别是在没有参考的情况下,可以分析冠状血管等小解剖特征的清晰度。在心脏成像中,可以评估心脏功能分析。此外,作为MR MoCo的一个重要最终目标,可以对运动受损和校正扫描的临床结果进行比较。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这四种订货系统不能选(四):不能源码交付

订货系统在现代企业管理中具备着重要的地位和作用。通过订货系统,企业能够更好地掌握市场需求,提高订单的准确性和及时性,优化企业的供应链管理,并加强与供应商之间的合作与沟通。今天我们分享最后一个不能选的、也是最重要的一点…

ArcGIS Pro发布地图服务(影像、矢量)

本文示例使用(因为portal的授权的版本只有10.5的,故使用10.5进行示例): 软件:ArcGIS Pro3.0.1(破解版), ArcGIS Portal10.5 当ArcGIS Pro和Portal不在一个机器或者版本不一样的时候&#xff0…

日常问题——git推送代码被拒绝

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 Push to origin/master was rejected 提交代码时提示,被拒绝。 二、问题原因 …

(七)Unity VR项目升级至Vision Pro需要做的工作

Vision Pro 概述 定位为混合现实眼镜,对AR支持更友好 无手柄,支持手(手势)、眼(注视)、语音交互 支持空间音频,相比立体声、环绕声更有沉浸感和空间感 支持VR/AR应用,支持多种应用模…

零基础官网下载jdk

Oracle 官网总是隔一段时间一改版,时间长了博客可能不适用,望注意,但是精髓不变。 Oracle官网 官网地址百度搜索,其他任何官网都一个套路,但要识别下一些广告网站会模仿官方网站。 官网地址:https://www.…

k8s服务注册发现

Service 是 将运行在一个或一组pod上的网络应用程序公开为网络服务的方法。 定义service前端为service名称、ip、端口等不变的部分,后端为符合标签选择的pod集合 注册 通过api server提交注册service请求到DNSservice随后得到clusterIP(虚拟ip地址&am…

UHPC的疲劳计算——兼论ModelCode2010的适用性

文章目录 0. 背景1、结论及概述2、MC10对于SN曲线的调整(囊括NC、HPC、UHPC)2.1 疲劳失效曲面的构建2.2 新模型的验证 3、MC10对于疲劳设计强度的调整及其背后的原因4. 结语 0. 背景 今年年初,有一位用UHPC做混凝土塔筒的同行告诉我&#xf…

多平台1688、淘宝、京东搜索商品聚合接口,示例返回值说明

多平台根据关键词取商品列表 API 返回值说明 item_search-根据关键词取商品列表 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)Taobao。拼多多。京东,1688API 接口测试secretString是调用密钥api_nameString是A…

Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合

文章目录 如何利用pytorch创建一个简单的网络模型?Step1. 感知机,多层感知机(MLP)的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…

我们为什么需要API管理系统?

我们为什么需要API管理系统? 随着web技术的发展,前后端分离成为越来越多互联网公司构建应用的方式。前后端分离的优势是一套Api可被多个客户端复用,分工和协作被细化,大大提高了编码效率,但同时也带来一些“副作用”:…

stm32g070的PD0/PD2 PA8和PB15

目前在用STM32G070做项目,其中PD2TIMER3去模拟PWM,PD0用作按键检测,测试发现PD0低电平检测没有问题,高电平检测不到,电路图如下图所示: 用万用表测试电平,高电平1.0V左右,首先怀疑硬…

高级SQL分析函数-窗口函数

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 SQL语句中,聚合函数在统计业务数据结果时起到了重要作用,…

nginx keepalived 本地二进制部署

文章目录 安装 nginx安装 keepalived卸载 nginx卸载 keepalived 安装 nginx wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -xf nginx-1.24.0.tar.gz cd nginx-1.24.0/ ./configure --with-stream --prefix/usr/local/nginx make && make install修改nginx…

关于ChatGPT抽样调查:78%的人用于搜索,30%的人担心因它失业

人工智能早已不再被视为未来科技,而是越来越多地应用在时下人们的生活之中。根据DECO PROTESTE的调查,大约72%的葡萄牙人认为人工智能已经活跃于他们的日常。[1] 随着ChatGPT对各个行业的影响,也引发了人们关于这种人工智能模型潜力的争论&a…

【LeetCode】543.二叉树的直径

题目 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root [1,2,3,4,5]…

pwm接喇叭搞整点报时[keyestudio的8002模块]

虽然现在查看时间很方便,但是其实好像我的时间观念却越来越差。于是决定搞一个整点报时,时常提醒自己时光飞逝,不要老是瞎墨迹。 这篇主要讲一下拼装方式和配置,就差不多了。不涉及什么代码。3针的元器件,去掉正负接线…

地毯(暴力+差分两种方法)

题目描述 在 nx n 的格子上有 m 个地毯。 给出这些地毯的信息,问每个点被多少个地毯覆盖。 输入格式 第一行,两个正整数 n,m。意义如题所述。 接下来 m 行,每行两个坐标 (x_1,y_1) 和 (x_2,y_2),代表一块地毯,左上…

SQL-每日一题【1341. 电影评分】

题目 表:Movies 表:Users 请你编写一个解决方案: 查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。 …

Ubuntu22.04复现SHADEWACHER(手动安你就慢了)

因为我是打算跑TC数据集,所以跳过audit安装。 我的Ubuntu使用的是清华源。 1. Parser Setup 1.1 g apt install g1.2 neo4j Ubuntu22.04换什么源都会导致无法定位软件包,添加neo4j的官方源又会导致不信任的源。 22.04以下的版本,直接用命…

div输入框的文字超过指定行数用省略号表示css

实现效果:超过四行用省略号表示 实现方法: .text{overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 4; // 自定义行数-webkit-box-orient: vertical; }