前言:
我認為,對于一個開發者來說,最重要并不是急切的去實作它的功能,而是understand實作功能的一個整體框架和思路,
近幾天,通過閱讀一些相關資料(閱讀的不太多,希望有大佬有便捷的思路指點一下),做一些簡單模型部署到andriod系統的學習心得,和大家分享一下,研究時間較短,害怕忘記,想把這些想法和思路記錄一下,今后深入研究還會繼續完善,
小專案思路
配置環境:
環境的配置對于開發者來說,可以說簡單,也可以說難,如果你是第一次配置,我覺得正常人都會被惡心到,因為即使你去查攻略,按攻略一步一步完成,發現還是報錯,而且還摸不清頭腦,只能找百度,然后錯誤..百度...錯誤...百度....噩夢.....如果只是操作的問題好解決,一些不兼容的小問題我們也可以慢慢解決,我覺得最惡心的是不同工具之間以及這些工具和系統的版本不匹配問題,我反正是被惡心到了,因為版本問題,我重裝系統,修改內核版本,修改顯卡驅動版本,改完之后又和其他專案的版本不匹配,只能建立虛擬環境..........md 太惡心了,直接從馬云爸爸那買了瓶霸王......不說廢話了,接下來,進入正題,自己的心得,
1.安裝anacode:
初學者可能會有疑問為什莫 不直接安裝對應的python版本呢(當然也可以),但是,既然大家都在使用anacode,說明有它的便捷之處,我隨便說幾點自己的感觸,首先它有好多包和模塊,在安裝程序中都給你安裝好了,不需要你再用pip去安裝了,而且anacode內置了python,其次我覺得最大的有點就是可以建立虛擬環境,這個可以有效的幫助你在做不同的專案中,根據專案需求可以搭建不同的虛擬環境(想詳細了解,查查資料即可),
2.安裝tensorflow:
tensorflow-gpu和tensorflow,這里我說一下tensorflow-gpu,這相對比較復雜,因為它和你電腦的顯卡有關系,在使用tensorflow-gpu,你需要配置環境,首先顯卡驅動,顯卡驅動的版本和你本身顯卡的引數有關系,例如:1080ti有它對應的顯卡驅動版本,可以查到,接下來根據顯卡驅動版本和tensorflow-gpu版本來確定需要安裝的cuda,cudnn版本, 這些都完成后,你可以通過一些代碼測驗或者終端的命令列來判斷tensorflow-gpu是否在使用你的gpu,
另外注意tensorflow1.x和2.x版本的一些區別,這里就不說了,查閱相關資料了解吧
3.opencv-dnn(部署模型):
這只是一種方法,我用的這種的,另外一種:如果部署到c++平臺,還可以編譯c++的tensorflow介面;如果你是部署到andriod平臺上也可以編譯和下載tensorflow的jar包(這個我正在實驗,講的也不嚴謹,網上有好多資料),這里我下載了c++版的opencv(pycharm中用的是python版的opencv,安裝直接pip install opencv-python就可以了,c++的opencv需要你自行下載安裝并用gcc進行編譯,操作也比較麻煩),接下來就是把opencv-dnn讀取模型和預測模型的代碼(這里的代碼你先在電腦上保證其正常運行)和保存的模型放到硬碟上(這里的硬碟是機器人中自帶的硬碟),
4.識別模型與機器人一體化:
我們已經把模型和讀取模型和圖片的代碼放到了硬碟,現在就想的是怎么讓它通過攝像頭接收圖片資料并將識別結果展示,對于機器人來說,我們里面使用的是andriod系統(因為知識盲區走彎路了,在使用opencv-dnn時,andriod系統編譯opencv出現了很多報錯,因為我們在電腦上使用gcc編譯時和andriod系統的編譯鏈不同,我的組長花了好幾天進行了除錯,才成功,額.........我能力有限,這一塊我0作用.......所以接下來的專案我們不再使用第一種方法opencv-dnn,會使用另外一種java的tensorflow介面),之后將andriod和硬碟上的c++代碼進行互動,通過JIN來呼叫c++代碼,這樣機器人中andriod系統實作模型讀取,將攝像頭接受的資料,喂入給模型,機器人展示識別結果,(這個程序中我的組長,建立了一個apk,可以理解為一個有功能的app,這個app就是將資料讀取進來再傳輸給模型,得到結果,并通過螢屏,語音等方式展現識別結果)
總結:
1.文字敘述性的內容太多,可能讀者看上去會有些煩躁,但是我覺得真正想要去理解一個東西,就必須去耐心的閱讀和總結,一定要把紅字部分理解一下;
2.文章中有好多術語,不理解的朋友可以查閱,千萬不要一知半解,會影響你去深入理解知識點;
3.自己寫的不夠詳細,好多細節網上都很詳細,因此這里寫的比較粗糙,重點是思路,思路,思路,其實把思路理清了,可以自己按部就班的去做,不懂就百度,一定會搞出來的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290531.html
標籤:其他
上一篇:遞回巧解古印度漢諾塔問題
下一篇:資料增強——python opencv 找出影像中的最大輪廓并填充(生成mask)——python 輪廓內部填充
