APP下载

EBSD 花样菊池带的快速识别

2022-11-12解洪力王善瑞

华东交通大学学报 2022年4期
关键词:外置线程花样

解洪力,韩 明,王善瑞

(华东交通大学材料科学与工程学院,江西 南昌 330013)

电子背散射衍射 (electron backscatter diffraction,EBSD)作为扫描电子显微镜的一种常规附件,同时具备了X 射线分析和透射电子显微镜中电子衍射的特点,在材料科学和地球科学等领域得到了广泛的应用,如单晶体取向测定[1-2],多晶体织构分析[3-4]、相鉴别[5-6]、晶粒尺寸测量[7-8]、应力应变测定[9-10]和地壳构造变形分析[11-12]等,EBSD 技术已经成为材料微观表征不可或缺的重要手段。

EBSD 花样含有材料丰富的晶体学信息, 一张典型的EBSD 花样通常含有几十条可见的菊池带,由于Hough 变换[13]被成功用于识别这些菊池带,实现了已知晶体晶面和带轴指数的快速标定。 特别是上世纪九十年代Lassen[14]改进的Hough 变换,进一步提高了EBSD 花样的识别和标定速度,EBSD 技术得到了广泛推广。如今,英国的Oxford 公司、美国的EDAX 公司和德国的Bruker 公司几乎垄断了EBSD 领域硬件和软件的国内外市场。从原理上说,传统Hough 变换算法只能识别图像中的直线特征,但是EBSD 衍射几何决定了花样中的菊池带具有双曲线状的边界。 为了直接识别菊池带的双曲线边界,Maurice 等[15]提出了一种三维Hough 变换的算法,然而这种方法依赖于准确的投影源(PS)位置,并没有从根本上解决Hough 变换结果误差大的问题,所以该方法并未在EBSD 实际应用中得到推广。相比于三维Hough 变换,传统Hough 变换具有稳定性高、不受投影源位置误差影响等优势,至今上述三大厂商仍采用基于中央处理器(central processing unit,CPU) 的传统Hough 变换识别EBSD 花样中的菊池带。 由于Hough 变换是一种一对多的图像变换算法,即EBSD 花样X-Y 坐标系中每个像素映射到ρ-θ 坐标系时都变成一条曲线, 这种映射关系决定了Hough 变换的耗时随图像像素数量的增加呈指数级增长,所以计算量大且耗时长是Hough 变换算法的主要短处。 标定已知晶体的EBSD 花样时,Hough 变换的耗时几乎占据了标定的总时长, 在花样像素数量少且仅识别四条不共带轴的菊池带情况下,目前最先进的EBSD 商业软件标定速度最快可达到4×103FPS[16],但仍远远慢于EBSD 花样的采集速度。 此外,降低图像的像素数量虽然能显著提高Hough 变换速度, 但会导致Hough 变换结果的误差增大, 从而明显降低EBSD 花样标定结果的可信度。 在不影响EBSD 花样标定结果的情况下,如何快速实现Hough 变换已成为EBSD 用户和厂家共同关注并亟待解决的关键问题。

计算机技术经过近几十年的发展,CPU 已经成为超大规模集成电路,芯片中的晶体管数量不可能无限制增加,摩尔定律早已失效,为提高计算速度,CPU 由单核发展出多核, 但由于保留了大量的缓存,多核CPU 的计算能力依然受限。NVIDIA 公司于2006 年基于显卡提出统一计算设备架构(compute unified device architecture,CUDA)[17],利用CUDA 可实现计算的高度并行化。 从硬件角度来讲,目前一个CPU 至多拥有十几个运算核心,而显卡中运算核心的数量能高达几千个, 庞大的核心数量为CUDA的并行计算提供了硬件支持,CUDA 高性能并行计算是未来的发展趋势。

本文分别采用CPU 的多线程技术和CUDA 高性能并行计算技术对EBSD 花样做Hough 变换,研究了CPU 线程数量、EBSD 花样(原始图像)像素数量和Hough 变换结果图像(目标图像)像素数量对Hough 变换时间的影响, 从不同并行模式和显卡安装方式两个角度对比了CPU 和CUDA 的Hough 变换时间,最后比较了两者的识别结果。

1 方法

本实验基于容天工作站对EBSD 花样做Hough变换,操作环境为Windows10 系统,编程使用C 语言,CPU 型号为Xeon E5-2643(6 核),显卡型号为Tesla K20c(2496 核),程序基于VS2017 软件编写,CUDA 版本为10.2,图像处理使用OpenCV 库。

在二维图像X-Y 平面坐标系中, 直线L 的方程可以表示为

式中:k 为斜率,b 为截距。

如图1(a)所示,连接X-Y 平面内的任意两点(A1,A2)所形成的直线方程如式(1)所示,过点O 作直线L 的垂线,垂足为A0,线段OA0与X 轴的夹角为θ,原点O 与直线L 的距离为ρ。 根据式(2)可以将二维图像X-Y 坐标系中一个点转换到ρ-θ 参数坐标系中变成一条曲线

图1 Hough 变换原理图Fig. 1 Schematic diagram of Hough transform

X-Y 坐标系中点A1和点A2分别对应ρ-θ 坐标系中曲线a1和曲线a2,所以ρ-θ 坐标系中两条曲线的交点对应X-Y 坐标系中直线。 从图1(b)可以看出,两条曲线在点N 处相交,即参数坐标系中点N 代表二维图像坐标系中的直线L。通过上述方式,Hough 变换将二维图像坐标系中直线映射到参数坐标系中形成交点,从而把检测任意直线的问题转化为统计交点的问题。

本文在研究不同并行模式对Hough 变换时间的影响时,因启动线程、开辟资源等需要消耗时间,若只统计一张EBSD 花样的Hough 变换时间,其结果具有不确定性, 这里求取1 000 张EBSD 花样的平均时间作为Hough 变换时间,减小了实验数据的误差与波动。 此外,为了保证Hough 变换结果图像的真实性,原始图像像素数量应该大于目标图像像素数量。 另一方面,在探究CUDA 技术对Hough 变换时间的影响时, 显卡与主板共有两种连接方式,第一种是通过PCIE X16 插槽直接将显卡连接主板,实现显卡的内置,这也是目前最常见的一种连接方式;第二种是外置显卡,首先将PCIE X1 转接口的一端连接到主板, 另一端通过USB3.0 线将PCIE X1 转接板与PCIE X16 底座相连, 最后将显卡连接到PCIE X16 底座上。 需要指出的是, 利用CUDA 对EBSD 花样做Hough 变换,首先从CPU 端将数据传递到显卡端, 然后利用CUDA 进行计算,最后从显卡端将计算结果回传给CPU 端, 所以Hough 变换时间为数据传递时间和CUDA 运算时间之和。

2 结果与讨论

图2 是一张EBSD 花样及其Hough 变换的结果,从图2(b)中可以看到每个方框中存在一个清晰的亮点,在亮点的上下两侧的箭头所示位置存在一对黑点,其中每个黑点代表菊池带的一条边界。

图2 EBSD 花样的Hough 变换Fig.2 Hough transform of EBSD pattern

2.1 图像像素数量对运算时间的影响

从图3 可以看出, 利用CPU 对EBSD 花样做Hough 变换, 随着CPU 线程数量的增加,Hough 变换时间明显减少。在CPU 线程数量增加至核心数量之前,Hough 变换时间减少较快, 如CPU 线程数量由1 增加至2 时,Hough 变换时间几乎减小一半,这表明CPU 的多核并行计算优势得到了充分发挥;当线程数量超过核心数量,即线程数量大于6,CPU 会自动开启超线程,此时一个核心可以同时调度两个线程。 若持续增加CPU 的线程数量,Hough 变换时间仍会减少, 但减少幅度会有所降低, 其原因是CPU 在调度线程时存在切换线程和开辟资源等方面的时间损耗,但利用CPU 的多核技术和超线程技术,可以减少Hough 变换时间,加快EBSD 花样的菊池带识别速度。

图3 CPU 影响Hough 变换的因素Fig.3 Factors influencing Hough transform by CPU

图3 显示了在同一CPU 线程数量情况下,不同原始图像、 不同目标图像对Hough 变换时间的影响,当原始图像像素数量或者目标图像像素数量增加时,Hough 变换时间都会对应增加,但两者的增加幅度有所不同。 以1 个CPU 线程为例,在A 的情况下,即原始图像和目标图像像素数量都为40 像素×40 像素,此时Hough 变换时间为4.8 ms。 B 与A 相比, 目标图像的横向和纵向像素数量都增加一倍,Hough 变换时间对应增加一倍, 而C 相比于A 而言, 原始图像横向和纵向像素数量都增加一倍,Hough 变换时间增加至原来的4 倍。由此可见,原始图像像素数量对Hough 变换时间的影响更大,这是由Hough 变换算法决定的。 原始图像利用二重循环扫描每个像素点得到对应坐标,原始图像横向和纵向的像素数量都增加一倍,即X 轴方向和Y 轴方向上像素数量均增加一倍,扫描所需的工作量增大至原来的4 倍;目标图像仅通过一重循环扫描θ 轴方向的坐标,然后利用式(2)求解得出ρ 轴方向的坐标,即ρ 轴不需要通过循环求解。 所以当目标图像横向和纵向的像素数量都增加一倍时,扫描所需的工作量只增加一倍。 D 与A 相比,同时增加原始图像和目标图像的像素数量,Hough 变换时间大幅增加。 综上所述,CPU 线程数量越多,图像像素数量越少,Hough 变换时间越短。

结合图3 所示CPU 的Hough 变换数据, 表1给出了CPU 与CUDA 的详细对比, 无论是原始图像还是目标图像,图像像素数量增加,Hough 变换时间均增加。需要指出的是,CUDA 的加速比与图像像素数量有关,表中第1 行与第3 行的数据给出了原始图像像素数量对CPU 时间、CUDA 时间和加速比的影响。 当原始图像像素数量由40×40 增加至80×80 时,CPU 时间从0.56 ms 增加至2.19 ms,CUDA时间从0.056 ms 增加至0.087 ms, 加速比从10 增加至25.17, 可见原始图像像素数量增加,CUDA 的加速比增大;第1 行与第2 行的数据相比,目标图像像素数量从40×40 增加至80×80,CPU 时间和CUDA 时间都增加, 但加速比从10 降低至7.71,CUDA 的加速程度减小。综合分析,当图像像素数量增加时,CPU 时间和CUDA 时间均增加; 原始图像像素数量增加,CUDA 的加速比增大,目标图像像素数量增加,CUDA 的加速比减小。 同理,第1 行与第4 行数据相比, 原始图像像素数量和目标图像像素数量均增加,CUDA 的加速比为21.06,处于7.71 至25.17 区间内,符合上述推断。

表1 CPU 与CUDA 的Hough 变换时间对比Tab.1 Comparison of Hough transform time between CPU and CUDA

2.2 不同并行模式下Hough 变换时间的对比

如图4 所示,同一像素数量的情况下,与CPU相比,基于CUDA 的Hough 变换速度更快,原因是显卡的线程数量明显多于CPU 的线程数量。

另外, 从图4 中还可以看出, 基于CPU 的Hough 变换时间随原始图像像素数量增加呈指数级增长, 这与图3 所示的CPU 实验结果一致。 基于CUDA 进行Hough 变换,因原始图像中一个像素对应CUDA 中一个线程, 所以增加原始图像像素数量,基于CUDA 的Hough 变换时间近似呈线性关系增长。 此外,目标图像像素数量增加,θ 轴方向上扫描工作量对应增加,ρ 轴方向上扫描工作量无影响,所以CPU 和CUDA 的Hough 变换时间均近似呈线性关系增长。

图4 不同并行模式下Hough 变换时间的对比Fig.4 Comparison of Hough transform time under different parallel modes

2.3 显卡安装方式对CUDA 的Hough 变换时间影响

一般来说,显卡数量越多,程序的计算能力越强,通常主板上的显卡插槽数量有限,内置显卡的方式满足不了日益增长的计算需求,可通过外置方式将显卡与主板连接。

实验结果如图5 所示,无论是内置显卡还是外置显卡,随着图像像素数量增加,Hough 变换时间均对应增加。 但需注意的是,外置显卡的Hough 变换时间约为内置显卡的两倍,而两者的Hough 变换计算时间相同,时间差距主要在CPU 端到显卡端的数据传递环节,可以推断,外置显卡虽会降低数据的传递速度,但并未影响CUDA 的计算速度。 另外还可以发现,基于CUDA 的Hough 变换时间主要消耗在数据传递环节, 计算环节并未占用过多时间,这说明显卡的并行计算能力并没有得到充分发挥,所以本实验的程序还存在一定的优化空间。

图5 显卡安装方式对CUDA 的Hough 变换时间影响Fig.5 Influence of graphics card installation mode on CUDA Hough transform time

由此可见,利用CUDA 高性能并行计算技术可以大幅度减少Hough 变换时间,提高EBSD 花样中菊池带的识别速度。 在内置显卡的情况下,原始图像像素数量和目标图像像素数量均为40×40, 基于CUDA 的Hough 变换总时间为0.056 ms, 即EBSD花样中菊池带的识别速度最快可达到1.7×104FPS。这已远远超过Oxford 公司商业软件4×103FPS 的识别速度,基于CUDA 的Hough 变换将成为快速识别EBSD 花样菊池带的一个发展趋势。

2.4 不同并行模式下EBSD 花样的识别对比

从上述实验结果可知,基于CUDA 的Hough 变换速度远远快于CPU,本实验对比了CPU 与CUDA的菊池带识别结果。 菊池带上的数字代表Hough 变换结果的最强峰顺序,即Hough 变换结果的峰值越强,菊池带特征越明显,EBSD 花样所对应的菊池带序号越小,结果如图6 所示。

图6(e)与图6(i),图6(f)与图6(j)相比,两种并行模式的菊池带识别顺序完全一致,识别结果无明显差异;图6(g)和图6(k)所示的菊池带识别顺序有所不同,具体表现为5 号菊池带和6 号菊池带的识别顺序相反,这说明两种并行模式Hough 变换结果图像的菊池带特征强弱程度相反;图6(h)与图6(l)相比,两种并行模式识别的6 号菊池带并非同一条菊池带,但可以肯定的是,两条6 号菊池带都是清晰存在的。 另一方面,从Hough 变换结果图像上分析,图6(a)~图6(d)与图6(m)~图6(p)的对比可知,CPU 与CUDA 对同一张EBSD 花样的Hough变换结果没有可见的差异。 综上所述,CPU 与CUDA 虽在菊池带识别细节方面有轻微差异, 但最终两者的识别结果基本相当。

图6 4 张EBSD 花样中菊池带的识别结果Fig.6 Identification results of Kikuchi bands in four EBSD patterns

3 结论

本文分别使用CPU 与CUDA 对EBSD 花样做Hough 变换,研究了图像像素数量、不同并行模式和显卡安装方式对Hough 变换时间的影响,最后比较了两者的EBSD 花样识别结果,主要结论如下。

1) CPU 线程数量增加,Hough 变换时间减少;图像像素数量增加,CPU 与CUDA 的Hough 变换时间均增加。

2) CPU 的原始图像像素数量与Hough 变换时间呈指数关系增长,目标图像像素数量与Hough 变换时间近似呈线性关系增长;CUDA 的原始图像像素数量与目标图像素数量均与Hough 变换时间近似呈线性关系增长。

3) 内置显卡和外置显卡的Hough 变换计算时间几乎完全相同,但外置显卡的Hough 变换总时间约为内置显卡的两倍,原因在于CPU 端到外置显卡端的数据传递需要较长时间。

4) CPU 与CUDA 的菊池带识别结果没有本质区别,但CUDA 的菊池带识别速度远远快于CPU。

猜你喜欢

外置线程花样
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
雷电3接口 笔记本叫板台式机的底气之源
花样人生
无外置缓存设计饥饿鲨推出TL100系列入门级SSD
笔记本福音AMD也推外置显卡
绽放花样
花样折纸
3月,花样春天