人工智能/深度学习

使用 NVIDIA Clara AGX 开发工具包开发端到端实时应用程序

NVIDIA Clara AGX 开发工具包与 us4R 超声波开发系统一起,可以快速开发和测试用于超声成像的实时 AI 处理系统。 Clara AGX 开发套件具有 ARM CPU 和高性能 RTX 6000 GPU 。 us4R 团队为超声系统设计师提供了开发、原型化和测试端到端软件定义超声系统的能力。 Clara AGX 正在启动软件定义医疗仪器的时代,该仪器具有可重构管道,而无需改变硬件。

us4us 硬件和 SDK 提供端到端的超声算法开发和射频处理平台,高端 Clara AGX GPU 实现实时深度学习和 AI 图像重建和推断。通过这种方法,整个系统工程团队受益:波束形成专家可以创建最佳波束策略,人工智能专家可以设计和部署下一代实时算法。

这种硬件和软件相结合的平台使研究实验室和商业供应商的超声波开发民主化,以开发新的功能。设计、原型和测试功能硬件不再需要巨额资金预算。设备管道的每个阶段都可以修改。数据采集、数据处理、图像重建、图像处理、 AI 分析和可视化都在软件中定义,并以低延迟性能实时执行。该系统是完全可配置的,可以使用 AI 或传统方法创建新的射频传输波形和波束形成算法。

通过 NVIDIA 将 X-6 SmartNIC 100Gb / s 以太网和 RDMA 数据传输到 GPU ,可以实现超快、低延迟的端到端数据传输。 NVIDIA 增压式 GPU 可以围绕现有的传统高级成本系统运行。它能够改进图像重建、去噪和管道中高度先进和复杂算法的信噪比和实时处理。

GPU 具有足够的净空,可同时运行多个实时临床推断预测,包括测量、操作员指导、图像解释、组织和器官识别、高级可视化和临床覆盖。

Clara AGX 硬件的临床应用商业化将与第三方供应商提供的医疗级硬件一起提供,其结构紧凑且节能 CPU + GPU SoC 形状因数与自动驾驶汽车应用中的形状因数相似。

Clara AGX 开发工具包是一款高端性能工作站,专为开发医疗应用而设计。该系统包括一个 NVIDIA RTX 6000 GPU ,在峰值性能下提供 200 多个 INT8 AI TOP 和 16 . 3 FP32 TFLOP ,并具有 24 GB 的 VRAM 。这为运行多个模型留下了足够的空间。使用 100G 以太网 Mellanox ConnectX-6 网络接口卡( NIC ),可以与传感器进行高带宽 I / O 通信。

NVIDIA 合作伙伴目前正在使用 Clara AGX 开发工具包开发超声波、内窥镜检查和基因组学应用。

The Clara AGX Developer Kit showing the inside of the case with key components highlighted, NVIDIA Jetson AGX Xavier, NVIDIA Mellanox ConnectX-6, and NVIDIA RTX 6000 GPU.
图 1 . Clara AGX 显影剂套件

us4R 和 NVIDIA Clara AGX

A front-facing photo of the Ultrasound Research System
图 2 。 us4R lite 超声研究系统

us4us 有限公司提供两种系统:

  • 高级 us4R ,最多支持 1024 个 TX / 256 个 RX 通道
  • 具有 256 个 TX / 64 个 RX 通道的便携式 us4R lite

两者都使用 PCIe 流式体系结构进行低延迟数据传输,并使用 GPU 进行原始超声回波信号的可扩展处理。 us4OEM 超声波前端模块支持 128TX / 32RX 模拟通道和高吞吐量 3GB / s PCIe Gen3 x4 数据接口(图 2 )。

A diagram showing the connections between four pieces of hardware. From left to right, the Ultrasound Probe Connector uses 128-ch tx/rx connections to the us4R-lite system. Next, the us4R-lite connections over PCIe Gen3 x4 to the NVIDIA Clara AGX. Last, the NVIDIA Clara AGX uses the dGPU to output to the display.
图 3 。 Us4r lite 和 Clara AGX 平台

端到端,软件定义的超声波设计

ARRUS 包是用于提供一个高级硬件抽象层的 US4R 的 SDK ,它使系统编程在 Python 、 C ++或 MATLAB 中。硬件编程通过定义射频模块来执行,包括以下内容:

  • 有源发射( TX )探头元件
  • 传输参数,如发送电压、发送波形和发送延迟
  • 接收( RX )孔径和采集参数,如增益、滤波器和时间增益补偿

常用的 TX / RX 序列,如经典线性扫描、平面波成像( PWI )和合成发射孔径( STA )是预配置的,可以快速实现。自定义序列配置有用户定义的低级参数,如 TX / RX 孔径掩模和 TX 延迟。

ARRUS 包还包括用于图像重建的许多标准超声处理算法的 Python 实现,包括原始射频数据、射频数据预处理(数据滤波、正交解调等)、波束形成( PWI 、 STA 和经典方案)以及 B 模式图像的后处理。

这些算法是用于构建任意成像管道的构建块,可以处理 us4R 系统产生的射频数据流。 GPU cuPy 提供了加速的数值例程。 DLPack 指定了一种通用的内存张量结构,可实现机器学习框架和 GPU 之间的数据共享在使用 RDMA 处理库的同时,在它们之间复制数据不需要额外的开销。 DLPack 界面提供对 TensorFlow 、 PyTorch 、 Chainer 和 MXNet 中预定义或用户开发的深度学习模型的访问。

A diagram showing how the us4OEM Drivers and NVIDIA GPU Drivers interact with the US4US McCoy Docker container.
图 4 。此版本的 NGC 容器软件示意图

US4US 超声波演示

通过结合软件和硬件堆栈,您可以在不到一页易读的 Python 代码中快速实现具有可配置参数的超声工作流程。在本节中,我们将向您展示如何使用 ARRUS API 、 us4R lite 平台和 Clara AGX DevKit 在几分钟内创建您自己的超声成像管道。

下面的代码示例应适用于适当的环境。但是,我们建议直接通过NGC使用 Docker 容器。在/ us4us _ examples / mimicknet-example . ipynb 的容器中,有一个交互式 Jupyter 笔记本可以帮助您完成此演示。

首先导入相关库,包括 ARRUS 、 NumPy 、 TensorFlow 和 CuPy :

# Imports for ARRUS, Numpy, TensorFlow and CuPy
 import arrus
 import arrus.session
 import arrus.utils.imaging
 import arrus.utils.us4r
 import numpy as np
 from arrus.ops.us4r import (Scheme, Pulse, DataBufferSpec)
 from arrus.utils.imaging import ( Pipeline, Transpose,  BandpassFilter,  Decimation,  QuadratureDemodulation, EnvelopeDetection, LogCompression, Enqueue,  RxBeamformingImg,  ReconstructLri,  Sum,  Lambda,  Squeeze)
 from arrus.ops.imaging import ( PwiSequence )
 from arrus.utils.us4r import ( RemapToLogicalOrder )
 from arrus.utils.gui import ( Display2D )
 from utilities import RunForDlPackCapsule, Reshape
 import TensorFlow as tf
 import cupy as cp 

接下来,实例化 PWI Tx 和 Rx 序列。在PwiSequence函数中定义从 US4US 超声系统提取的数据的参数。

seq = PwiSequence(
     angles=np.linspace(-5, 5, 7)*np.pi/180,# np.asarray([0])*np.pi/180,
     pulse=Pulse(center_frequency=6e6, n_periods=2, inverse=False),
     rx_sample_range=(0, 2048),
     downsampling_factor=2,
     speed_of_sound=1450,
     pri=200e-6,
     sri=20e-3,
     tgc_start=14,
     tgc_slope=2e2) 

定义序列后,加载深度学习模型参数。为此,您有两个不同的深度神经网络选项,用于提高 B 模式图像输出质量,都可通过 NGC 下载。

斯坦福大学研究人员的NN _模式利用波束形成低分辨率图像( LRI )的神经网络生成去斑图像。 LRI 是在单个合成孔径传输之后创建的;在这种情况下,一个平面波将不均匀化。通过将 LRI 序列相干地相加,可以将其合成为高分辨率图像( HRI )。

生成对抗网络( GANs )模型用于模拟商业超声系统中的 B 模式图像后处理。该算法使用标准延迟和求和( DAS )重建和 B 模式后处理管道,并使用 MimickNet CycleGAN 。有关更多信息,请参阅模仿网络,模仿黑箱约束下的临床图像后处理

对于本例,您将加载 MimickNet CycleGAN 。除了加载权重外,您还实现了在下一步实现方案定义时所需的简单normalizemimicknet_predict包装函数。

# Load MimickNet model weights
 model = tf.keras.models.load_model(model_weights)
 model.predict(np.zeros((1, z_size, x_size, 1), dtype=np.float32))
 
 def normalize(img):
     data = img-cp.min(img)
     data = data/cp.max(data)
     return data

 def mimicknet_predict(capsule):
     data = tf.experimental.dlpack.from_dlpack(capsule)
     result = model.predict_on_batch(data)
  
# Compensate a large variance of the image mean brightness.
     result = result-np.mean(result)
     result = result-np.min(result)
     result = result/np.max(result)
     return result 

您可以使用Scheme功能将所有部件组合在一起。Scheme功能获取 tx / rx 序列定义的参数:输出数据缓冲区、超声波设备工作模式和数据处理管道。这些参数定义了数据采集、数据处理和显示推断结果的工作流。

下面的代码示例显示了Scheme定义,其中包括前面定义的序列、 MimickNet 预处理和推理包装函数。 placement 参数表示处理管道在 Clara : 0 上运行,它在 GPU AGX 开发工具包上提供 GPU 加速。

scheme = Scheme(
     tx_rx_sequence=seq,
     rx_buffer_size=2,
     output_buffer=DataBufferSpec(type="FIFO", n_elements=4),
     work_mode="HOST",
     processing=Pipeline(
         steps=(
             ...
             ReconstructLri(x_grid=x_grid, z_grid=z_grid),
             # Image preprocessing
             Lambda(normalize),
             Reshape(shape=(1, z_size, x_size, 1)),
             # Deep Learning inference wrapper
             RunForDlPackCapsule(mimicknet_predict)
             ...
             Enqueue(display_input_queue, block=False, ignore_full=True)
         ),
         placement="/GPU:0"
     )
 ) 

连接到 US4US 设备,上载方案序列,然后启动显示队列。

     us4r = sess.get_device("/Us4R:0")
     us4r.set_hv_voltage(30)
 
     # Upload sequence on the us4r-lite device.
     buffer, const_metadata = sess.upload(scheme)
     display = Display2D(const_metadata, cmap="gray", value_range=(0.3, 0.9),
                         title="NNBmode", xlabel="Azimuth (mm)", ylabel="Depth (mm)",
                         show_colorbar=True, extent=extent)
     sess.start_scheme()
     display.start(display_input_queue)
     print("Display closed, stopping the script.") 

您的设备现在显示超声成像管道的结果。您还可以轻松地修改此管道,以实现自己最先进的深度学习算法。图 5 显示了演示中比较传统延迟和求和算法(左)和模拟网络模型(右)的示例输出。

此演示的代码可通过NGChttps://ngc.nvidia.com/catalog/containers/nvidia:clara-agx:agx-us4us-ultrasound下载 Docker 映像。

结论

Clara AGX 正在启动软件定义医疗仪器的时代,该仪器具有可重新配置的管道,而无需更改硬件。将 Clara AGX 开发工具包与 us4R 超声波开发系统相连接,可以帮助您轻松快速地开发实时 AI 处理系统。凭借 RTX 6000 GPU 和 ARM CPU 的高性能,您可以充分利用嵌入式硬件生态系统来开发自己的最先进的特定于任务的算法。

有关 us4R lite 系统的更多信息,请联系us4us。 Clara AGX 开发工具包目前仅适用于 NVIDIA Clara 开发者合作伙伴计划的成员。

 

Tags