• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Spark平臺在單光子成像測量矩陣生成與評估中的應用

      2019-08-14 10:02:22王興達劉雪峰
      計算機應用與軟件 2019年8期
      關鍵詞:單光子分辨率集群

      王興達 劉雪峰

      1(中國科學院國家空間科學中心 北京 100190)2(中國科學院大學 北京 100049)

      0 引 言

      近年來,壓縮感知(CS)理論得到了越來越多的關注。單光子成像是利用壓縮感知理論的一個典型應用。原理是先將物體成像在數字微鏡陣列上,利用測量矩陣的調制作用和單光子探測器的測量值,就能夠在低采樣率條件下利用單點探測器取得良好的成像效果[1]。在實驗中起調制作用的測量矩陣是非常重要的一環(huán),通常在理想的單光子成像實驗中需要30%~50%采樣率的測量矩陣才能夠恢復出效果比較好的圖像[2]。對于高分辨率的單光子成像實驗,所需測量矩陣數量可達百萬級別。普通計算機利用MATLAB等軟件生成一個FHD(1 920×1 080)分辨率的全采樣率測量矩陣通常需要20小時以上的時間,大大降低單光子成像實驗的效率,成為單光子成像實驗中的一個痛點[3]。

      近幾年隨著以Apache Spark為代表的分布式計算技術的發(fā)展為解決這一痛點帶來了曙光。Spark平臺本身是一個分布式的計算框架,通常用于大規(guī)模的數據處理[4],本文通過Spark中的parallel算子生成簡單RDD,然后通過對該RDD的MapPartition操作能夠將測量矩陣生成和評估任務均勻分配到各個機器節(jié)點的Executor上進行計算作業(yè),利用Spark平臺調度集群的

      計算性能。實驗證明該方法具有良好的加速比和拓展性,滿足了單光子成像實驗中對于測量矩陣的頻繁生成需求,大幅降低了成像實驗的時間成本。

      1 單光子成像與Spark平臺

      1.1 壓縮感知理論

      壓縮感知(Compressed sensing),也被稱為壓縮采樣(Compressive sampling)或稀疏采樣(Sparse sampling),是一種尋找欠定線性系統(tǒng)的稀疏解的技術[5]。壓縮感知理論指出:只要信號是可壓縮的或在某個變換域是稀疏的[6],那么就可以用一個與變換基不相關的觀測矩陣將變換所得高維信號投影到一個低維空間上[7],然后通過求解一個優(yōu)化問題就可以從這些少量的投影中以高概率重構出原信號,可以證明這樣的投影包含了重構信號的足夠信息[8]。在過去的幾年內,壓縮感知作為一個新的采樣理論,它可以在遠小于Nyquist 采樣率的條件下獲取信號的離散樣本,保證信號的無失真重建[9]。

      1.2 單光子成像

      單光子成像是壓縮感知理論的一個典型應用。借鑒計算成像中的高通量測量的思想,如圖1所示,首先用光源打在物體上,通過成像透鏡將物體的像成在可調制的數字微鏡陣列(DMD)上,再利用測量矩陣對DMD進行0-1的掩膜調制,每個測量矩陣都隨機調制圖像的部分像素點,再用一個收集透鏡將這些像素點的光路聚集到一個探測點上,利用單光子探測技術對其進行測量,得到光子計數測量值[10]。最后,通過TVAL3等壓縮感知恢復算法及測量矩陣和測量值就能進行圖像恢復,這樣就能夠利用單點探測器取得良好的成像效果[11]。根據壓縮感知理論的成像經驗,每次成像實驗大約需要30%~50%的采樣率才能取得比較好的成像效果。測量矩陣的數目與采樣率的關系如下:

      matrix_num=width×height×sample_rate

      圖1 單光子成像原理圖

      在高分辨率的情況下,所需的測量矩陣數目往往是百萬級別的,普通計算機利用MATLAB生成一次FHD分辨率的測量矩陣大約需要20小時,非常影響單光子成像實驗的效率。

      1.3 Spark平臺介紹

      Spark 是一個分布式計算框架,專為大規(guī)模數據處理而設計,具有快速且通用的特點[12]。Spark原本是加州大學伯克利分校的AMP實驗室開源的類似于Hadoop MapReduce的通用并行框架,它擁有Hadoop MapReduce所具有的優(yōu)點,但不同于MapReduce的是Spark中間的輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此能夠獲得比MapReduce更快的大數據處理速度[13]。圖2展示了Spark的基本框架。用戶通過Driver向Master注冊申請資源,由Master通過各個worker的心跳包獲取集群當前的資源狀況,找到合適的資源給本任務,然后在各個worker上啟動Executor進程去運行用戶提交任務中的每一個task,Executor向Driver通過心跳包報告運行狀態(tài),直到作業(yè)完成。分布式計算技術的瓶頸往往在與集群的網絡IO,想提高計算性能應該盡可能地避免shuffle的過程出現,而測量矩陣的生成和校驗是非常獨立的過程,不需要與其他的節(jié)點進行通信或數據交互[14],因此非常適合于spark這種分布式計算框架,能夠非常充分地利用集群機器的計算性能快速生成和評估測量矩陣。

      圖2 Spark框架的工作流程

      2 分布式測量矩陣生成算法

      2.1 算法設計

      測量矩陣生成分為矩陣生成,矩陣評估和數據取回三個階段。通過spark-submit腳本中的參數并配置本次任務的矩陣類型、分辨率和采樣率等。Spark的計算框架通常用于分布式的處理數據,如果想使用該框架進行數據生成可以通過Spark中內置的parallel算子生成簡單RDD,然后對RDD使用Spark中的MapPartition算子,MapPartition算子是Map算子的一個變種,雖然它們都可進行分區(qū)的并行處理,但兩者的主要區(qū)別是調用的粒度不一樣:Map的輸入變換函數是應用于RDD中每個元素,而MapPartition的輸入函數是應用于每個分區(qū)[15]。通過Spark中的調度系統(tǒng)將本次矩陣生成與評估任務均勻地分布在各個節(jié)點上,在每個節(jié)點根據配置的參數進行測量矩陣的生成作業(yè)。對于每個生成的測量矩陣需要在本地進行矩陣質量的評估,以隨機測量矩陣為例,一般需要做計算矩陣的隨機偏差,在偏差允許范圍內的矩陣才會被認為是合格的矩陣而保留下來。對于不合格的矩陣,則會進行丟棄然后重新生成一個新的測量矩陣,為了進行對比實驗,在進行生成與評估作業(yè)中會進行數據統(tǒng)計(包括生成矩陣數目、矩陣質量和矩陣保留個數等)。因為測量矩陣本身是0-1矩陣,為節(jié)省存儲空間并沒有將結果寫入HDFS中,而是通過Spark中的collect算子將已生成好的測量矩陣和統(tǒng)計數據拉回提交作業(yè)的Driver端,通過二進制文件的方式寫入本地,供后續(xù)進行單光子成像實驗使用。圖3展示了一次完整的測量矩陣的生成和評估作業(yè)的流程。

      圖3 算法流程圖

      2.2 工程化實現

      工程化實現過程主要是利用Spark中的編程模型,主要用到的算子包括Spark中的mapPartition、parallel、collect等,其算法流程的偽代碼如算法1所示。

      算法1 測量矩陣生成 輸入:矩陣大小,節(jié)點數,矩陣數目 輸出:經過評估合格的測量矩陣二進制文件1. val sc=new SparkContext()2. val config=sc.getConf.get()3. val partitionNum=sc.getConf.get()4. val matrixNumPerPartition=matrixNum / partitionNum5. val matrix=sc.parallelize(0 until partition,partition).mapPartitions {part=> for(0 to matrixNumPerPartition){ generate matrixes if(evaluate matrixes is qualified) save qualified matrix count++ else regenerate unqualified matrix count++ } Calculate matrix save rate }6. val result=matrix.collect()7. val resultFile=new FileOutputStream()8. resultFile.write(result)

      3 實驗和結果分析

      3.1 實驗環(huán)境

      由于實驗室單光子成像實驗的需要,在實驗室搭建了8臺服務器搭建的物理集群,并且安裝配置好了Spark環(huán)境。為了便于進行對比實驗,單機實驗采用的機器環(huán)境和集群中單節(jié)點的硬件完全相同,表1中列出了單個節(jié)點機器的物理硬件配置,表2中列出了集群機器的主要軟件環(huán)境版本信息。

      表1 Spark集群單節(jié)點硬件配置信息

      表2 Spark集群單節(jié)點軟件配置信息

      3.2 評估指標

      本文的實驗選擇了單機、2節(jié)點、4節(jié)點、8節(jié)點等4組進行對比的橫向對比,選擇了三種不同的分辨率進行縱向對比,測量矩陣選擇了相對簡單的隨機測量矩陣。主要選取運行時間、矩陣評估存留率、加速比和拓展性作為評價指標。各評價指標說明如下:

      (1) 運行時間(Runtime):該指標是本次實驗的主要目的指標,運行時間指從提交作業(yè)成功到測量矩陣的二進制文件寫入硬盤完畢所需的總時間。

      (2) 矩陣評估留存率(Matrix Save Rate):該指標是衡量矩陣生成質量的指標,其值定義為:

      (3) 加速比(Speedup):該指標主要是用來驗證并行算法的效率,根據阿姆達爾定律,其值在理想的狀態(tài)下通常被定義為:

      (4) 可拓展性(Extension):該指標主要反映出集群節(jié)點的變化對該并行算法的性能影響大小,可以通過此指標預判集群數目與該算法的效率匹配性。

      3.3 實驗分析

      為了驗證以上的實驗指標,分別選擇分辨率在512×512、1 024×768、1 920×1 080下進行標準隨機測量矩陣算法生成進行實驗。

      實驗1本實驗對比了不同節(jié)點數N對于生成隨機測量矩陣的運行時間(單位:min),實驗數據如表3所示。

      表3 運行時間實驗結果

      從表中的實驗數據的對比來看,可以看出隨著節(jié)點數的增加,相同分辨率下測量矩陣的生成時間在減小,大致呈現線性關系;測量矩陣的生成時間隨著分辨率的提高而大幅度增加,呈現倍數關系,基本符合預期。

      實驗2矩陣評估存留率是指生成的測量矩陣經過評估算法之后合格的比例,實驗以常用的隨機測量矩陣為例,高分辨情況下選擇隨機偏差小于0.001的矩陣為合格矩陣,保存到最后的測量矩陣結果中,0-1隨機測量矩陣的隨機偏差通常用以下公式計算:

      式中:pos_num是矩陣中正元素的個數,neg_num是矩陣中非正元素的個數。隨機測量矩陣的隨機偏差一般會隨著測量矩陣分辨率的提高而降低。

      矩陣評估存留率實驗結果如表4所示。

      表4 矩陣評估存留率實驗結果

      可以看出,隨著節(jié)點數的增加,矩陣評估保留率一直表現比較穩(wěn)定,沒有顯著有趨勢性的變化,說明利用Spark進行分布式的測量矩陣生成依然能夠獲得與單機版測量矩陣生成任務質量相近的矩陣;隨著測量矩陣分辨率的提高,矩陣評估存留率會逐漸提高,且與單機版實驗的指標保持一致。

      實驗3計算不同節(jié)點數目下的加速比關系繪制折線圖,如圖4所示。

      圖4 不同節(jié)點數下的加速比

      從圖中可以看出,利用Spark框架生成測量矩陣的過程中,算法的加速比基本是接近線性的,隨著分辨率的增加,數據規(guī)模成倍的增加,加速比也沒有因為數據分散后,最后從各個節(jié)點收集數據的時間增加而出現明顯下降。這是因為Spark這種運行在JVM上的平臺,隨著數據在各個節(jié)點上的分散,單個節(jié)點所需的內存按比例下降,JVM中消耗在內存回收(GC)的時間也會逐漸減少了。說明該算法有非常良好的加速比,可以期待該算法在未來高分辨測量矩陣生成中也具有非常好的表現。

      實驗4可拓展性分析。根據實驗1的數據將集群使用的節(jié)點數和作業(yè)的運行時間作折線圖,如圖5所示。

      圖5 擴展性實驗結果圖

      由圖5可以看出,在以上三個分辨率的測量矩陣生成實驗中,運行時間隨著節(jié)點數增加明顯下降,基本呈現線性關系。實驗說明,該分布式測量矩陣生成算法具有良好的可擴展性。

      4 結 語

      傳統(tǒng)利用MATLAB等軟件工具生成測量矩陣的算法在面對高分辨率或高采樣率等數據規(guī)模較大的情況時,完整生成一次測量矩陣所需的時間成本往往非常巨大,嚴重影響了成像實驗的效率。通過Spark分布式計算框架可以為測量矩陣的生成和評估提供可靠、簡單、有效的解決方案,大大縮短了測量矩陣的生成時間,為調試測量矩陣和成像實驗提供了有力支撐。實驗表明,利用Spark平臺通過分布式的生成算法可以近似線性的縮減生成時間,測量矩陣質量基本與單機算法相同,并且可拓展性良好,在可預見的情況下能夠支撐更大分辨率的單光子成像實驗。

      猜你喜歡
      單光子分辨率集群
      海上小型無人機集群的反制裝備需求與應對之策研究
      EM算法的參數分辨率
      基于單光子探測技術的拉曼光譜測量
      電子測試(2018年18期)2018-11-14 02:30:36
      原生VS最大那些混淆視聽的“分辨率”概念
      一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設計
      電子制作(2018年11期)2018-08-04 03:25:40
      Python與Spark集群在收費數據分析中的應用
      基于深度特征學習的圖像超分辨率重建
      自動化學報(2017年5期)2017-05-14 06:20:52
      一種改進的基于邊緣加強超分辨率算法
      勤快又呆萌的集群機器人
      我國單光子源國際綜合性能最優(yōu)
      余干县| 磐石市| 吉隆县| 合作市| 博湖县| 突泉县| 孟州市| 枣庄市| 富蕴县| 张家口市| 寻乌县| 平南县| 那曲县| 任丘市| 福建省| 铜陵市| 六安市| 自贡市| 德令哈市| 本溪| 华阴市| 弥渡县| 三台县| 兴宁市| 秭归县| 上杭县| 平阴县| 溧阳市| 石家庄市| 遂宁市| 阜新市| 乌苏市| 龙川县| 祁门县| 武夷山市| 密山市| 改则县| 桐柏县| 西城区| 澄迈县| 珲春市|