向量量化器與可變長度編碼法則應用於物聯網量測之研究
50
0
0
全文
(2) 摘要 本研究運用資料壓縮技術,促使資料傳輸量降低,減少頻寬與功率消耗, 間接節省系統建置成本與維護成本;本研究的資料壓縮流程共有兩道程序,首 先使用向量量化器將感測資料進行壓縮,接著利用可變長度編碼法則,將壓縮 失真再進行壓縮,使得通過兩道壓縮程序的感測資料,能夠完整還原,為無失 真壓縮;也可以單獨行使向量量化器進行壓縮,為失真壓縮。. 無失真壓縮能夠應用在所有的物聯網量測,實用性廣泛,不過壓縮率較 低;失真壓縮的應用範圍,局限於部分能夠容許誤差的物聯網量測,實用性狹 隘,但是壓縮率較高。. 本研究將壓縮法則應用於溫度量測與細懸浮微粒量測,並說明系統裝設之 流程,解釋及分析實驗參數的選擇方式。. 本論文於最後進行本法則的效能評估,證明本法則的碼簿具有較低的儲存 所需位元組,同時本法則也有效的降低了平均每天傳送位元數。. 關鍵字:資料壓縮、向量量化器、可變長度編碼、物聯網量測. i.
(3) 誌謝 首先我要感謝我的論文指導教授,黃文吉. 教授。在進行論文研究的過程. 中,老師提供我非常多的資源去研究符合自己興趣的題目,而且老師都很信任 我並放手讓我做,也在進行實驗的過程中給了我很大的自由時間,讓我能夠自 行規劃研究進度,當我在進行實驗中面臨瓶頸的時候,老師總是能夠指引我突 破困境,很感謝老師在碩士班生活中給予我非常多的指導與幫助。. 接著我要感謝我的學長,張元俊學長,陳映綸學長。非常謝謝你們的照 顧,如果沒有你們的幫助,我無法熬過漫長的低潮。. 再來我要感謝我的家人,提供我各種幫助,使我能夠順利完成碩士班的學 業,由衷感激你們。. 最後感謝所有幫助過我的人,因為篇幅有限無法在此悉數銘謝,你們的幫 助我始終銘記在心。. ii.
(4) 目錄 摘要.................................................................................................................................. i 誌謝................................................................................................................................. ii 目錄................................................................................................................................ iii 表目錄............................................................................................................................ iv 圖目錄............................................................................................................................. v 第一章 緒論................................................................................................................... 1 第一節 研究背景及動機....................................................................................... 1 第二節 研究目的及方法....................................................................................... 1 第三節 論文架構................................................................................................... 3 第二章 壓縮法則解說................................................................................................... 4 第一節 向量量化器............................................................................................... 4 第二節 餘值向量量化器..................................................................................... 12 第三節 可變長度編碼......................................................................................... 15 第三章 物聯網量測..................................................................................................... 17 第一節 溫度量測................................................................................................. 17 第二節 細懸浮微粒量測..................................................................................... 27 第四章 數據分析......................................................................................................... 31 第一節 溫度資料壓縮......................................................................................... 31 第二節 細懸浮微粒資料壓縮............................................................................. 34 第五章 結論................................................................................................................. 41 參考著作....................................................................................................................... 43. iii.
(5) 表目錄 表 2.1 根據機率進行 VLC 之編碼 ............................................................................. 16 表 3.1 以溫度的差值執行 K-Means 產生 M 為 8 的碼簿 ........................................ 23 表 3.2 差值碼簿的 VLC 編碼 ..................................................................................... 24 表 3.3 進行 VLC 編碼之結果 ..................................................................................... 26 表 4.1 當 M 設定為 2 時,儲存 RVQ 碼簿所需要的位元組 ................................... 40 表 4.2 當 M 設定為 4 時,儲存 RVQ 碼簿所需要的位元組 ................................... 40 表 4.3 當 M 設定為 16 時,儲存 RVQ 碼簿所需要的位元組 ................................. 40. iv.
(6) 圖目錄 圖 2.1 脈波編碼調變系統............................................................................................. 4 圖 2.2 (a) VQ 編碼器,(b) VQ 編碼器內部結構圖 ..................................................... 5 圖 2.3 (a) VQ 解碼器,(b) VQ 解碼器內部結構圖 ..................................................... 5 圖 2.4 碼簿結構圖......................................................................................................... 7 圖 2.5 執行 K-Means 的步驟一為初始化碼簿 .......................................................... 10 圖 2.6 執行 K-Means 的步驟二為將資料分類 .......................................................... 10 圖 2.7 執行 K-Means 的步驟三為更新碼簿 .............................................................. 11 圖 2.8 執行 K-Means 的步驟四為疊代直到收斂 ...................................................... 11 圖 2.9 RVQ 的壓縮過程,以兩級 VQ 為例 ............................................................... 13 圖 3.1 文山區某一天的溫度資料............................................................................... 17 圖 3.2 系統裝設流程圖............................................................................................... 18 圖 3.3 使用 K-Means 的前置作業 .............................................................................. 19 圖 3.4 碼簿大小 M 與平均失真之關係 ..................................................................... 21 圖 3.5 執行 K-Means 產生 M 為 8 的碼簿 ................................................................ 22 圖 3.6 差值的統計結果............................................................................................... 23 圖 3.7 古亭測站某兩天的 PM2.5 資料 ........................................................................ 27 圖 3.8 包含 L 級 VQ 的 RVQ 之(a)壓縮過程,(b)解壓縮過程 ............................... 29 圖 4.1 本法則應用於溫度資料壓縮產生的平均失真............................................... 31 圖 4.2 儲存碼簿所需要的位元組............................................................................... 32 圖 4.3 平均每天傳送位元數....................................................................................... 33 圖 4.4 本法則應用於細懸浮微粒資料壓縮產生的平均失真................................... 34 圖 4.5 儲存碼簿所需要的位元組............................................................................... 35 圖 4.6 平均每天傳送位元數....................................................................................... 37 圖 4.7 當碼簿大小 M 調整為 4 並進行壓縮產生的平均失真 ................................. 38 圖 4.8 當碼簿大小 M 調整為 4 的碼簿做儲存所需要的位元組 ............................. 38 圖 4.9 當碼簿大小 M 調整為 4 的平均每天傳送位元數 ......................................... 39. v.
(7) 第一章 緒論. 第一章 緒論 第一節 研究背景及動機 物聯網的規模正在快速成長,物聯網技術正在改變人們的生活,存在於生 活周遭的感測器日以繼夜的產生資料,與此同時感測器的數量又有與日俱增的 趨勢,根據這些跡象可以預期,未來感測器所產生的資料量,將如同恆河沙數 般難以估計。. 資料量持續上升,意味著資料傳輸的頻寬將必需持續提高,頻寬升高導致 系統的建置成本攀升;頻寬不斷增大,同時也造成電路的功率消耗不斷上升, 功率消耗提高引起電池頻繁更換,屢次替換電池致使維護成本增加;因此陸續 擴增頻寬將引發成本暴增,昂貴的成本將使得實用性大幅度下降。. 本研究運用資料壓縮技術,促使資料傳輸量降低,減少頻寬與功率消耗, 間接節省系統建置成本與維護成本。相關研究有海洋航線監測系統 [1]。. 第二節 研究目的及方法 本研究的資料壓縮流程共有兩道程序,首先使用向量量化器 [2]-[4],將感 測資料進行壓縮,接著利用可變長度編碼法則,將向量量化器造成的壓縮失真 再進行壓縮,使得通過兩道壓縮程序的感測資料,能夠完整還原,為無失真壓 縮;也可以單獨行使向量量化器進行壓縮,為失真壓縮。 1.
(8) 第一章 緒論. 比較無失真壓縮與失真壓縮,無失真壓縮能夠應用在所有的物聯網量測, 實用性廣泛,不過壓縮率較低;失真壓縮的應用範圍,局限於部分能夠容許誤 差的物聯網量測,實用性狹隘,但是壓縮率較高。. 實行向量量化器壓縮資料之前,需要先建立碼簿,透過蒐集過去的感測資 料,從中歸納出具有代表性的資料,以一筆代表性的資料當作一筆碼字,集結 定量的碼字製作成碼簿;當傳送端將感測資料收集完成後,於碼簿中逐一比對 各個碼字,並找到與感測資料最相似的碼字,經由傳遞此碼字之簡短代碼,達 成降低資料傳輸量之目的。. 可變長度編碼是利用霍夫曼編碼轉型而成,透過蒐集過去的感測資料,從 中統計出相同資料的筆數,筆數越多代表出現機率越高,根據機率的高低進行 編碼,機率越高的資料編碼越短。. 儲存碼簿勢必耗費相當多的儲存空間,因此本研究利用可變長度編碼法則 壓縮碼簿,每逢感測資料收集完畢,此時需要開始逐一比對碼字,才分別還原 碼字,每當一筆碼字核對完成,將下一筆碼字還原至相同的儲存空間,因此逐 一比對碼字,只需要很小的儲存空間,降低了儲存碼簿的負擔;比對碼字所需 的空間大小,減少為碼簿壓縮後的空間大小,再加上一筆碼字的維度之變數, 使用於逐一比對碼字。. 2.
(9) 第一章 緒論. 第三節 論文架構 本論文總共分為五章,以下說明各章的內容概要:. 第一章 緒論. 說明研究背景及動機,闡述研究目的及方法。. 第二章 壓縮法則解說. 解釋及說明向量量化器、餘值向量量化器、可變長度編碼。. 第三章 物聯網量測. 將壓縮法則應用於溫度量測與細懸浮微粒量測,解釋及說明資料來源、 資料特性、量測方式、系統裝設之流程。. 第四章 數據分析. 進行本法則的效能評估,數據分析的內容分為資料壓縮後的平均失真、 儲存碼簿所需要的位元組、平均每天傳送位元數。. 第五章 結論. 總結本研究的貢獻。. 3.
(10) 第二章 壓縮法則解說. 第二章 壓縮法則解說 第一節 向量量化器 本研究將向量量化器應用於溫度量測,由於每小時之間的溫度差別很小, 而且上午的溫度變化固定為上升,下午的溫度變化固定為下降,因此溫度資料 之間的變動幅度很小,使用向量量化器可以達到良好的壓縮效果。. 向量量化器(Vector Quantization,VQ),為脈波編碼調變系統(Pulse Code Modulation System),如圖 2.1 所示;令感測資料(Sensor Data)為一個向量 x,令 碼字(Codeword)為一個向量 y,當傳送端(Transmitter)將感測資料 x 收集完成時, 透過傳遞代碼 cj 取代感測資料 x;在接收端(Receiver)取得代碼 cj 後,根據 cj 找 出對應的碼字 yj。. 圖 2.1 脈波編碼調變系統 傳送端內部包含編碼器(Encoder),如圖 2.2 所示;在感測資料收集完成後, 使用相近程度計算函數,於碼簿(Codewords)中逐一比對各個碼字 y,並找到與 感測資料最相近的碼字之索引 j,接著執行代碼計算函數,將索引 j 轉換為代碼 cj,透過傳遞簡短的代碼取代傳輸一群感測值。. 4.
(11) 第二章 壓縮法則解說. (a) VQ 編碼器. (b) VQ 編碼器內部結構圖 圖 2.2 (a) VQ 編碼器,(b) VQ 編碼器內部結構圖 接收端內部包含解碼器(Decoder),如圖 2.3 所示;在取得代碼 cj 後,使用索 引計算函數,將代碼 cj 轉換為索引 j,接著執行碼字搜尋函數,根據索引於碼簿 中搜尋並找出對應的碼字 yj。. (a) VQ 解碼器. (b) VQ 解碼器內部結構圖 圖 2.3 (a) VQ 解碼器,(b) VQ 解碼器內部結構圖 5.
(12) 第二章 壓縮法則解說. 碼簿的製作過程也稱為 K-Means,透過蒐集過去的感測資料,使用 K-Means 將其歸類,並從 K 種類別當中歸結出具有代表性的資料,以一筆代表性的資料 當作一筆碼字,集結 K 筆碼字製作成碼簿。相關研究有無線影像感測網路 [5]。. 以下透過數學式子,輔助說明 K-Means 的執行過程,首先將相關的資料定 義符號,感測資料為一個向量 x,x 包含 N 筆感測值 x:. x x1 , x2 , , xN 令 xi , i 1~ T 為訓練資料(Training Data),我們將 T 筆訓練資料組合成集合 X:. X x1 , x2 , , xT 執行 K-Means 的步驟一為初始化碼簿,在 T 筆訓練資料之集合 X 中,隨機 選擇 M 筆非重複的訓練資料,用來當作碼字,因此總共有 M 筆碼字,令碼字為 一個向量 y,有 M 筆碼字之集合 Y:. Y y1 , y 2 , , y M . y j 為集合 Y 中的第 j 筆碼字: y j y j ,1 , y j ,2 ,. , y j , N . 碼簿的結構如圖 2.4 所示,其結構為二維陣列,每一列代表一筆碼字:. 6.
(13) 第二章 壓縮法則解說. 圖 2.4 碼簿結構圖 執行 K-Means 的步驟二為分類訓練資料,首先計算訓練資料與碼字的平方 距離(Squared Distance),一筆訓練資料分別與 M 筆碼字計算一次,計算公式: , xi , N , y j y j ,1 , y j ,2 ,. xi xi ,1 , xi ,2 ,. d xi , y j xi ,k y j ,k N. , y j , N . 2. (2.1). k 1. 從計算結果中找出與訓練資料最相近的碼字之索引 j,也就是找出最小的平方距 離,其所對應到的碼字之索引 j,令此對應關係之函數為 p xi :. p xi arg min d xi , y j . (2.2). 1 j M. 經由 p xi 將訓練資料歸類,令歸類後之集合為 P j :. Pj xi : p xi j. (2.3). 透過 M 筆碼字將訓練資料割據,劃分成 M 種類別之集合: X x1 , x 2 ,. , xT . P1 , P2 ,. , PM . 這也稱為集合劃分(Partition of a Set),令歸類後的訓練資料為 x P j : 7.
(14) 第二章 壓縮法則解說. . , x P1 ,# P1. . . , x P2 ,# P2. . P1 X, P1 x P1 ,1 , x P1 ,2 , P2 X, P2 x P2 ,1 , x P2 ,2 ,. ⁞. ⁞. . PM X, PM x PM ,1 , x PM ,2 ,. P1 P2 . , x PM ,# PM. . PM x1 , x2 , , xT X. 衡量資料壓縮後的失真程度,是根據均方差(Mean Square Error,MSE)判斷,令 平均失真(Average Distortion)為 D,計算公式:. D. . 1 T d xi , y pxi NT i 1. . (2.4). 執行 K-Means 的步驟三為更新碼簿,從 P j 中計算出具有代表性的資料 y j , 促使平均失真 D 最小化,下面的計算以 P1 為例,令 #P1 為 L:. . P1 X, P1 x P1 ,1 , x P1 ,2 ,. , x P1 , L. . 計算 y1 的公式與推導過程:. . 1 L D y1 xP1 , s L s 1. . . 2. dD 1 L 2 y1 xP1 , s dy1 L s 1 Set. . . dD 1 L 0 2 y1 xP1 , s 0 dy1 L s 1. 8.
(15) 第二章 壓縮法則解說. . 1 L 1 L 1 L y x y 1 L xP ,s P1 , s 1 L s 1 L s 1 1 s 1. (2.5). 公式的含意為,把相同類別的訓練資料取平均值,當作代表性的資料,也稱作 局部最佳值(Local Optimum),以此校準碼字,並使用校準後的碼字更新碼簿。. K-Means 的步驟四為重複執行前兩步驟,透過不斷的重新分類與校準碼 字,直到重新歸類後的集合 P j 不再變動,疊代便達到收斂,此時的碼字便不需 要再校準,碼簿也不必再更新,經過多次校準的碼字,即最具有代表性。. 以下使用簡單的資料舉例,說明 K-Means 的執行步驟,假設有八筆資料:. X x1 , x2 , , x8 資料的維度是二維,八筆資料分別為:. x1 2, 2 , x2 2, 4 , x3 4, 2 , x4 4, 4 , x5 -2, 2 , x6 -2, 4 , x7 -4, 2 , x8 -4, 4 碼簿中含有兩筆碼字:. Y y1 , y 2 執行 K-Means 的步驟一為初始化碼簿,隨機選擇兩筆資料將碼簿初始化:. y1 4, 4 , y 2 -4, 4. 9.
(16) 第二章 壓縮法則解說. 圖 2.5 執行 K-Means 的步驟一為初始化碼簿 執行 K-Means 的步驟二為將資料分類:. P1 X, P1 x1 , x2 , x3 , x4 P2 X, P2 x5 , x6 , x7 , x8 . 圖 2.6 執行 K-Means 的步驟二為將資料分類 執行 K-Means 的步驟三為更新碼簿: y1 . x1 +x 2 +x3 +x 4 = 3,3 4. y2 . x5 +x 6 +x 7 +x8 = -3, 3 4. 10.
(17) 第二章 壓縮法則解說. 圖 2.7 執行 K-Means 的步驟三為更新碼簿 執行 K-Means 的步驟四為重複執行前兩步驟,直到 P1 與 P2 不再變動:. P1 X, P1 x1 , x2 , x3 , x4 P2 X, P2 x5 , x6 , x7 , x8 . 圖 2.8 執行 K-Means 的步驟四為疊代直到收斂. 11.
(18) 第二章 壓縮法則解說. 第二節 餘值向量量化器 本研究將餘值向量量化器應用於細懸浮微粒量測,由於每小時之間的濃度 感測值差別很大,因此細懸浮微粒資料之間的變動幅度非常大,在有限的記憶 體資源中,單一向量量化器能夠擴增的碼簿大小很有限,進行壓縮所造成的壓 縮失真也很大,而且碼簿擴增後的儲存所需要的位元組非常多;本研究透過將 資料與碼字相減獲得餘值,再繼續使用向量量化器進行壓縮以減小餘值,利用 多級的向量量化器之架構,使得多級 VQ 碼字之組合加總出多樣化的碼字,比較 於擴增單一向量量化器的碼簿大小,增加向量量化器的級數更為節省碼簿的儲 存所需位元組。. 餘值向量量化器(Residual Vector Quantization,RVQ)是由兩級以上的向量量 化器所組成,RVQ 的壓縮流程為,先使用第一級 VQ 將資料進行壓縮,再將資 料與碼字相減獲得的餘值,接著再使用第二級 VQ 將餘值進行壓縮,再把餘值與 碼字相減獲得新的餘值,再繼續使用剩餘的 VQ 將新的餘值進行壓縮,直到使用 完所有級的 VQ;RVQ 的編碼為在全數 VQ 裡選擇的碼字之代碼;RVQ 的解碼 流程為,根據代碼逐一找出全部級 VQ 裡對應的碼字,再將所有的碼字相加起 來,此加總即為 RVQ 的壓縮結果。. 以下透過數學式子,輔助說明 RVQ 的壓縮過程,以兩級 VQ 為例,首先將. 12.
(19) 第二章 壓縮法則解說. 相關的資料定義符號,令感測資料為一個向量 x,x 包含 N 筆感測值 x:. x x1 , x2 , , xN 先將 x 於第一級的 VQ 中選出最相近的碼字 y1,i,將 x 與 y1,i 相減,即可得到餘 值 r1;再將餘值 r1 於第二級的 VQ 中選出最相近的碼字 y2,j,將第一級的餘值 r1 與第二級的碼字 y2,j 相減,即可得到第二級的餘值 r2,r2 即為 RVQ 的餘值;兩 級 VQ 裡選擇的碼字 y1,i 與 y2,j 相加,即為 RVQ 的碼字;兩級 VQ 裡選擇的碼字 之代碼 ci 與 cj,即為 RVQ 傳遞所用之代碼。. 圖 2.9 RVQ 的壓縮過程,以兩級 VQ 為例 以下透過數學式子,輔助說明 RVQ 的碼簿製作過程,首先將相關的資料定. 13.
(20) 第二章 壓縮法則解說. 義符號,感測資料為一個向量 x,x 包含 N 筆感測值 x:. x x1 , x2 , , xN 令 xi , i 1~ T 為訓練資料(Training Data),我們將 T 筆訓練資料組合成集合 X:. X x1 , x2 , , xT RVQ 包含 L 個 VQ,L 也稱為級數,全數的 VQ 之碼簿大小皆為 M,碼字為一個 向量 y;首先使用訓練資料之集合 X,執行前一節說明的 K-Means,獲得第一級 VQ1 的碼字,總共有 M 筆碼字之集合 Y1: Y1 y1,1 , y1,2 ,. , y1, M . 將訓練資料 xi 與其最相近的碼字 y1, p xi 相減獲得餘值 r1,i :. r1,i xi y1, p xi 將 T 筆訓練資料與其最相近的碼字相減後,得到第一級 VQ1 的餘值之集合 R1: R1 r1,1 , r1,2 ,. , r1,T . 接著將 R1 作為第二級 VQ2 的輸入資料,執行 K-Means,獲得第二級 VQ2 的 碼字,總共有 M 筆碼字之集合 Y2: Y2 y 2,1 , y 2,2 ,. , y 2, M . 將第一級 VQ1 的餘值 r1,i ,與其最相近的碼字 y 2, p r1,i 相減,獲得餘值 r2,i : r2,i r1,i y 2, p r 1,i. 將 T 筆餘值與其最相近的碼字相減後,得到第二級 VQ2 的餘值之集合 R2: 14.
(21) 第二章 壓縮法則解說 R 2 r2,1 , r2,2 ,. , r2,T . 接著持續將餘值輸入至下一級的 VQ,以獲得新的餘值;在最後一級的 VQL 計算完成後,獲得的最後一級餘值為 RL 即為 RVQ 壓縮的餘值: rL ,i rL 1,i y L , p r L 1,i R L rL ,1 , rL ,2 ,. , rL ,T . 最終將全部級數之 VQ 的碼字聯集在一起,即為 RVQ 的碼簿 YRVQ: Y1 Y2 . YL y1,1 , y1,2 ,. , y1, M , y 2,1 , y 2,2 ,. , y 2, M ,. , y L,1 , y L,2 ,. , y L, M YRVQ. 第三節 可變長度編碼 本研究的資料壓縮流程共有兩道程序,第一道程序為使用向量量化器或餘 值向量量化器將感測資料壓縮,第二道程序就是利用可變長度編碼法則將第一 道程序所產生的壓縮失真再進行壓縮,使得通過兩道壓縮程序的感測資料能夠 完整還原,為無失真壓縮;可變長度編碼也使用於壓縮碼簿。. 可變長度編碼(Variable Length Codes,VLC)為無失真的壓縮法則,是利用霍 夫曼編碼(Huffman Codes)轉型而成,透過蒐集過去的感測資料,從中統計出相 同資料的筆數,筆數越多代表出現機率越高,根據機率的高低進行編碼,機率 越高的感測值編碼越短。. 本研究的 VLC 法則不同於霍夫曼編碼,儲存編碼簿(Codebook)不必建立霍 15.
(22) 第二章 壓縮法則解說. 夫曼樹,只需要很小的一維陣列之儲存空間;編碼以 0 為結尾,每種編碼具有 不同數量的 1,以此區別各個編碼;解碼只需要計算 1 的數量,將數量值當作索 引值,於一維陣列中找出對應的編碼,即可完成解碼。. 以下使用假設的資料舉例,說明如何使用 VLC 編碼與解碼;假設過去的感 測資料已經蒐集完成,也統計出相同感測值的筆數,並且換算成機率: 1. 感測值. 2. 3. 4. 5. 6. 機率. 0.74681. 0.23277. 0.01678. 0.00263. 0.00077. 0.00024. 編碼. 0. 10. 110. 1110. 11110. 111110. 表 2.1 根據機率進行 VLC 之編碼 依照機率由高至低,以一維陣列儲存 VLC 之編碼簿: int array[6] = {1, 2, 3, 4, 5, 6}; 假設此時傳送端將感測資料收集完成,共有十筆感測值: 1112111123 傳送端根據編碼簿,將十筆感測值進行編碼: 0 0 0 10 0 0 0 0 10 110 當接收端收到壓縮後的感測資料,以 0 為結尾,計算 1 的數量(0 不列入計算), 並將十筆數量轉換為陣列的索引值: 0001000012 根據儲存於一維陣列的編碼簿,依照索引取出相對應的感測值,即完成解碼: 1112111123. 16.
(23) 第三章 物聯網量測. 第三章 物聯網量測 存在於生活周遭的感測器不斷的產生資料,與此同時感測器的數量又有逐 漸增加的趨勢,因此物聯網產生的資料量將會越來越龐大,資料傳輸所消耗的 功率也會持續升高;面對資料量不斷上升的問題,本研究利用 VQ 與 VLC 降低 資料傳輸量,間接減少功率消耗,並且以溫度量測與細懸浮微粒量測作為實作 的例子。. 第一節 溫度量測 溫度的特性為每小時之間變化很小,且上午的變化固定為上升,下午的變 化固定為下降,以文山區某一天的溫度資料為例子,如圖 3.1 所示,而且絕大多 數的日溫度變化都具有此特性,因此溫度資料之間的變動幅度很小,適合使用 向量量化器進行壓縮。. 圖 3.1 文山區某一天的溫度資料 17.
(24) 第三章 物聯網量測. 溫度量測的一種基本方式為每若干分鐘收集一次溫度值,每小時將其取平 均值,一天總共儲存 24 筆小時平均溫度值,本研究的量測系統設計為一次性傳 送資料,使用者也可以隨時索取當下的溫度值,若無詢問則不主動回傳,傳遞 以一次為原則,因為不斷的回傳相似之溫度值為非必要的行為,倘若頻繁傳送 溫度值,將會造成傳輸量增加,又會導致功率消耗上升,除此之外,透過增加 傳遞資料的維度,還可以運用 VQ 進行資料傳輸的壓縮,達成降低資料傳輸量與 減少功率消耗之目的,但是 VQ 壓縮會產生壓縮失真,因此本研究利用 VLC 壓 縮此誤差,補足 VQ 造成壓縮失真的缺點。系統的裝設流程如圖 3.2 所示,流程 分為三個步驟,以下將三個步驟分成三節討論。. 圖 3.2 系統裝設流程圖. 第3-1.1節 產生合適於溫度資料的碼簿 使用 VQ 與 VLC 降低溫度資料傳輸量的實驗,首先需要訓練資料用來輸入 K-Means 產生碼簿,如何使用訓練資料製作合適的碼簿為本節討論的重點,由 於溫度量測的實驗是在文山區進行,所以訓練資料選用文山區的溫度資料;實 驗另外還需要測試資料用來評估 VQ 與 VLC 的壓縮率,測試資料選用鄰近文山 區的信義區之溫度資料,此部分於下一章再進行討論。 18.
(25) 第三章 物聯網量測. 溫度資料取自中央氣象局的觀測資料查詢系統(CODiS) [6],查詢系統中的 日報表包含當日每小時的溫度值,因為本研究的量測系統設計為一次性傳送 24 筆小時平均溫度值之資料,所以選擇日報表作為 K-Means 的訓練資料;從查詢 系統取出溫度資料的方法稱為網路內容擷取(Web Scraping),又稱為資料探勘 (Data Mining),此方法是以自動化的程式向 Web 伺服器要求資料,在取得資料 後解析資料並且從中擷取出研究所需的資訊,整個擷取過程不需要人力介入, 擷取軟體的實作是使用 Python 程式語言,並且參考 Ernie 的 Python 程式碼 [7]。. 在使用訓練資料輸入 K-Means 產生碼簿之前,首先需要完成三個步驟的前 置作業,如圖 3.3 所示:. 圖 3.3 使用 K-Means 的前置作業 第一步驟是移除不完整的訓練資料,因為每筆訓練資料的維度大小需要一致才 能計算平方距離(Squared Distance);第二步驟是把溫度值做四捨五入取整數,因 為溫度值如果保留小數的部分,對於使用者的感受上來說並沒有差別,使用者 無法感受到溫度太細微的變化,因此溫度量測的精確度不需要太高,而且取整 數後還可使用空間消耗較小的變數儲存溫度值,例如變數 byte 的無號數表示範 19.
(26) 第三章 物聯網量測. 圍是 0 到 255,使用 byte 足夠儲存一筆整數的溫度值,另外取整數後還可以降 低傳輸溫度值的編碼長度,例如編碼長度為六個位元時,使用無號數可表示的 整數溫度值範圍是 0 到 63 度,使用六個位元長度的編碼足以表示一筆整數的溫 度值;第三步驟是設定參數,參數包含訓練資料 x 的筆數 T、訓練資料 x 的維度 N 與碼簿的大小 M,另外還有初始化碼簿時隨機選擇的 M 筆訓練資料也是需要 設定的參數。. 以下使用文山測站近七年的日報表作為 K-Means 的訓練資料 x,首先完成 三個步驟的前置作業,第一步驟是移除不完整的訓練資料,完整的訓練資料之 維度應為 24,完成移除後所獲得的訓練資料為 2402 筆;第二步驟是把溫度值做 四捨五入取整數;第三步驟是設定參數,首先根據前面步驟獲得的參數設定 N=24 與 T=2402,接著設定碼簿大小 M,由於 M 的設定會影響到 VQ 代碼的長 度、VQ 壓縮後的平均失真與壓縮率,所以 M 的設定對於實驗結果的影響非常 大,因此本節將詳細討論參數 M。. 首先進行一項實驗,透過調整參數 M 分析平均失真之變化,設定參數 M 的 調整範圍是 1 至 16,並且隨機選擇 M 筆訓練資料初始化碼簿,再透過 K-Means 產生碼簿,在此將每種大小 M 的碼簿都產生 30 個,再把碼字做四捨五入取整 數,根據第二章第一節的公式 2.4 計算平均失真,且將每種大小 M 的 30 個碼簿. 20.
(27) 第三章 物聯網量測. 之 30 筆平均失真再取平均值做統計,獲得碼簿大小 M 與平均失真之關係如圖 3.4 所示:. 圖 3.4 碼簿大小 M 與平均失真之關係 圖 3.4 呈現出碼簿大小 M 越大則平均失真越低,因此增加 M 可以降低 VQ 造成的壓縮失真,間接促使第二道 VLC 之壓縮程序的壓縮率上升並且降低資料 傳輸量,但是當 M 大於 8 的平均失真之下降幅度會越來越低,因此以下的碼簿 壓縮之實驗選擇的碼簿大小 M 為 8。. 第3-1.2節 將碼簿進行無失真壓縮 儲存 VQ 的碼簿勢必會消耗相當多的記憶體,由於物聯網的記憶體很小,例 如 Arduino UNO 的記憶體大小只有 2048 個位元組,又或是 Arduino Mega 2560 的記憶體大小為 8192 個位元組,而且在上載程式碼至 Arduino 時編譯器只允許. 21.
(28) 第三章 物聯網量測. 程式碼使用低於 80%的記憶體,除此之外,還要考慮到撰寫系統的各種功能之 程式碼需要使用到的記憶體,因此在記憶體資源非常寶貴的情況下,需要解決 儲存碼簿消耗過多記憶體之問題,所以本研究將碼簿進行無失真壓縮。. 從 3-1.1 節的文山區溫度資料接續討論,以碼簿大小 M 為 8 為例子進行實 驗,首先設定參數 N=24、T=2402 與 M=8,執行 K-Means 產生 300 個 M 為 8 的 碼簿,再從中選出平均失真最低的碼簿並取整數,如圖 3.5 所示,8 筆碼字總共 包含 192 筆溫度值,溫度值的分布範圍為 12 至 33 度,因此一筆溫度值至少要 使用五個位元表示與儲存,儲存包含 192 筆溫度值的碼簿總共需要消耗 960 個 位元。. 圖 3.5 執行 K-Means 產生 M 為 8 的碼簿 為了降低儲存碼簿所消耗的記憶體,本研究將 VQ 的輸入設定為溫度的差 值,並將訓練資料以差值表示後輸入 K-Means 產生碼簿,再將碼簿進行 VLC 壓 縮,減少儲存碼簿的記憶體消耗量;以差值表示溫度資料的方法共分為兩個步 22.
(29) 第三章 物聯網量測. 驟,第一步驟是直接把第一筆溫度值以若干個位元表示並且不做壓縮,第二步 驟是把其餘的 23 筆溫度值依序與前一筆溫度值相減,獲得 23 筆差值,以 3-1.1 節的文山區溫度資料取差值為例子進行實驗,首先設定參數 N=23、T=2402 與 M=8,執行 K-Means 產生 300 個 M 為 8 的碼簿,再從中選出平均失真最低的碼 簿並取整數,如表 3.1 所示: y1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0. 0. -1. 0. 0. 0. 0. 0. 0. 0. y2. 0. 0. 0. 0. 0. 1. 2. 3. 2. 1. 1. 0. 0. -1. -1. -1. -1. -1. -1. -1. -1. 0. 0. y3. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. y4. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0. -1. -1. -1. -1. 0. 0. 0. 0. 0. y5. 0. 0. 0. 0. 0. 1. 2. 2. 1. 1. 0. 0. -3. -1. 0. 0. -1. -1. 0. 0. 0. 0. 0. y6. 0. 0. 0. 0. 0. 1. 2. 2. 1. 1. 0. 0. -1. -3. -2. 0. 0. 0. 0. 0. 0. 0. 0. y7. 0. 0. 0. 0. 0. 1. 2. 2. 1. 0. 0. -2. 0. 0. 0. 0. 0. -1. 0. 0. 0. 0. 0. y8. 0. 0. 0. 0. 0. 2. 3. 1. 1. 1. 0. 0. 0. 0. -1. -1. -1. -1. -1. -1. 0. 0. 0. 表 3.1 以溫度的差值執行 K-Means 產生 M 為 8 的碼簿 8 筆碼字總共包含 184 筆溫度的差值,差值的分布範圍從-3 至 3,差值的統計結 果如圖 3.6 所示:. 圖 3.6 差值的統計結果 23.
(30) 第三章 物聯網量測. 將 184 筆溫度的差值使用 VLC 進行壓縮,首先根據機率進行編碼,編碼結果如 表 3.2 所示: 差值. 機率. 編碼. 0. 0.65761. 0. 1. 0.13043. 10. -1. 0.13043. 110. 2. 0.04891. 1110. -2. 0.01087. 11110. 3. 0.01087. 111110. -3. 0.01087. 111111. 表 3.2 差值碼簿的 VLC 編碼. 儲存經過無失真壓縮的碼簿只需要消耗 311 個位元。. 第3-1.3節 建製相關的嵌入式系統 本研究使用 Arduino 開發嵌入式系統,開發工具為 Arduino Integrated Development Environment,又稱為 Arduino Software (IDE),Arduino Software (IDE)為類似 C 的程式語言,程式碼的設計架構分為宣告區、setup() function 與 loop() function,setup() function 負責初始化設定,其中包含設定變數與感測器模 組的腳位,此段函數只會執行一次;loop() function 則會不斷的重複執行,以本 研究為例,實驗的主要任務為收集一天的溫度資料,因此 loop() function 負責每 若干分鐘收集一次溫度值,並在每一個小時取平均值後儲存,不斷的重複收集 24.
(31) 第三章 物聯網量測. 小時平均溫度值,直到收集完一天的溫度資料後執行壓縮與傳輸。. 程式碼的最上層為宣告區,宣告區會在第一時間被執行,宣告區的內容分 為引入函式庫、宣告腳位名稱、宣告全域變數(Global Variable)與宣告函數,如果 有宣告函數則需要在程式碼的最下層宣告函數的內容;進行實驗所需之 VQ 碼簿 就是儲存在宣告區的全域變數,透過關鍵字 static 宣告 byte 型態的全域變數之陣 列儲存碼字。. 儲存經過無失真壓縮的 VQ 碼簿之流程分為三個步驟,步驟一是將經過 VLC 編碼的碼字強制轉型為字串型態,再使用字串型態的變數儲存字串型態的 碼字;因為本實驗使用 byte 變數之陣列儲存碼簿,所以步驟二是依照 8 個位元 切割字串,完成切割後會獲得若干個長度為 8 個字元之字串;步驟三是將 8 個 字元之字串視為無號數的二進制並轉換成對應之整數,再使用 byte 變數之陣列 依照切割的順序儲存轉換後之整數,其中最後一筆字串段落如果位元個數不足 8 個位元,則以 0 補足至 8 個位元。. 下面說明以第 3-1.2 節中的表 3.1 之碼簿為例,使用第 3-1.2 節中的表 3.2 進 行 VLC 編碼,編碼結果如表 3.3 所示: y1. 00000010101010000001100000000. y2. 00000101110111110111010100011011011011011011011011000. y3. 00000000000000000000000 25.
(32) 第三章 物聯網量測. y4. 0000010101010101000011011011011000000. y5. 0000010111011101010001111111100011011000000. y6. 0000010111011101010001101111111111000000000. y7. 0000010111011101000111100000011000000. y8. 0000011101111101010100000110110110110110110000 表 3.3 進行 VLC 編碼之結果. 步驟一是將碼字強制轉型為字串型態並使用字串變數儲存: String string[8] = { "00000010101010000001100000000", "00000101110111110111010100011011011011011011011011000", "00000000000000000000000", "0000010101010101000011011011011000000", "0000010111011101010001111111100011011000000", "0000010111011101010001101111111111000000000", "0000010111011101000111100000011000000", "0000011101111101010100000110110110110110110000"}; 步驟二是依照 8 個位元切割字串: String string1[4] = {"00000010", "10101000", "00011000", "00000"}; String string2[7] = {"00000101", "11011111", "01110101", "00011011", "01101101", "10110110", "11000"}; String string3[3] = {"00000000", "00000000", "0000000"}; String string4[5] = {"00000101", "01010101", "00001101", "10110110", "00000"}; String string5[6] = {"00000101", "11011101", "01000111", "11111000", "11011000", "000"}; String string6[6] = {"00000101", "11011101", "01000110", "11111111", "11000000", "000"}; String string7[5] = {"00000101", "11011101", "00011110", "00000110", "00000"}; String string8[6] = {"00000111", "01111101", "01010000", "01101101", "10110110", "110000"};. 步驟三是以 0 補足最後一筆字串至 8 個位元,再將 8 個字元之字串視為無號數 26.
(33) 第三章 物聯網量測. 的二進制並轉換成對應之整數,再使用 byte 變數之陣列依照順序儲存: static byte y1[4] = {2, 168, 24, 0}; static byte y2[7] = {5, 223, 117, 27, 109, 182, 192}; static byte y3[3] = {0, 0, 0}; static byte y4[5] = {5, 85, 13, 182, 0}; static byte y5[6] = {5, 221, 71, 248, 216, 0}; static byte y6[6] = {5, 221, 70, 255, 192, 0}; static byte y7[5] = {5, 221, 30, 6, 0}; static byte y8[6] = {7, 125, 80, 109, 182, 192}; 在 Arduino 內儲存經過無失真壓縮的表 3.1 之碼簿只需要消耗 42 個位元組。. 第二節 細懸浮微粒量測 直徑小於或等於 2.5 微米(µm)的懸浮微粒(Particulate Matter,PM)稱為細懸 浮微粒(PM2.5),PM2.5 資料的特性為每小時之間的濃度感測值差別很大,以古亭 測站某兩天的 PM2.5 資料為例子,如圖 3.7 所示:. 圖 3.7 古亭測站某兩天的 PM2.5 資料 27.
(34) 第三章 物聯網量測. 圖 3.7 呈現出 PM2.5 資料之間的變動幅度非常大,如果使用單一向量量化器進行 壓縮,當碼簿大小 M 設定的不夠大時會造成的壓縮失真過高,當碼簿大小 M 設 定的過大時又會造成儲存所需位元組爆增;降低碼簿儲存所需位元組的其中一 種方法為,透過將資料與碼字相減獲得餘值再繼續使用向量量化器進行壓縮以 減小餘值,此方法就是第二章第二節所說明的餘值向量量化器,RVQ 透過多級 VQ 碼字之組合,加總出多樣化的 RVQ 碼字,比較於擴增單一 VQ 的碼簿大 小,增加 RVQ 的 VQ 級數更為節省碼簿的儲存所需位元組。. PM2.5 的量測方式採用上一節的溫度量測方式,系統裝設流程也與上一節相 同,其中 PM2.5 資料取自行政院環境保護署的歷年監測資料下載區 [8],本實驗 使用位於臺北市與新北市的 19 個測站之 PM2.5 資料,測試資料的選擇方式為, 先選擇位於中間的 1 個測站後,再從東、西、南和北等方位各選擇 1 個測站, 再於 5 個測站資料中分別取出 5 年的 PM2.5 資料當作測試資料,5 個測站分別為 大同站、汐止站、新莊站、永和站和士林站;在剩餘的 14 個測站資料裡分別取 出 7 年的 PM2.5 資料當作訓練資料,14 個監測站分別為古亭站、松山站、中山 站、萬華站、陽明站、新店站、三重站、菜寮站、板橋站、土城站、林口站、 萬里站、基隆站和淡水站。相關研究有穿戴式監測裝置 [9]、可攜式個人 PM2.5 監測 [10]。. 28.
(35) 第三章 物聯網量測. RVQ 與 VLC 應用於 Arduino 量測可以降低 PM2.5 資料之傳輸量,在第二章 的第二節中有簡介包含兩級 VQ 的 RVQ 之壓縮過程與碼簿製作之流程,進行實 驗首先需要使用訓練資料的差值透過 K-Means 產生合適於 PM2.5 資料的 RVQ 碼 簿,由於 K-Means 的操作方式在上一節已經討論過,因此本節討論的重點在於 RVQ 的壓縮過程與解壓縮過程,以包含 L 級 VQ 的 RVQ 為例,全數的 VQ 之碼 簿大小皆為 M,RVQ 的壓縮過程與解壓縮過程如圖 3.8 所示。. (a)壓縮過程. (b)解壓縮過程. 圖 3.8 包含 L 級 VQ 的 RVQ 之(a)壓縮過程,(b)解壓縮過程 圖 3.8(a)為包含 L 級 VQ 的 RVQ 之壓縮過程,當 Arduino 端將 PM2.5 資料 x 29.
(36) 第三章 物聯網量測. 收集完成後,首先將 x 輸入第 1 級 VQ1 獲得代碼 ci 與碼字 y1,i,接著把 x 與 y1,i 相減得到餘值 r1,再將 r1 輸入第 2 級 VQ2 獲得代碼 cj 與碼字 y2,j,接著再把 r1 與 y2,j 相減獲得餘值 r2,接下來透過不斷的將餘值輸入至下一級 VQ 獲得新餘 值,直到輸入完最後第 L 級 VQL 得到代碼 cm、碼字 yL,m 與餘值 rL,最後使用 VLC 將餘值 rL 進行編碼,在 Arduino 端完成壓縮後,將所有級 VQ 之代碼與 VLC 編碼傳送至接收端。. 圖 3.8(b)為包含 L 級 VQ 的 RVQ 之解壓縮過程,當接收端收到所有級 VQ 之代碼與 VLC 編碼後,首先將每一級 VQ 之代碼輸入至對應的 VQ 解碼器獲得 所有級 VQ 之碼字,將其進行加總後得到 RVQ 碼字,接著再將 VLC 編碼進行 VLC 解碼後獲得餘值 rL,最後把 RVQ 碼字與 rL 相加即為完整的 PM2.5 資料 x。. 碼簿大小 M 的設定除了需要考慮到每一級 VQ 代碼 c 的長度與每一級 VQ 壓縮後的餘值 r 之外,更重要的是還需要考慮到儲存碼簿所需要的位元組,增加 M 將會造成碼簿內的感測值之分布範圍擴大,致使壓縮碼簿的 VLC 編碼長度上 升,於此同時還要儲存 L 級大小為 M 的 VQ 碼簿,因此增加 M 將會促使儲存 RVQ 碼簿所需的位元組暴增,關於詳細的參數調整過程與實驗結果於下一章再 進行討論。. 30.
(37) 第四章 數據分析. 第四章 數據分析 接下來將針對本法則進行效能評估,第四章第一節是將本法則應用於溫度 資料壓縮的數據分析,第四章第二節是將本法則應用於 PM2.5 資料壓縮的數據分 析,數據分析的內容分為資料壓縮後的平均失真、儲存碼簿所需要的位元組、 平均每天傳送位元數。. 第一節 溫度資料壓縮 首先評估本法則應用於溫度資料壓縮產生的平均失真,計算公式是根據第 二章第一節中的公式 2.4,計算結果如圖 4.1 所示,圖 4.1 呈現出當碼簿大小 M 越大則平均失真越低,比如說 M 為 8 之平均失真為 2.47、M 為 32 之平均失真為 1.33、M 為 64 之平均失真為 1.05;當 M 從 32 增加至 64 之平均失真的下降幅度 明顯趨緩,當 M 從 64 增加至 128 之平均失真的下降幅度更為趨緩。. 圖 4.1 本法則應用於溫度資料壓縮產生的平均失真 31.
(38) 第四章 數據分析. 其次評估儲存碼簿所需要的位元組,比較原始碼簿與經過無失真壓縮後之 碼簿做儲存所需要的位元組,如圖 4.2 所示,圖 4.2 呈現出當碼簿大小 M 越大則 儲存所需要的位元組越高,比如說經過無失真壓縮後之 M 為 8 的碼簿做儲存需 要 46 個位元組、M 為 32 的碼簿儲存需要 196 個位元組、M 為 64 的碼簿儲存需 要 397 個位元組;當碼簿大小 M 增加為兩倍後之儲存所需位元組也升高約為兩 倍,但是 M 從 64 增加至 128 之平均失真的下降幅度很小,儲存所需要的位元組 卻由 397 個位元組增加至 813 個位元組,大幅度增加實作上的難度卻只得到更 好一點的壓縮效果。. 圖 4.2 儲存碼簿所需要的位元組 接下來評估本法則平均每天傳送位元數,在第二章第三節有說明本法則的 壓縮流程共有兩道程序,第一道程序是使用 VQ 壓縮溫度資料,第二道程序是使 用 VLC 壓縮第一道程序所產生的壓縮失真,另外也可以單獨只使用 VQ 壓縮溫. 32.
(39) 第四章 數據分析. 度資料;如果不做壓縮並一次性傳送溫度資料,則平均每天傳送位元數為 144 個位元;如果不做壓縮並每小時分別傳送溫度資料,則平均每天傳送位元數為 192 個位元,因為本研究使用的函式庫在傳送資料時最小的傳送單位為 1 個位元 組;接下來比較只使用 VQ 進行溫度資料壓縮與使用本法則進行溫度資料壓縮之 平均每天傳送位元數,如圖 4.3 所示,圖 4.3 呈現出當碼簿大小 M 越大則表示 VQ 代碼所需的位元數越多,還有當 M 越大則本法則的平均每天傳送位元數越 低,比如說當本法則的 M 為 8 之平均每天傳送位元數為 79.56 個位元、M 為 32 之平均每天傳送位元數為 65.48 個位元、M 為 64 之平均每天傳送位元數為 61.76 個位元;當本法則的 M 從 64 增加至 128 之平均每天傳送位元數只有稍微減少 2.94 個位元,只獲得更好一點點的壓縮效果卻會造成實作難度大幅度增加。. 圖 4.3 平均每天傳送位元數 接下來進行數據分析,圖 4.3 呈現只使用 VQ 進行溫度資料壓縮時,當碼簿. 33.
(40) 第四章 數據分析. 大小 M 為 64 之平均每天傳送位元數為 6 個位元且平均失真為 1.05 度,使用本 法則進行無失真壓縮時,當碼簿大小 M 為 64 之平均每天傳送位元數由 6 個位元 增加至 61.76 個位元,需要額外付出傳送 55.76 個位元之代價,但平均每天傳送 位元數還是低於一次性傳送溫度資料並不做壓縮所耗費的 144 個位元。. 第二節 細懸浮微粒資料壓縮 首先評估本法則應用於細懸浮微粒資料壓縮產生的平均失真,計算公式是 根據第二章第一節中的公式 2.4,當碼簿大小 M 為 2 且 RVQ 包含的 VQ 級數 L 為 8 至 64 時,平均失真的計算結果如圖 4.4 所示,圖 4.4 呈現出當級數 L 越大 則平均失真越低,比如說 L 為 8 之平均失真為 15.51、L 為 32 之平均失真為 7.02、L 為 64 之平均失真為 2.73;當 L 從 8 增加至 32 之平均失真的下降幅度明 顯趨緩,當 L 從 32 增加至 64 之平均失真的下降幅度更為趨緩。. 圖 4.4 本法則應用於細懸浮微粒資料壓縮產生的平均失真 34.
(41) 第四章 數據分析. 其次評估儲存碼簿所需要的位元組,比較原始碼簿與經過無失真壓縮後之 碼簿的儲存所需位元組,當碼簿大小 M 為 2 時儲存所需位元組如圖 4.5 所示, 圖 4.5 呈現出當 RVQ 包含的 VQ 級數 L 越多則儲存所需位元組越高,比如說經 過無失真壓縮後之 L 為 8 的碼簿之儲存所需位元組為 103 個位元組、儲存 M 為 32 的碼簿需要 363 個位元組、儲存 M 為 64 的碼簿需要 646 個位元組;當級數 L 增加時,後來增加的碼簿之儲存所需位元組會略低於前一級的碼簿,但是 L 從 32 增加至 64 之平均失真的下降幅度很小,儲存所需位元組卻會增加 283 個位元 組,大幅度增加實作上的難度卻只得到更好一些的壓縮效果。. 圖 4.5 儲存碼簿所需要的位元組 接下來評估本法則平均每天傳送位元數,在第二章第三節有說明本法則的 壓縮流程共有兩道程序,第一道程序是使用 RVQ 壓縮細懸浮微粒資料,第二道 程序是使用 VLC 壓縮第一道程序所產生的壓縮失真,另外也可以單獨只使用. 35.
(42) 第四章 數據分析. RVQ 壓縮細懸浮微粒資料;由於大多數的細懸浮微粒感測值之分布範圍於 0 至 255,因此本研究使用 8 個位元表示細懸浮微粒感測值,倘若感測值超出 8 個位 元之表示範圍,則本系統只發出警告並不做壓縮;如果不做壓縮並一次性傳送 細懸浮微粒資料,則平均每天傳送位元數為 192 個位元;如果不做壓縮並每小 時分別傳送溫度資料,則平均每天傳送位元數也為 192 個位元,因為本研究使 用的函式庫在傳送資料時最小的傳送單位為 1 個位元組,且一筆感測值也是以 8 個位元表示;接下來比較只使用 RVQ 進行細懸浮微粒資料壓縮與使用本法則進 行細懸浮微粒資料壓縮之平均每天傳送位元數,如圖 4.6 所示,圖 4.6 呈現出當 RVQ 包含的 VQ 級數 L 越多則表示 RVQ 代碼所需的位元數越多,還有當 L 越大 則本法則的平均每天傳送位元數越低,比如說當本法則的 L 為 8 之平均每天傳 送位元數為 180.24 個位元、L 為 32 之平均每天傳送位元數為 156.98 個位元、L 為 64 之平均每天傳送位元數為 143.16 個位元;當本法則的 L 從 32 增加至 64 之 平均每天傳送位元數只有減少 13.82 個位元,只獲得更好一些的壓縮效果卻會造 成實作難度大幅度增加。. 36.
(43) 第四章 數據分析. 圖 4.6 平均每天傳送位元數 接下來進行數據分析,圖 4.6 呈現只使用 RVQ 進行溫度資料壓縮時,當碼 簿大小 M 為 2 且 RVQ 包含的 VQ 級數 L 為 32 之平均每天傳送位元數為 40 個位 元且平均失真為 7.02,使用本法則進行無失真壓縮時,當級數 L 為 32 之平均每 天傳送位元數由 40 個位元增加至 156.98 個位元,需要額外付出傳送 116.98 個 位元之代價,但平均每天傳送位元數還是低於一次性傳送細懸浮微粒資料並不 做壓縮所耗費的 192 個位元。. 當碼簿大小 M 為 4 且 RVQ 包含的 VQ 級數 L 為 4 至 32 時,根據公式 2.4 計算得到的平均失真如圖 4.7 所示,圖 4.7 呈現出與圖 4.4 相似的下降幅度,接 著比較圖 4.7 與圖 4.4 的平均失真,在相同的 RVQ 代碼長度下,例如 M 為 2 且 L 為 32 時 RVQ 代碼長度為 32-bit,例如 M 為 4 且 L 為 16 時 RVQ 代碼長度為 32-bit,顯現出 M 為 4 的 RVQ 有較低的平均失真。. 37.
(44) 第四章 數據分析. 圖 4.7 當碼簿大小 M 調整為 4 並進行壓縮產生的平均失真. 圖 4.8 當碼簿大小 M 調整為 4 的碼簿做儲存所需要的位元組 當碼簿大小 M 為 4 時儲存所需位元組如圖 4.8 所示,比較圖 4.8 與圖 4.5 的 碼簿儲存所需位元組,在相同的 RVQ 代碼長度下,例如 M 為 2 且 L 為 32 時 RVQ 代碼長度為 32-bit,例如 M 為 4 且 L 為 16 時 RVQ 代碼長度為 32-bit,顯 示出儲存 M 為 4 的 RVQ 碼簿所需的位元組較多。. 當碼簿大小 M 為 4,平均每天傳送位元數如圖 4.9 所示,比較圖 4.9 與圖 38.
(45) 第四章 數據分析. 4.6 的平均每天傳送位元數,在相同的 RVQ 代碼長度下,例如 M 為 2 且 L 為 32 時 RVQ 代碼長度為 32-bit,例如 M 為 4 且 L 為 16 時 RVQ 代碼長度為 32-bit, 顯示出 M 為 4 的平均每天傳送位元數較低。. 圖 4.9 當碼簿大小 M 調整為 4 的平均每天傳送位元數 接下來進行數據分析,比較 M 為 2 與 M 為 4 的 RVQ 之平均失真、儲存碼 簿所需要的位元組、平均每天傳送位元數,在相同的 RVQ 代碼長度下,例如 M 為 2 且 L 為 32 時 RVQ 代碼長度為 32-bit,例如 M 為 4 且 L 為 16 時 RVQ 代碼 長度為 32-bit,此時 M 為 4 的 RVQ 有較低的平均失真、較低的平均每天傳送位 元數,但是儲存 M 為 4 的 RVQ 碼簿所需的位元組高於 M 為 2 的 RVQ 碼簿;因 此增加 RVQ 內的 VQ 碼簿大小 M 能夠有效的降低平均失真與平均每天傳送位元 數,但是卻會造成儲存 RVQ 碼簿所需要的位元組上升,而且當 M 增加的越大將 會造成的儲存 RVQ 碼簿所需的位元組也會上升的越多,調整 RVQ 的參數 M 及. 39.
(46) 第四章 數據分析. 級數 L 與儲存 RVQ 碼簿所需要的位元組之關係如表 4.1、如表 4.2、如表 4.3 所 示。. L. 8. 16. 24. 32. 40. 48. 56. 64. Bytes. 103. 194. 282. 363. 438. 511. 583. 646. 表 4.1 當 M 設定為 2 時,儲存 RVQ 碼簿所需要的位元組 L. 4. 8. 12. 16. 20. 24. 28. 32. Bytes. 131. 242. 342. 436. 524. 603. 682. 752. 表 4.2 當 M 設定為 4 時,儲存 RVQ 碼簿所需要的位元組 L. 2. 4. 6. 8. 10. 12. 14. 16. Bytes. 357. 681. 1038. 1253. 1469. 1700. 1887. 2088. 表 4.3 當 M 設定為 16 時,儲存 RVQ 碼簿所需要的位元組 綜合上述討論,由於本研究使用 Arduino UNO 進行實驗,UNO 的記憶體大 小只有 2048 個位元組,除了編譯器只允許使用低於 80%的記憶體之外,另外還 需要考慮到撰寫系統的各種功能之程式碼還需要使用到記憶體,因此建議將 RVQ 的參數 M 設定為 2、參數 L 設定為 32,儲存此參數設定的 RVQ 碼簿只需 要使用 363 個位元組,RVQ 的平均每天傳送位元數為 40 個位元且平均失真為 7.02,本法則的平均每天傳送位元數為 156.98 個位元。. 40.
(47) 第五章 結論. 第五章 結論 本論文提出的壓縮法則具有較低的記憶體消耗之特性,由於物聯網中負責 進行量測的相關嵌入式系統的硬體資源有限,因此本法則適合應用於物聯網量 測;實驗透過運用本法則於溫度量測與細懸浮微粒量測進行效能評估,驗證了 本法則的碼簿具有較低的儲存所需位元組,並且有效的降低了資料傳送位元 數。. 在有限的記憶體資源中,單一向量量化器能夠擴增的碼簿大小很有限,且 單一 VQ 碼簿擴增後的儲存所需位元組非常高;本法則透過多級的向量量化器之 架構,使得多級 VQ 碼字之組合加總出多樣化的 RVQ 碼字,比較於擴增單一向 量量化器的碼簿大小,增加 VQ 級數更為節省碼簿的儲存所需位元組。. 增加 RVQ 內的 VQ 碼簿大小 M 能夠有效的降低平均失真與平均每天傳送位 元數,但是卻會造成儲存 RVQ 碼簿所需要的位元組上升,而且當 M 增加的越大 所造成的儲存所需位元組也會上升的越多。在定量的記憶體中,M 較低的 RVQ 所能夠擴充的 VQ 級數 L 越多,越多級的 VQ 碼字可以組合加總出更多種的 RVQ 碼字,在一般的量測情況下,相較於 M 較高且級數 L 較少的 RVQ,M 較 低且級數 L 較多的 RVQ 具有更好的壓縮效果,例如表 4.3 中 M 為 16 且 L 為 4 的 RVQ 碼簿需要使用 681B 做儲存,RVQ 碼字的種類為 164 =216 種,例如表 41.
(48) 第五章 結論. 4.1 中 M 為 2 且 L 為 64 的 RVQ 碼簿需要使用 646B 做儲存,RVQ 碼字的種類為. 264 種。. 42.
(49) 參考著作 [1] Y. Li, Z. Zhang, W. Huangfu, X. Chai, X. Zhu and H. Zhu, “Sea Route Monitoring System Using Wireless Sensor Network Based on the Data Compression Algorithm,” China Communications, no.1, pp. 219-222, 2014.. [2] A. Gersho and R. M. Gray, Vector Quantization and Signal Compression, Kluwer Academic, 1992.. [3] J. Fang and H. Li, “Hyperplane-Based Vector Quantization for Distributed Estimation in Wireless Sensor Networks,” IEEE Transactions on I. T., vol. 55, no. 12, pp. 5682-5699, Dec. 2009.. [4] H. Si, B. L. Ng, Md. S. Rahman and J. Zhang, “A Novel and Efficient Vector Quantization Based CPRI Compression Algorithm,” IEEE Transactions on V. T., vol. 66, no. 8, pp. 7061-7071, Aug. 2017.. [5] J. Paek and J. Ko, “K-Means Clustering-Based Data Compression Scheme for Wireless Imaging Sensor Networks,” IEEE Systems J., vol. 11, no. 4, pp. 2652-2662, Dec. 2017.. [6] Central Weather Bureau, CODiS(CWB Observation Data Inquire System), Available:http://e-service.cwb.gov.tw/HistoryDataQuery/. [7] Ernie's leisure code, Web crawler on observation data using python, Available: http://ernie55ernie.github.io/python/2016/08/26/web-crawler-on-observation-datausing-python.html. [8] Environmental Protection Administration Executive Yuan R.O.C.(Taiwan), 歷年監 43.
(50) 測資料下載, Available:https://taqm.epa.gov.tw/taqm/tw/YearlyDataDownload.aspx. [9] C. Cheng-Ta, “Design of a High-Sensitivity Ambient Particulate Matter 2.5 Particle Detector for Personal Exposure Monitoring Devices,” IEEE Sensors J., vol. 18, no. 1, pp. 165-169, Jan. 2018.. [10] H. Yin, H. Wan and A. J. Mason, “Separation and Electrochemical Detection Platform for Portable Individual PM2.5 Monitoring,” 2017 IEEE I.S.C.A.S., pp. 1-4, 2017.. 44.
(51)
Outline
相關文件
• 測驗 (test),為評量形式的一種,是觀察或描述學 生特質的一種工具或系統化的方法。測驗一般指 的是紙筆測驗 (paper-and-pencil
第二十四條 學、術科測 試辦理單位應遴聘具有 下列資格之一者,擔任 學科測試及術科測試採 筆試非測驗題方式之監 場人員:. 一、
統計報表-全院及各單位均可設定日期區間監測 MDROs 數量趨勢:(1)泡泡圖:可設定菌種數量級 距及泡泡呈現的大小,以便從統計圖上監測
他所測量了相對成長率 (dP/dt)/P 大約為 0.7944 ,而環境容 量上限大約為 64 。.
由不同的物 料製成同樣重量的 降落傘的降落速度 也會不一樣。. 風力、拋擲的方法 、懸墜物的重量等
1932 年提出李克特量表( Likert Scale ),是一種 心理測量量表,通常用於問卷設計,為目前最受調查 研究者廣泛使用的測量方法.
為了更進一步的提升與改善本校資訊管理系 的服務品質,我們以統計量化的方式,建立
序號 查檢資料 對應題號. 9