武迪 張思 袁中果
【摘 要】計算思維的問題解決,第一步是把握問題的核心要素,通過抽象、建模,形成問題的完整模型;第二步是求解問題,為問題求解提供約束,設計算法實現(xiàn)計算機的自動化求解;第三步是遷移應用的思維方式,引入,他山之石可以攻玉;遷出,用于其他問題達到舉一反三、一通百通?!爸悄苋レF問題”一課圍繞信息時代的核心素養(yǎng)之一——計算思維展開,通過一個前沿、有趣、創(chuàng)新、交叉的研究問題培養(yǎng)學生的問題解決能力及思維方式,將國際頂級前沿研究的原始創(chuàng)新之美引入中學課堂,讓學生體會、體驗、實踐,經(jīng)歷發(fā)現(xiàn)創(chuàng)新的問題并解決的思維過程。
【關鍵詞】計算思維;人工智能;建模;智能除霧;欠定問題;跨學科
【中圖分類號】G434 【文獻標識碼】A
【論文編號】1671-7384(2021)02、03-102-04
計算思維教育是信息時代發(fā)展的需要,融合創(chuàng)新是信息時代發(fā)展的重要途徑。教師可以引導學生用計算思維促進信息科技創(chuàng)新。
分析問題:建立成像模型
“智能去霧問題”一課引入環(huán)節(jié),教師首先請學生思考:霧到底引起了什么樣的問題?霧的出現(xiàn)可能會導致交通、安防監(jiān)控、甚至國防戰(zhàn)場上的難題,即主要會產(chǎn)生能見度低的問題。再請學生思考:如何解決能見度低的問題?
以開車舉例,學生可能會提到借助一些外部的硬件,如超聲、雷達等,通過增加其他維度的輸入信息,幫助解決能見度低導致看不清的問題。再請大家進一步思考:如果沒有任何額外的輸入信息,在只有原始圖像的情況下能否解決問題。至此,明確智能去霧的研究問題是輸入一幅僅有的原始有霧圖像,我們希望輸出對應的去霧后的清晰圖像。
教學活動:請學生在具體問題解決之前建立STEAM多學科領域分解模型,在后續(xù)問題求解的過程中,讓學生分組關注不同的領域。在跟隨教師探究問題求解的過程中,將學生按行分組,聚焦每個領域在問題解決中的重要作用,在課程進行的過程中,重點關注去霧問題如何與這個領域相結合。在問題求解完成反思回顧階段,將學生按列分組,聚焦跨學科融合創(chuàng)新,如用到了這個領域的什么知識,還是未來可以用于這個領域的發(fā)展等。重新分組,每個組都有之前STEAM的成員,每個新的組都可以從各個學科領域交流、探討這個問題是如何解決的。在這里,學生們的思維碰撞、交叉創(chuàng)新可能會有一些有趣的想法產(chǎn)生。
1.圖像表示的建模
教師引導學生思考去霧問題的研究對象。去霧問題主要研究對象就是圖像,因此,首先要對數(shù)字圖像進行建模。針對這一問題,我們從簡單到復雜,分步驟分階段逐步建立完整的圖像表示模型——單通道圖像:二維信息;三通道彩色圖像:三維信息;帶有透明度通道的彩色圖像:四維圖像。
單通道的灰度圖,在增加了顏色信息后變成了三通道的彩色圖,而在真實世界場景中可能有類似半透明的效果。教師請學生思考在計算機中是如何實現(xiàn)圖像建模的,并通過課堂實踐,用Python程序將彩色圖像進行各通道分解。
對于帶有透明度通道的圖像模型,如果某個像素位置的透明度通道是白色,表示該像素不透明;反之,如果透明度通道為黑色,表示該像素完全透明;如果是灰色,表示介于中間狀態(tài)的某種半透明效果。教師可以引導學生建立已有知識之間的映射,透明度通道就是學生在Photoshop軟件中用過的“圖層蒙版”。
教學活動:探究帶有透明度通道的彩色圖像模型。學生運行程序,觀察程序運行結果,思考在三通道彩色圖的基礎上增加了什么信息?多出的這個通道是什么?
2.有霧場景的成像模型
學生完成圖像建模之后,接下來分析第二個子問題:有霧的圖片是如何形成的,即如何對有霧情形下的成像過程進行建模。光從物體表面出發(fā),在到達成像平面的過程中,并非是真空的理想情況,往往要在介質中傳播。同一個場景的成像結果,在晴天、陰霾、濃霧、雨天等不同天氣條件下明顯不同。當有霾、有霧時,空氣中還會有比空氣分子更大的微粒,如灰塵、水滴和來自污染物的顆粒。這些微粒的尺寸基本接近或大于入射光波長,這時候發(fā)生的散射作用使大部分能量向前,小部分能量向后,說明由于散射的作用,在光線原本傳播方向上的能量有一定的衰減。這種散射叫米散射(也叫粗粒散射)。它的作用是使得光線的能量在原本方向上有所衰減。
有了散射粒子的物理模型,教師引導學生來看成像的場景,如圖1所示,假設物體表面發(fā)出的光線強度為J,在空氣中傳播,經(jīng)過空氣中的粗粒散射,入射到人眼中時,光線的輻射強度會變弱,這說明光線發(fā)生了衰減。將輻射強度J乘以一個小于1的系數(shù),叫透射系數(shù),用符號t表示,距離近,透射多,t就大,距離遠,透射少,t就小。根據(jù)物理上的大氣散射模型,透射系數(shù)和場景深度是指數(shù)衰減的關系。我們見到的有霧圖像中感覺有灰白的一層,這是為什么?光是射向四面八方的,不管我們想要與否,總有一些原來其他方向的光線被微粒介質不小心散射,傳播方向發(fā)生了變化,入射到和被衰減光線同樣的方向上,進入圖像上同一個像素中。這種意外的巧合來自方方面面,我們把它總稱為空氣光部分。
散射作用讓我們有失有得,“失”對應于目標光線(想要的場景光線)被衰減,“得”對應于來自四面八方的意外空氣光(不想要的意外噪聲)。這兩部分共同作用,讓場景圖像降質,形成一幅有霧的“看不清”的圖像。
真實圖像為I,想得到的目標圖像為J,透射系數(shù)t的圖像和深度圖d有直接對應關系,是符合衰減規(guī)律的指數(shù)關系。空氣光的顏色A是一個常數(shù)。(x,y)表示像素的行列坐標位置。
求解問題:暗通道先驗,求解欠定問題
1.明確問題求解的難點
智能去霧問題的輸入是只有一幅有霧的圖像I,輸出是清晰的去霧圖像J,同時副產(chǎn)品還有透射系數(shù)t,也就等價于直接和它相關的深度圖d。已知一個條件,求解兩個未知數(shù),已知信息不夠,這類問題屬于欠定問題。
教師在此可以向學生介紹什么是正定問題、欠定問題和超定問題。正定問題是條件數(shù)量與未知數(shù)的數(shù)量一樣多,欠定問題是條件數(shù)量少于未知數(shù)的數(shù)量,超定問題恰好相反,指的是條件數(shù)量多于未知數(shù)的數(shù)量,也即條件可能是相互矛盾的。欠定問題因為條件(約束)不足,可能有多種可能性的解,即解具有不確定性。本例的去霧問題就是一個欠定問題,具體分析如下:已知僅有I,未知有J和t(或者說d),這樣的情況下,解有無窮多種組合,如深度為0,t為1,J就是I;d比真實值要小,求出來的J就還是有霧,但是比原來的淡一點點;再如d是真實值,J的結果就是期望的去霧結果。
欠定問題的求解必須要增加條件(或約束)。本課例中,學生學習的去霧算法最重要的創(chuàng)新點就是通過大量數(shù)據(jù)統(tǒng)計提出圖像的先驗知識,用于約束欠定問題的求解。
2.建立問題求解的約束
暗通道先驗是去霧問題最重要的創(chuàng)新點,是解決上面的欠定問題的關鍵。我們從圖2來看,上左列為輸入圖像,上右列為計算得到的暗通道圖,下圖是暗通道圖對應的統(tǒng)計直方圖。圖中可以看到無霧圖暗通道的像素值絕大部分都是接近黑色的,有霧圖暗通道的分布則比較分散,大多數(shù)像素的值在50~200之間。
教學活動:探究暗通道先驗的實踐。學生執(zhí)行相應程序,輸入圖片為10張圖,5張無霧,5張有霧。由于圖片眾多,教師組織分組實踐,每個學生對比兩張輸入圖片,并在石墨共享文檔的相應位置中,填出相應的運行結果。思考無霧圖的暗通道與有霧圖的暗通道圖像有何區(qū)別?它們的直方圖有何區(qū)別?為什么?
對一張圖求暗通道,本質上就是兩次求最?。簩︻伾ǖ狼笞钚。瑢臻g小區(qū)域求最小。暗通道先驗就是兩次求最小操作之后得到的結果,趨近于0。去霧研究工作對5000張無霧圖像進行了大規(guī)模直方圖統(tǒng)計,結果是86%的像素都接近于0。因此,暗通道先驗得到了很好的驗證。接下來從物理角度解釋暗通道的產(chǎn)生,即暗通道圖低亮度主要來源于3個原因:陰影、彩色物體或者表面以及黑色物體或者表面。
教學活動:基于暗通道先驗的去霧模型求解。學生執(zhí)行程序,觀察結果。學生在不同圖片上運行去霧算法,對照算法探究程序的實現(xiàn)。請學生思考當前算法的結果在哪些情況下效果較好,哪些情況下還需要改進?為什么?
遷移應用:暗通道先驗與其他問題
以上第二部分的求解是去霧算法的核心,基于暗通道先驗的去霧算法既創(chuàng)新也簡單,得到的去霧效果圖像在大部分區(qū)域的接受范圍內。然而在某些地方還有明顯的瑕疵,這些地方主要是場景深度有明顯變化的地方,因為這種情況下求解算法中假設的“區(qū)域小塊中所有像素的值都相同”的條件不再成立,深度有突變,透射系數(shù)t也會有突變,常數(shù)的假設不再成立,因此算法需要對現(xiàn)有的結果進一步改進。智能去霧的改進算法也非常巧妙,這個改進算法并非是作者原創(chuàng),而是將其他領域的算法引入進來,他山之石可以攻玉。
在第一部分,教師已經(jīng)引入透明度通道,這里可以拓展一下,在計算機視覺、圖形學、圖像處理領域,有一大類研究專門做自動摳圖的算法,將圖像中的前景從背景中分離出來。如果場景都是由完全不透明的物體組成,摳圖相對比較容易,前景和背景用二值進行區(qū)分即可,然而真實情形下,場景中或多或少存在部分透明的情況,如毛發(fā)、皮膚等,其核心思想是一幅圖由前景色和背景色混合,且不同地方透明度不同。摳圖的問題已經(jīng)有成熟有效的算法,這些算法可以遷移應用于去霧的優(yōu)化,得到的結果如圖3所示。
教學活動:回歸課程開始,每個組都會重點聚焦STEAM某一領域,先請每個組總結整個問題解決中各領域的基礎和應用。接著,全體學生重新分組,按照新的分組,每個新的分組都有來自各領域的學生,在新的分組下,進行跨學科交叉的討論與思考,從跨學科的角度思考智能去霧算法的融合創(chuàng)新。每個小組制作一張海報,呈現(xiàn)整體的總結與思考。
在本課例中,教師引導學生發(fā)現(xiàn)智能去霧問題并不是單獨某個學科可以解決的,它是真實世界中的復雜問題,需要多學科背景知識做基礎,這個問題的解決需要跨學科的思維、跨學科的創(chuàng)新。此外,在學習過程中學生能夠對原始創(chuàng)新、簡單之美建立自己的感知,對計算思維的問題解決過程和思維方式有自己的理解。大道之行在于簡。
注:本文系全國教育科學“十三五”規(guī)劃2019年度教育部青年課題“面向未來高階能力和智能素養(yǎng)的中學跨學科人工智能課程體系建設與教學研究”(課題號:EHA190519)研究成果
作者單位:中國人民大學附屬中學