1. 在圖像識別這一塊,目前有沒有可以移植到嵌入式設備的深度學習演算法
深度學習在物體識別中最重要的進展體現在ImageNet ILSVRC3挑戰中的圖像分類任務。傳統計算機視覺方法在此測試集上最低的錯誤率是26.172%。2012年,欣頓的研究小組利用卷積網路把錯誤率降到了15.315%。此網路結構被稱為Alex Net,與傳統的卷積網路相比,它有三點與眾不同之處:首先,Alex Net採用了dropout的訓練策略,在訓練過程中將輸入層和中間層的一些神經元隨機置零。這模擬了噪音對輸入數據的各種干擾使一些神經元對一些視覺模式產生漏檢的情況。Dropout使訓練過程收斂得更慢,但得到的網路模型更加魯棒。其次,Alex Net採用整流線型單元作為非線性的激發函數。這不僅大大降低了計算的復雜度,而且使神經元的輸出具有稀疏的特徵,對各種干擾更加魯棒。第三,Alex Net通過對訓練樣本鏡像映射和加入隨機平移擾動,產生了更多的訓練樣本,減少了過擬合。
在ImageNet ILSVRC 2013比賽中,排名前20的小組使用的都是深度學習技術。獲勝者是紐約大學羅伯·費格斯(Rob Fergus)的研究小組,所採用的深度模型是卷積網路,並對網路結構作了進一步優化,錯誤率為11.197%,其模型稱作Clarif。
在ILSVRC 2014比賽中,獲勝者GooLeNet[18]將錯誤率降到了6.656%。GooLeNet突出的特點是大大增加了卷積網路的深度,超過了20層,這在此之前是不可想像的。很深的網路結構給預測誤差的反向傳播帶了困難,這是因為預測誤差是從最頂層傳到底層的,傳到底層的誤差很小,難以驅動底層參數的更新。GooLeNet採取的策略是將監督信號直接加到多個中間層,這意味著中間層和底層的特徵表示也要能夠對訓練數據進行准確分類。如何有效地訓練很深的網路模型仍是未來研究的一個重要課題。
雖然深度學習在ImageNet上取得了巨大成功,但是很多應用的訓練集是較小的,在這種情況下,如何應用深度學習呢?有三種方法可供參考:(1)可以將ImageNet上訓練得到的模型作為起點,利用目標訓練集和反向傳播對其進行繼續訓練,將模型適應到特定的應用[10]。此時ImageNet起到預訓練的作用。(2)如果目標訓練集不夠大 ,可以將底層的網路參數固定,沿用ImageNet上的訓練集結果,只對上層進行更新。這是因為底層的網路參數是最難更新的,而從ImageNet學習得到的底層濾波器往往描述了各種不同的局部邊緣和紋理信息,而這些濾波器對一般的圖像有較好的普適性。(3)直接採用ImageNet上訓練得到的模型,把最高的隱含層的輸出作為特徵表達,代替常用的手工設計的特徵。
2. 嵌入式工程師面試中常出現的演算法
嵌入式工程師面試中常出現的演算法
嵌入式系統是以應用為中心,以計算機技術為基礎,並且軟硬體可裁剪,適用於應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。下面我為大家整理了關於嵌入式工程師面試中經常出現的演算法文章,希望對你有所幫助。
二分查找的代碼.
int bfind(int* a,int len,int val)
{
int m = len/2;
int l = 0;
int r = len;
while(l!=m && r!= m)
{
if(a[m] > val)
{
r = m;
m = (m+l)/2;
}
else if(a[m] < val)
{
l = m;
m = (m+r)/2;
}
else
return m;
}
return -1; //沒有找到
}
寫出在母串中查找子串出現次數的代碼.
int count1(char* str,char* s)
{
char* s1;
char* s2;
int count = 0;
while(*str!='