Print By number :: Reduce data discrepancies via machine learning

通過機器學習減少數據差異

Reduce data discrepancies via machine learning

手邊越來越多測量色彩的儀器,量測出來的數值都不太一樣,這個"不一樣"是可以理解的:不同的感應元件、不同的物理結構、不同的校正邏輯、不同的優化演算,得到的數值不同可以理解。但差異要在多少之內才算堪用?即使是臺幣20萬以上的儀器,還是會有一個de00的差距;那這些祇有幾千塊的儀器,我們能有多少期待?

當然不會期待這些低階的儀器拿來做Fogra、G7、gmi這類的認證;但作為一個將色彩感官導入為數值概念的這樣一個敲門磚的性質,我一樣認可這些低階的設備。

對於這些敲門磚性質、低階儀器的精准度,我認為兩個de00 是堪用的。

對於這些低階儀器的運用,更重要的是想法的轉變:色彩這一個主觀的感受,經由儀器,色彩會是一個清楚的數字;一旦是數字,我們在驗收或是操作控制上,都能有更好的掌握。對於這些低階的儀器精準度,即使只帶到兩個de00的位置,我還是持正面的態度。再強調一次,對於這些會拿儀器來看待色彩的使用者,有能力或者有意願將色彩當成數字來處理的人,思考模式的轉變、才是最重要的意義。

以下數據是以 Fogra media  wedge CMYK V3(72格)取樣,某低階儀器相對於i1Pro3差異為最大1.79de00,平均0.91de00。我認為這樣的敲門磚算是堪用了。

Fig. 以Fogra media  wedge CMYK V3(72格)取樣,某低階儀器相對於i1Pro3差異為:最大1.79de00,平均0.91de00。

除了準度夠不夠好,另一個想法是:這個色彩現象現在已經是一個數字,一旦是數字,我們就可以透過一些數學(統計學)程序來優化這些數字,讓儀器之間呈現的數值可以更接近。不管低階高階,對我來説,是有必要去找一個工作程序,讓兩個儀器的數字更接近。

最近接觸到 Machine learning,就試試其中幾個工具,看能不能達成預期的效果。

Fig. python machine learning 工具

稍微瞭解一下 python machine learning 的功能,看來是很多統計學的工具庫,主要是在調用上顯得方便零活許多。內容很多,需要一些時間去消化理解。這次先試試 Multiple Regression 看看能有什麼成果。

首先,要怎麼餵資料就是一門學問:要多少樣本數?色彩樣本的分佈情況?樣本的參考點要設多少個?怎麼設?

一方面要增加精度、一方面又要讓操作儘量精簡;各種方面的考慮需要不斷的Trial and error去找到最佳的組合。

Fig. Fogra media  wedge CMYK V3

這一次用Fogra media wedge CMYK V3(72格)取樣,以i1 Pro3 的數值做為目標組,CR30的數值做為實驗組,如上圖所示,72個數據下來,最大差異1.79de00,平均差異0.91de00。

試著用multiple regression 做兩組數據間的關聯;分別試了一次方的關聯與三次方的關聯,結果如下:

72個訓練樣本,一次方(degree=1)、三個變項(L,a,b)關聯,

由machine learning 得出來的關聯式如下:

L(predict)=-0.6322502637360+1.02341127*L(measured)+0.01230391*a(measured)-0.00582456*b(measured)

a(predict)=-0.5175238518122+0.00349049*L(measured)+1.00839398*a(measured)-0.00698096*b(measured)

b(predict)=0.6629766575213-0.01703327*L(measured)-0.01942645*a(measured)+1.00670896*b(measured)

經由關聯式修正CR30量測值,與i1Pro3的最大差距由1.79 de00 降到 1.57 de00,平均差距由0.91 降到 0.45 de00,算是有効的訓練。

Fig. 72個訓練樣本,一次方(degree=1)、三個變項(L,a,b)關聯,最大差距 1.576 de00,平均差距 0.445 de00

試著用三次方(degree=3)三個變項(L,a,b)關聯

由於machine learning 得出來的關聯式過於複雜,用程式代碼來代表一下。

三個變項、三次方關聯序:

‘l’, ‘a’, ‘b’, ‘l^2’, ‘l a’, ‘l b’, ‘a^2’, ‘a b’, ‘b^2’, ‘l^3’, ‘l^2 a’, ‘l^2 b’, ‘l a^2’, ‘l a b’, ‘l b^2’, ‘a^3’, ‘a^2 b’, ‘a b^2’, ‘b^3’

共19項。

程序碼如下:

Predict = intercept +regression_model.coef_[1]*mL+regression_model.coef_[2]*ma+regression_model.coef_[3]*mb+regression_model.coef_[4]*pow(mL,2)+regression_model.coef_[5]*mL*ma+regression_model.coef_[6]*mL*mb+regression_model.coef_[7]*pow(ma,2)+regression_model.coef_[8]*ma*mb+regression_model.coef_[9]*pow(mb,2)++regression_model.coef_[10]*pow(mL,3)++regression_model.coef_[11]*pow(mL,2)*ma+regression_model.coef_[12]*pow(mL,2)*mb++regression_model.coef_[13]*mL*pow(ma,2)+regression_model.coef_[14]*mL*ma*mb++regression_model.coef_[15]*mL*pow(mb,2)+regression_model.coef_[16]*pow(ma,3)+regression_model.coef_[17]*pow(ma,2)*mb+regression_model.coef_[18]*ma*pow(mb,2)+regression_model.coef_[19]*pow(mb,3)

L intercept = -3.3311399027457753

L coefficients = [1.17959558e+00,1.51891147e-02,1.67282780e-02,-2.49762450e-03,-1.09825293e-04,-1.09264761e-03,-1.50801917e-04,-2.44847912e-04,6.39178595e-04,1.17880166e-05,-5.01404941e-07,1.11556891e-05,2.25110985e-06,6.49420255e-06,-1.11279844e-05,1.39766751e-06,-6.58363756e-07,-3.61386136e-06,2.77494282e-06]

a intercept = 0.3279017535550137

a coefficients = [-3.31344905e-02,1.08827162e+00,1.32214608e-03,5.74573847e-04,-2.14549183e-03,-3.29938673e-04,-1.10366977e-03,-1.52137755e-04,4.83060199e-05,-3.00381953e-06,1.08584656e-05,2.18611803e-06,1.55290706e-05,3.73154456e-06,5.74063836e-07,1.41496091e-06,2.62797607e-06,-9.81271691e-07,1.41858407e-07]

b intercept = 0.08716778562166638

b coefficients = [5.57303728e-03,-6.06917904e-02,1.07554181e+00,-4.97617821e-04,2.19794160e-03,-7.81213339e-04,5.98329555e-04,-2.34457666e-04,7.51041096e-04,3.71288376e-06,-1.94526634e-05,-1.63889837e-06,-8.64799163e-06,-3.87728970e-06,-3.76102212e-06,-4.37681031e-06,-1.17723242e-05,-2.55467020e-06,-5.85244726e-06]

三個變項,三個次方的關聯,產生多達19個迴歸係數;如此龐大的計算量,在 python sklearn 套件裏,排除掉資料宣告,只要三個敍述就可得出預測關聯式。套件的使用非常方便,重要的是要想清楚工作邏輯、數據關聯與取樣設計。

Fig. python sklearn 三個敍述即可取得由19個迴歸係數組合成的預測值。

經由三次方迴歸預測,CR30與i1Pro3的最大差距由1.79 de00 降到 0.63 de00,平均差距由0.91 降到 0.22 de00,是非常有効的訓練。

Fig. 72個訓練樣本,三次方(degree=3)、三項次(L,a,b)關聯,最大差距  0.63 de00,平均差距 0.22 de00


Fig. 三次方(degree=3)、三項次(L,a,b)關聯,L值的目標與預測

Fig. 三次方(degree=3)、三項次(L,a,b)關聯,a值的目標與預測

Fig. 三次方(degree=3)、三項次(L,a,b)關聯,b值的目標與預測

如此有效的訓練,最大差距 0.63 de00,平均差距 0.22 de00,這樣的數值差距堪比20萬級距的設備了,但這只是訓練組裏的樣本,其它的量測值一樣能達到這樣的成果嗎?

再測了三個不在訓練組的測試點,分別為Lab (50.69,65.07,47.67)、 (86.81,1.55,11.29)及(71.69,32.55,-0.15);CR30修正前差距為de00 2.14、2.42、1.61,一次方修正結果為1.10、1.83、0.49,有達到修正效果。三次方修正結果為0.52、1.87、0.55,除第二個樣本(86.81,1.55,11.29)修正有限,其它兩個樣本可以從2個de00修正0.5左右,算是很有効的修正。

Fig. Fogra media  wedge 訓練組之外的三個樣本。

Fig. 訓練組外三個樣本的修正值,分一次方修正及三次方修正。

剛開始接觸 Machine learning,這樣的成果算是有達到我的預期。

之所以會帶出Machine learning這個題目,一開始,很單純的,手邊好幾個量測工具,只是希望它們的數據能夠更加一致。

把這個題目的使用場景繼續擴大,讓任意兩個量測儀器經由一套學習模式,數值能夠彼此接近。

一個場景可以是客戶與生成端的儀器互相學習,這樣在客戶與生產端各自使用儀器時,能更加相互信任,減少爭議。這樣的應用場景,也可以是生產單位綁定客戶的一種技術手段,這個場景的設定是,客戶用較低階的儀器向生產單位高階的儀器學習,客戶的這個學習成果,衹能針對他學習對象的單位,如此,生產單位即以此數據(對應表)來綁定客戶的忠誠度。

也可以是同一單位各個部門的儀器,統一學習一個目標;比如業務部門較低階的儀器去學習生產部門較高階的儀器。這樣運用的想像,可以撒出更多低階的儀器到各個部門,有助於把色彩即是數字的概念營造起來的同時,背後還能有一個精准度的支撐。

以這一次的學習案例已經能看到一些成效。但就如同前面所述,操作的方便性與精准度的要求還是必須找出一個平衡點。其實這一次測試,一次方的學習,也能帶來相當的效果;三次方的學雖然帶來了更好的結果,但在部署上相對複雜很多。

類似這樣子平衡點的取捨,諸如樣本訓練數量,樣本分佈方式,機器學習的工具運用……都還在嘗試當中。

另外一種想法是,用icc profile的操作概念:對色彩設備取樣訓練,透過icc profile,設備間的色彩就可以一致。

同樣的,對兩個儀器間做取樣訓練,建立兩個儀器間的profile(or look up table),透過icc profile的運作方式,兩個儀器間的數字就可以相互接近。

還有很多machine learning的工具還在摸索,這衹是個開頭,除了在儀器間數據一致性的應用之外,我也在想著能在這個產業的什麼地方也能用得上?比如印刷機的各種變數怎麼樣關聯到印刷機的調校週期?生產時的即時數據怎麼樣關聯到印前部門、管理部門及品管部門的操作策略?這些數據又怎麼關聯到客戶驗收的喜好度?

擺在眼前的是越來越便宜的計算能力,越來越強大的應用模組。但前提是要數據,即使是這類低階的儀器,不管再低階,它總是數據的開端。或許也是個機會,經由這些低階的色彩儀器,讓更多人建立起色彩即是數字的概念,讓這個產業的運作可以再往前前進一步。

Be the first to like.
pixelstats trackingpixel

無迴響

rssComments RSS   transmitTrackBack Identifier URI

No comments. Be the first.

addLeave a comment