演算法移植
1. 圖像演算法怎麼移植到嵌入式產品上
一般可以比較容易地移植c語言實現的演算法,有可能需要調整演算法用到的數據類型,數據結構這些
如果要利用嵌入式產品的優化性能(一般與硬體和指令系統相關),就需要替換現有演算法的部分函數以嵌入式產品提供的演算法庫函數,這當然又涉及數據類型,介面,數據結構這些內容
如果演算法效率仍然不能滿足要求,就需要匯編級,寄存器級的編程了,充分利用嵌入式晶元的流水線,匯流排,並行運算,特殊指令這些特點來優化演算法關鍵部分.
普通可以更換嵌入式晶元,選擇速度更快,能力更強的來減少優化花費的成本,以適應晶元的不斷更新換代.
2. matlab中演算法怎麼移植到嵌入式中
如果開發的是比較底層的信號處理演算法,那麼在正式用匯編和C編寫代碼之前,用所以總體來說,嵌入式開發和matlab沒有什麼關系。 我 感覺不要,我目前
3. 1.一個完整的演算法應該具有__________等五個特性。 A.可執行性、可移植性和可擴展性 B
應該是bacbd
4. DSP的演算法移植問題
移植:
1)如果你的演算法是基本opencv這樣的基本上開發的,你需要脫離opencv的環境。
2)如果你的演算法是C++語言,請你改成標準的C語言。雖然DSP的開發環境是支持C++的,但是不建議你這么做。
3)修改你演算法的內存分配,盡量內存一次分配好,DSP在演算法不斷的申請和釋放時會有隱患。優先使用靜態數組,會減輕很多工作量。
4)在CCS下建立工程,來調試你的演算法,內存分配函數需要使用TI提供的函數。如果你的演算法能夠長期穩定的運行,那麼恭喜你,你的演算法移植就完成了。
優化:
演算法優化,需要你能懂演算法,也懂DSP。如果你只會寫DSP程序,而不會演算法,這對整個產品來說,是不能達到最優的。有些公司怕演算法泄密,給優化人員一段或幾段程序讓其優化。我覺得這樣做是很不合理的。除非你自己能控制大局,精通優化,這樣才可行。
1)你需要對演算法原理做一個深刻苦的理解,閱讀相關的文章。
2)對你拿到的演算法做全方位的熟悉。
3)做好上面的准備工作後,你要對演算法的結構做重新的整理。依據DSP的特點,比如內存的分布。演算法結構調整完成後,你的演算法在DSP上速度應該有一個明顯的提高了。
4)結構調整完成後,找到演算法中比較費時的部分。確定我們需要優化的重點,這部分內容多是每張圖像都要處理一次或多次的部分。對於演算法啟動時初始化部分的內容,一般不需要優化。
5)確定優化內容後,你首先考慮從語言結構上去做優化,這個時候應該還是C語言的。我不建議大家用TI提供的在C語言中使用優化嵌入的C庫函數。
6)你把需要優化的函數改寫為線性匯編或匯編函數。不斷的調整軟體流水,提高速率。
5. 將matlab中的演算法移植到dsp中怎麼弄哦
如果開發的是比較底層的信號處理演算法,那麼在正式用匯編和C編寫代碼之前,用所以總體來說,嵌入式開發和matlab沒有什麼關系。
6. 怎樣將c++的圖像處理演算法移植
要看相關的文檔才能知道Matlab中對應功能的函數名,如果知道函數名就好辦多了,輸入help 函數名他就會告訴你怎麼用。 Matlab中值濾波函數:medfilt2
7. DSP的演算法移植問題,希望詳細說說
1、晶元不一樣,需要修改(例如int的長度,浮點定點轉換)。
2、軟體平台不一樣,需要修改。
3、實際應用不一樣(比如代碼長度,高質量or低質量)。
4、函數介面要改(例如你喜歡用指針傳遞)。
5、我還沒做過,以上僅僅是吹的。
8. 如何使用EMCV將opencv演算法移植到DSP
EMCV全稱為Embedded Computer Vision Library,是一個可在TI DM64x系列DSP上運行的計算機視覺庫。EMCV提供了跟OpenCV完全一致的函數介面,通過EMCV,你可以輕松的將你的OpenCV演算法移植到 DSP,甚至不用改一行代碼。 目前EMCV已經支持IplImage, CvMat,CvSeq等基本數據結構,可使用cvCreateImage等創建和釋放圖像,以及contour檢測等。 參考
9. 如何將深度學習演算法的能力移植到前端
現在深度學習在機器學習領域是一個很熱的概念,不過經過各種媒體的轉載播報,這個概念也逐漸變得有些神話的感覺:例如,人們可能認為,深度學習是一種能夠模擬出人腦的神經結構的機器學習方式,從而能夠讓計算機具有人一樣的智慧;而這樣一種技術在將來無疑是前景無限的。那麼深度學習本質上又是一種什麼樣的技術呢?
深度學習是什麼
深度學習是機器學習領域中對模式(聲音、圖像等等)進行建模的一種方法,它也是一種基於統計的概率模型。在對各種模式進行建模之後,便可以對各種模式進行識別了,例如待建模的模式是聲音的話,那麼這種識別便可以理解為語音識別。而類比來理解,如果說將機器學習演算法類比為排序演算法,那麼深度學習演算法便是眾多排序演算法當中的一種(例如冒泡排序),這種演算法在某些應用場景中,會具有一定的優勢。
深度學習的「深度」體現在哪裡
論及深度學習中的「深度」一詞,人們從感性上可能會認為,深度學習相對於傳統的機器學習演算法,能夠做更多的事情,是一種更為「高深」的演算法。而事實可能並非我們想像的那樣,因為從演算法輸入輸出的角度考慮,深度學習演算法與傳統的有監督機器學習演算法的輸入輸出都是類似的,無論是最簡單的Logistic Regression,還是到後來的SVM、boosting等演算法,它們能夠做的事情都是類似的。正如無論使用什麼樣的排序演算法,它們的輸入和預期的輸出都是類似的,區別在於各種演算法在不同環境下的性能不同。
那麼深度學習的「深度」本質上又指的是什麼呢?深度學習的學名又叫深層神經網路(Deep Neural Networks ),是從很久以前的人工神經網路(Artificial Neural Networks)模型發展而來。這種模型一般採用計算機科學中的圖模型來直觀的表達,而深度學習的「深度」便指的是圖模型的層數以及每一層的節點數量,相對於之前的神經網路而言,有了很大程度的提升。
深度學習也有許多種不同的實現形式,根據解決問題、應用領域甚至論文作者取名創意的不同,它也有不同的名字:例如卷積神經網路(Convolutional Neural Networks)、深度置信網路(Deep Belief Networks)、受限玻爾茲曼機(Restricted Boltzmann Machines)、深度玻爾茲曼機(Deep Boltzmann Machines)、遞歸自動編碼器(Recursive Autoencoders)、深度表達(Deep Representation)等等。不過究其本質來講,都是類似的深度神經網路模型。
既然深度學習這樣一種神經網路模型在以前就出現過了,為什麼在經歷過一次沒落之後,到現在又重新進入人們的視線當中了呢?這是因為在十幾年前的硬體條件下,對高層次多節點神經網路的建模,時間復雜度(可能以年為單位)幾乎是無法接受的。在很多應用當中,實際用到的是一些深度較淺的網路,雖然這種模型在這些應用當中,取得了非常好的效果(甚至是the state of art),但由於這種時間上的不可接受性,限制了其在實際應用的推廣。而到了現在,計算機硬體的水平與之前已經不能同日而語,因此神經網路這樣一種模型便又進入了人們的視線當中。
「 2012年6月,《紐約時報》披露了Google Brain項目,吸引了公眾的廣泛關注。這個項目是由著名的斯坦福大學機器學習教授Andrew Ng和在大規模計算機系統方面的世界頂尖專家Jeff Dean共同主導,用16000個CPU Core的並行計算平台訓練一種稱為「深層神經網路」(DNN,Deep Neural Networks) 」
從Google Brain這個項目中我們可以看到,神經網路這種模型對於計算量的要求是極其巨大的,為了保證演算法實時性,需要使用大量的CPU來進行並行計算。
當然,深度學習現在備受關注的另外一個原因,當然是因為在某些場景下,這種演算法模式識別的精度,超過了絕大多數目前已有的演算法。而在最近,深度學習的提出者修改了其實現代碼的Bug之後,這種模型識別精度又有了很大的提升。這些因素共同引起了深層神經網路模型,或者說深度學習這樣一個概念的新的熱潮。
深度學習的優點
為了進行某種模式的識別,通常的做法首先是以某種方式,提取這個模式中的特徵。這個特徵的提取方式有時候是人工設計或指定的,有時候是在給定相對較多數據的前提下,由計算機自己總結出來的。深度學習提出了一種讓計算機自動學習出模式特徵的方法,並將特徵學習融入到了建立模型的過程中,從而減少了人為設計特徵造成的不完備性。而目前以深度學習為核心的某些機器學習應用,在滿足特定條件的應用場景下,已經達到了超越現有演算法的識別或分類性能。
深度學習的缺點
深度學習雖然能夠自動的學習模式的特徵,並可以達到很好的識別精度,但這種演算法工作的前提是,使用者能夠提供「相當大」量級的數據。也就是說在只能提供有限數據量的應用場景下,深度學習演算法便不能夠對數據的規律進行無偏差的估計了,因此在識別效果上可能不如一些已有的簡單演算法。另外,由於深度學習中,圖模型的復雜化導致了這個演算法的時間復雜度急劇提升,為了保證演算法的實時性,需要更高的並行編程技巧以及更好更多的硬體支持。所以,目前也只有一些經濟實力比較強大的科研機構或企業,才能夠用深度學習演算法,來做一些比較前沿而又實用的應用。
10. 大部分演算法工程師只是負責演算法移植而已嗎
是的
大部分演算法工程師只是調用一下,人家寫好的包,少部分去實現論文里的演算法
基本上就等於演算法移植
但是這個過程並不輕松,要理解加實現,而且演算法調試起來非常難,就算是用別人的工具,也有可能出現bug