王郅佶
(大連市第八中學,遼寧大連,116021)
在現在的人們生活要求下,智能化也在走入實際生活的應用之中,于是智能家居,智能管家,智能機器人也在逐漸進入大眾的視野[1],在智能家居之中,最重要的則是系統如何對家內物品的掌握,于是室內建模也就油然而生,建模不僅可以對屋內基本數據進行整合,也為室內設計的最優化提供了基本素材。但是對于實際的家中情況,不同人家有不同設計,相同的人家的家具擺設也會時常變動,所以對于室內建模,尤其是實時化的更新,也就顯得尤為重要。傳統的室內建模是基于傳感器,傳感器的制作過于昂貴,無法使用與家居生活。GPS 定位準確度不夠,無法用于室內定位。而在日常的家中,對于室內建模[2],掃描方法或者數字建模技術都過于昂貴,而在建模之后,對于實時變化的更新,也顯示出其不足之處。
機器人在室內自由移動時,在對周圍環境不受到干擾的情況下,對室內每個角落進行拍照獲得信息,并且對其中的特征信息進行提取,在了解自己位置以及行進方向的同時,對室內物品以及結構進行建模處理,并且在行進時遇到的位置偏移,自主進行解決調整[3]。
本設計的主要目的是讓智能家居真正走入平常人的家中,讓每個人都能享受到科技變革帶來的智能化體驗,使智能不再是高居與研發室里的試驗品,而是讓大家都能使用并且獲益的技術,并且通過在現有技術的改進以及簡化,大大降低產品的成本讓其能成為可以真正量產的商品。
目前傳統的SLAM 都使用人為設計的描述符進行定位和建圖,目前深度學習被證明有著極強自學習性以及適應能力。針對環境的變化以及光照的明暗變化都能較好的進行自我學習。基于卷積的圖像特征學習是現在最為流行的圖像處理手段,對于卷積網絡的特征學習可以到達實時以及準確的性能。通過對圖像以及機器人的標定完成室內建圖,以及環境變化之后,譬如家居移動以及環境遷移,深度學習都有著比較強的適應能力,相對于描述符而言可以比較好地解決這些問題。
目前深度學習比較常用的算法為反向傳播算法,最原始的網絡都使用全連接網絡,這種網絡在處理維度很高的圖像數據時需要很多的計算資源和內存空間,因此卷積神經網絡應運而生。
對于卷積,首先將信息,即為像素,以矩陣的方式輸入,圈定卷積的格式,以5×5 用3×3 卷積為例從任意邊緣(一般為左上角開始),以步長為1 移動,提取特征信息所以在5×5 的信息中可以提取到3×3 的卷積結果在卷積的過程中,3×3 的格中,必須對其信息進行處理所以要將每個格的數據進行加權處理比如,對于3×3 的卷積核,可以把(1,1)(1,3)(2,2)(3,1)(3,3)進行加權為1 而剩下部分則權值為0 這樣就能有效的提取到信息并且加以簡化突出[4]。
并且在卷積的過程中采用三個通道提取信息(RGB)紅,綠,藍三維提取,在三個維度同時對一張圖片進行提取,提取在三個維度上的不同特征,增加了特征的含量也降低了因為特征不夠突出或者周圍環境影響而造成的誤差[5]。而在三維的提取過程中,為了之后數據處理的方便,將三維度的信息提取的權值共享
而對于邊緣信息,在每次的卷積中,提取的信息量過于少,為排除因為邊緣信息缺失而帶來的誤差,通過增邊所以在輸入矩陣的過程中,對這個矩陣進行增邊處理,即為在邊緣外擴一圈信息全部為0 的信息,外圈信息雖然沒有任何對于特征提取的貢獻,把原來邊緣上的信息多次提取,即為使他輸入格式等于輸出格式,增加了提取信息的豐富度,并且排除了邊緣信息缺失造成的誤差問題。假設輸入的數據大小為a×a×b,卷積的尺寸為c×c×b,其中a>c,那么輸出的大小為(a-c+1)×(a-c+1)×1。
在卷積之后,對于提取后的信息[6],加以池化,仍以3×3 的池化為例,此時要以步長3 的方式運動,但是此時被池化的矩陣邊長一定要是池化邊長的整數倍,最后對于6×6 若要以3×3 池化,則可化為2×2 的矩陣,在池化的過程中,采用兩個處理取最大值或者取平均值,取最大值則是提取卷積后的信息中每次池化取最大值,而平均值池化則是在信息中提取平均值,兩個方法都有其優性對于最大值池化可以最大的突出想要的特征,但是也有可能會將其他較為重要的信息忽略而對于平均值池化能更客觀提取信息,但是一對于顯著特征的提取就略顯不足[7]。
但是為什么不直接使用全連接神經網絡進行整合呢,首先,對于圖片的參考數量太多,如果輸入1000×1000 像素的圖片,輸入層則會有1000000 個節點如果第一個隱藏層有100 個節點,那么這一層就會有一億個參數,如果圖像再大一點,數據更是無法想象,對于本身信息太多極其容易過擬合。而第二點,全連接網絡僅僅是對信息進行對應,沒有像素之間的關系,對所有的像素平等對待,這個和特征提取的目標是相違背的,并且當完成了學習之后發現大量的信息其實所帶有權重的很小的,大量學習本來不需要的信息,會大大降低學習的效率。所以通過卷積神經網絡,不僅達到了學習的目的,還提高了學習效率[8]。
在機器人于家中運動時需要時時刻刻判斷自己的位置,才能對位置進行自我定位。
而僅僅依靠速度和時間的計算,即便在理論上沒有誤差,但是在實際生活中,無論是輪轂半徑還是引擎的實時轉速都無法達到準確,畢竟每一步都存在誤差,在不斷地積累中,就會造成較大的偏差,以來對機器人自我判斷以及建模的準確性上帶來錯誤。所以需要實時進行修正。
為解決這個問題,采取了不會受到自身的誤差影響的坐標系,即是世界坐標系,而在機器人本身上建立機器人坐標系,而在機器人運動的過程中通過圖片上提取的信息進行匹配來自我調整移動的路徑和速度,而在這個時候,為了使其自我判斷,需要用到深度學習技術,通過實時圖片的信息處理,判斷自己的位置。而在機器人的運動中,分為旋轉和平動,對于平動則比較簡單,通過在世界坐標系中的矢量加減就可以對自己位置判斷。而對于機器人的旋轉,在坐標系中建立矢量判斷,在坐標系中獲得三個標量再將他們和單位矢量相乘,作為旋轉的原位置的參考值,也就是旋轉的原位置在發生轉動的過程中,無法用矢量表示,所以設某坐標系e1,e2,e3 發生了一次旋轉,變成了e'1,e'2,e'3。對于某個固定的向量a,它的坐標怎么變化。

坐標關系然后設定一個轉動的矢量,就是轉動角度的參數,然后進行左乘得到。

所得出的轉動矢量,就可以作為錄入系統的參數,從而達成判斷位置的目的,這之后再深度學習之后得到與圖像匹配的理論位置進行比對,得出之后的路徑判斷。對于在不同的環境下,機器人可能會遇到不同的地貌,發生傾斜也會是常事,那么對于機器人自己能否自主的進行傾斜程度的判斷,就顯得尤為重要,在之前的機器人轉動中,采取了同樣建立機器人自我坐標系的方法將機器人本身的運動方向作為一個單位矢量在機器人傾斜的時候本身的坐標系也會發生整體的偏轉。所以,要判斷自身旋轉的多少,也需要一個外界不會隨著機器人本身變化的量作為本身旋轉的標準。所以,仍舊借助照相后得到的圖片信息,通過圖片的特征辨識,得到前后特征的位置變化,得到一個旋轉的三角函數判斷自身坐標系,變化前與變化后的夾角。
所以機器人的移動,就可以用;它的旋轉,平動一起表示對于平移而言pa=αpb+pjorg而對于旋轉,pa=αpb所以對于平移后旋轉pa=αpb+pjorg而對于轉后的平移pa=α(pb+pjorg)注意,此處的Pjorg 是對于原坐標系而定的所以,可以把一個平移變換矩陣,和一個旋轉變換矩陣加和成為一個齊次坐標變化矩陣反過來說,任何一個齊次坐標變化矩陣,均可分解為一個平移變換矩陣與一個旋轉變換矩陣。在最后通過全連接神經網絡將圖片信息和運動信息進行整合,使用梯度下降法訓練。
由于傳統的SLAM 中使用傳統的人工設計的特征點以及描述符進行匹配之后進行跟蹤和場景識別,這些人工設計的描述符在常規場景下都很穩定,但是在遇到紋理比較弱,光照強度變化大,環境變化大的時候都會失效。而深度學習已經在圖像分類,圖像分割,目標檢測等領域獲得了很好的成績,因此本文將采用卷積神經網絡進行描述符的學習。主要流程如圖1 所示。
如圖首先對圖片進行特征點的提取,其次使用卷積神經網絡進行描述符的計算,所使用的卷積網絡為提前訓練好的網絡,之后在計算好的描述符基礎上進行特征的匹配,之后根據匹配結果進行位姿計算,局部優化等操作,最后進行后端優化。

圖1 基于卷積神經網絡的SLAM 流程
圖2 所示為使用孿生網絡進行描述符提取的結構。

圖2 CNN 網絡提取描述符
圖中的兩個網絡為結構完全相同,參數共享的網絡。在進行訓練時首先以特征點為中心取其周圍的圖像塊,然后對這些圖像塊兩個為一組根據其是否對應于真實空間的同一個點進行歸類,在訓練時將一組圖像塊輸入到兩個網絡,經過網絡之后生成描述符,根據其相似關系對網絡進行調整。在使用時只需要使用一個網絡,對一個圖像塊進行特征提取即可。
為了解決現有建模技術的技術和成本限制性,通過拍照與機器人運動相結合的方法,大大降低了室內建模的成本,先通過拍照,提取外界的信息,在以矩陣的方式輸入系統中,為避免過擬合,通過卷積神經網絡進行特征提取,通過(rgb)三維的不同特征,權值共享的提取,之后將提取過的信息輸入池化層,然后進行池化進行信息的簡化處理。在同時,建立世界坐標系和機器人坐標系,通過旋轉矢量,平動矢量,判斷機器人位置,并且規劃路線,在遇到復雜地形時,也可以圖片前后變化判斷機器人的偏轉方向,進行自我的姿態調整,最后將提取的信息和運動的數據,通過全連接網絡進行整合,在經過梯度下降法的訓練之后,達成深度學習和室內建模的目的。