在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器視覺原理及常用工具庫

新機器視覺 ? 來源:古月居 ? 作者:古月居 ? 2024-01-08 10:27 ? 次閱讀

來源:古月居

對于人類來講,90%以上的信息都是通過視覺獲取的,眼睛就是獲取大量視覺信息的傳感器,然后再交給大腦這個“處理器”進行處理,之后我們才能理解外部環境,建立世界觀。

如何讓機器人也能理解外部環境呢,我們首先想到的就是給機器人也安裝一對眼睛,是不是就可以和人類一樣來理解世界了呢?但是這個過程可比人類復雜的多,本講我們就來學習機器人中的視覺處理技術。

機器視覺這么火,那么它的基本原理是什么樣的呢?我們先來了解一下。

機器視覺原理

?機器視覺:用計算機來模擬人的視覺功能,但并不僅僅是人眼的簡單延伸,更重要的是具有人腦的一部分功能一一從客觀事物的圖像中提取信息,進行處理并加以理解,最終用于實際檢測、測量和控制;

?交叉學科:涉及人工智能、神經生物學、物理學、計算機科學、圖像處理、模式識別等諸多領域;

?關鍵技術:圖像采集與處理、模式識別、機器學習…;

?傳感器:單目視覺、雙目立體視覺、多目視覺、全景視覺等;

人類視覺擅長于對復雜、非結構化的場景進行定性解釋,但機器視覺憑借速度、精度和可重復性等優勢,非常適合對結構化場景進行定量測量。

一般來講,典型的機器視覺系統可以分為如圖1所示的三個部分:圖像采集、圖像分析和控制輸出。

416b911a-ad46-11ee-8b88-92fbcf53809c.jpg

圖1 典型機器視覺系統的三個部分

圖像采集注重對原始光學信號的采樣,是整個視覺系統的傳感部分,核心是相機和相關的配件。

其中光源用于照明待檢測的物體,并突顯其特征,便于讓相機能夠更好的捕捉圖像。光源是影響機器視覺系統成像質量的重要因素,好的光源和照明效果對機器視覺判斷影響很大。當前,機器視覺的光源已經突破人眼的可見光范圍,其光譜范圍跨越紅外光(IR)、可見光、紫外光(UV)乃至X射線波段,可實現更精細和更廣泛的檢測范圍,以及特殊成像需求。

相機被喻為機器視覺系統的“眼睛”,承擔著圖像信息采集的重要任務。圖像傳感器又是相機的核心元器件,主要有CCD和CMOS兩種類型,其工作原理是將相機鏡頭接收到的光學信號轉化成數字信號。選擇合適的相機是機器視覺系統設計的重要環節,不僅直接決定了采集圖像的質量和速度,同時也與整個系統的運行模式相關。

圖像處理系統接收到相機傳來的數字圖像之后,通過各種軟件算法進行圖像特征提取、特征分析和數據標定,最后進行判斷。這是各種視覺算法研究最為集中的部分,從傳統的模式識別算法,到當前熱門的各種機器學習方法,都是為了更好的讓機器理解環境。

對于人來講,識別某一個物體是蘋果似乎理所當然,但是對于機器人來講,就需要提取各種各樣不同種類、顏色、形狀的蘋果特征,然后訓練得到一個蘋果的“模型”,再通過這個模型對實時圖像做匹配,從而分析面前這個東西到底是不是蘋果。

在機器人系統中,視覺識別的結果最終要和機器人的某些行為綁定,也就是第三個部分——控制輸出,包含I/O接口、運動控制、可視化顯示等。當圖像處理系統完成圖像分析后,將判斷的結果發給機器人控制系統,接下來機器人完成運動控制。比如視覺識別到了抓取目標的位置,通過IO口控制夾爪完成抓取和放置,過程中識別的結果和運動的狀態,都可以在上位機中顯示,方便我們監控。

圖2 典型機器視覺系統的三個部分

開源軟件或框架

就機器視覺而言,在這三個部分中,圖像分析占據了絕對的 核心,涉及的方法、使用的各種開源軟件或者框架非常多,我們來了解最為常用的幾個。

OpenCV

?由英特爾公司于1999年啟動,致力于CPU密集型的任務;

?推進機器視覺的研究,提供一套開源且優化的基礎庫,實現了圖像處理和計算機視覺方面的很多通用算法;

?提供一個共同的基礎庫,使得開發人員的代碼更容易閱讀和轉讓,促進了知識的傳播;

?透過提供不需要開源或免費的軟件許可( BSD ),促進商業應用軟件的開發;

?由一系列C函數和少量C++類構成,同時提供C++、Python、Ruby、MATLABC#、GO等語言的接口。

OpenCV這個名稱很多人應該聽說過,這是機器視覺領域最為知名的開源軟件之一。

OpenCV主要使用C/C++語言編寫,執行效率較高,致力于真實世界的實時應用。OpenCV實現了圖像處理和計算機視覺方面很多通用算法,這樣我們在開發視覺應用的時候,就不需要重新去造輪子,而是基于這些基礎庫,專注自己應用的優化,同時大家的基礎平臺一致,在知識傳播的時候也更加方便,只要你看得懂OpenCV的函數,就可以很快熟悉別人用OpenCV寫的代碼,大家交流起來非常方便。

和機器人操作系統一樣,一款可以快速傳播的開源軟件,一般都會選擇相對開放的許可證,OpenCV主要采用BSD許可證,我們基于OpenCV寫的代碼,可以對原生庫做修改,不用開源,還可以商業化應用。OpenCV目前支持的編程語言也非常多,無論你熟悉哪一種,都可以調用OpenCV快速開始視覺開發,比如C ++,Python,Java、MATLAB等語言,而且還支持Windows,LinuxAndroid和Mac OS等操作系統。

OpenCV中提供的功能非常多,我們在后續的內容中,會給大家介紹一些基礎的圖像處理方法,大家如果想要深入研究,還可以網上搜索相關的內容。

TensorFlow

?Google在2015年發布的機器學習平臺,采用數據流圖,架構靈活,用于數值計算的開源軟件庫;

?節點在圖中表示數學操作,線表示在節點間相互聯系的多維數據數組,即張量(tensor);

TensorFlow的整體技術框架為兩個部分:前端系統提供編程模型,負責構造計算圖;后端系統提供運行時環境,負責執行計算圖。

41adab72-ad46-11ee-8b88-92fbcf53809c.jpg

圖4 TensorFlow整體技術框架

這里的計算圖大家應該似曾相識,沒錯,機器人操作系統ROS的技術框架也是用到了計算圖。在TensorFlow的計算圖中,數據流是重點,數據在這個圖中以張量(tensor)的形式存在,節點在圖中表示數學操作,邊表示節點間數據的流向。在機器學習的訓練過程中,張量——也就是數據,會不斷從數據流圖中的一個節點流向(flow)另外一個節點,從而完成一系列數學運算,最終得到結果。這就是TensorFlow名稱的由來,正如如圖5所示的這張圖一樣,它生動形象地描述了復雜數據結構在人工神經網中的流動、傳輸、分析和處理模式。

42600060-ad46-11ee-8b88-92fbcf53809c.jpg

圖5 TensorFlow整體技術框架

為了便于數據的調試和可視化,TensorFlow還提供了一套可視化工具——TensorBoard,用戶可以很容易看到數據流動的每一個部分,同時看到數據訓練或者測試的效果。比如如圖9-8所示中,經過前邊神經網絡的計算,藍色和黃色兩種數據被逐漸識別并區分開來。

4277308c-ad46-11ee-8b88-92fbcf53809c.jpg

圖6 TensorBoard

TensorFlow跨平臺性好,可以在Linux、MacOS、Windows、Android等系統下運行,還可以在眾多計算機中分布式運行,回想一下多年前戰勝人類的圍棋AI——AlphaGo,其后臺在上萬臺計算機中、基于TensorFlow搭建的“最強大腦”。

當然,TensorFlow也有不足之處,主要表現在它的代碼比較底層,需要用戶編寫大量的應用代碼,而且很多相似的功能,用戶還不得不“重新造輪子”。

此外,TensorFlow是Google資深工程師開發而來,使用了不少高深的技術和概念,對于大眾開發者來講,上手學習的門檻就有點高,熟悉的人可以用的爐火純青,做出很炫酷的效果,不熟悉的人上手就得花費很長時間。對此,TensorFlow官方也提供了一些開源例程和不少訓練好的模型,其中之一就是Tensorflow Object Detection API,實現了近年來多種優秀的深度卷積神經網絡,可以幫助開發者輕松構建、訓練和部署對象檢測模型。

如圖7所示,前兩個是TensorFlow官方例程中的目標檢測演示,可以在圖片中識別出小狗、人、風箏等目標,在這套開源的框架中,官方還附帶了80多種已經訓練好的目標模型,包含了我們生活中常見的物品,這兩個圖片就是使用官方模型識別的效果,比如這里識別到的碗、西蘭花,還有這里的杯子、桌子、瓶子等,都可以較為穩定的識別到。不過模型之外的物品就難以識別了。

圖7 TensorFlow Object Detection API

想要使用這套框架識別其他目標怎么辦,沒問題,我們可以針對想要識別的目標采樣并標注,再放到網絡中訓練,就可以得到自己的模型庫了,接下來就可以完成我們想要的識別任務。比如這里識別兩位明星的效果,就是網友使用TensorFlow目標檢測方法實現的。

總之Tensorflow Object Detection API,為我們演示了一整套TensorFlow工程應用的流程,按照這個流程,我們就可以快速開發視覺目標檢測了。

PyTorch

PyTorch:

?Facebook在2017年發布的一個開源的Python機器學習庫,底層由C++實現;

?不僅能夠實現強大的GPU加速,同時還支持動態神經網絡;

?簡潔高效,追求最少的封裝,符合人類思維,讓用戶盡可能地專注于實現自己的想法;

?除了Facebook外,它已經被Twitter、CMU和Salesforce等機構采用;

之前我們有提到過TensorFlow入門門檻較高,除此之外,TensorFlow中的計算圖是靜態的,也就是說我們要先創建好計算圖的結構,然后才能訓練,過程中想要改變網絡模型是比較困難的。

2017年初,Facebook發布了另外一個開源的機器學習庫——PyTorch,雖然底層也是用C++實現的,但是上層主要支持Python。如果用編程語言做一個類比,Tensorflow需要先構建計算圖,這就類似C語言,運行之前需要先進行編譯,但是可以適配不同的硬件平臺,效率較高;而PyTorch類似Python語言,可以動態構建圖結構,簡單靈活,但是功能的全面性和跨平臺性稍差。

除此之外,PyTorch的設計追求最少的封裝,盡量符合人類的思維模式,避免重復造輪子,讓用戶盡可能地專注于實現自己的想法,所思即所得,不需要考慮太多關于框架本身的束縛。不像TensorFlow中張量、圖、操作、變量等抽象的概念,PyTorch精簡了很多,源碼也只有TensorFlow的十分之一左右,更少的抽象、更直觀的設計,使得PyTorch的源碼十分易于閱讀,也更容易進行調試,就像Python代碼一樣。

總結而言,TensorFlow和PyTorch都是優秀的機器學習開源框架,兩者的功能類似,TensorFlow跨平臺性能更好,PyTorch靈活易用性更好,兩者都有較為廣泛的應用,而且作為機器學習的計算平臺,兩者不僅都可以用于機器視覺識別,還可以用于自然語言理解、運動控制等諸多領域。

42a985e6-ad46-11ee-8b88-92fbcf53809c.jpg

圖8 PyTorch

YOLO

回到具體的目標識別。以自動駕駛為例,人們看到圖像以后,可以立即識別其中的對象以及所在的位置。這讓我們能夠在幾乎無意識的情況下完成復雜的任務,比如躲避行人。

因此,自動駕駛的訓練需要類似水平的反應能力和準確性。這樣的系統必須能夠分析實時視頻中的道路,并且能夠在確定路徑之前,檢測各種類型的對象及其在現實中的位置。

YOLO就是當前最為熱門的一種實時目標檢測系統,在2015年提出,全稱是You only look once,看一眼就能夠識別出來,可見實時性對YOLO是至關重要的指標。簡單介紹下YOLO的算法流程,它將對象檢測重新定義為一個回歸問題,運用單個卷積神經網絡(CNN) ,將圖像分成網格,并預測每個網格的對象概率和邊界框。

以一個100x100的圖像為例,Yolo的CNN網絡將輸入的圖片分割成7x7的網格,然后每個網格負責去檢測那些中心點落在該格子內的目標,比如如圖9所示,小狗這個目標的中心點在左下角的網格中,那該網格就負責預測狗這個對象。

每個網格中將有多個邊界框,在訓練時,我們希望每個對象只有一個邊界框,比如最終只有一個邊界框把這只狗包起來。因此,我們根據哪個邊界框與之前標注的重疊度最高,預測對象的位置和概率。

最終包圍對象的邊界框,就是識別的結果,使用四個描述符進行說明:

1.邊界框的中心位置

2.邊界框的高度

3.邊界框的寬度

4.識別到對象所屬的類

這樣就完成了對目標的實時檢測,拿到目標的信息之后,就可以進行后續的機器人行為控制了。YOLO識別的速度非常快,它能夠處理實時視頻流,比如車輛行駛的動態監測、自然環境中的目標識別,有著非常廣泛的應用價值。

以上就是當前較為熱門的機器學習和目標檢測框架,用于機器視覺的開源軟件還有很多,有興趣可以繼續探索補充。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51147

    瀏覽量

    753999
  • 機器視覺
    +關注

    關注

    162

    文章

    4376

    瀏覽量

    120381
  • 機器學習
    +關注

    關注

    66

    文章

    8421

    瀏覽量

    132703
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41370

原文標題:機器視覺原理及常用工具庫

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    51單片機常用工具

    ;&nbsp;[hide]<a href="http://down.elecfans.com/bbs/z/51單片機常用工具包.rar"
    發表于 08-07 13:54

    單片機常用工具(光盤中帶的)

    單片機常用工具(光盤中帶的)
    發表于 05-30 15:24

    單片機常用工具集合

    單片機常用工具集合,內附說明。
    發表于 06-03 14:44

    LabVIEW 常用工具包集錦

    `LabVIEW 常用工具包集錦 ,或許正是你想要的。。。`
    發表于 12-11 12:20

    Fibocom 常用工具分享

    Fibocom 常用工具分享串口調試器SSCOM,鏈接如下*附件:串口調試器SSCOM.rarUSB轉TTL串口監測工具-CH340驅動,鏈接如下*附件:CH340驅動(USB串口驅動)_XP_WIN7共用.rarUSB轉TTL串口監測
    發表于 12-01 15:32

    單片機常用工具

    單片機常用工具
    發表于 10-13 06:16

    硬盤維修基礎與常用工具.pdf

    硬盤維修基礎與常用工具:第一章 硬盤的物理結構和原理一、引言自1956 年IBM 推出第一臺硬盤驅動器IBM RAMAC 350 至今已有四十多年了,其間雖沒有CPU 那種令人眼花繚亂的高速發
    發表于 10-11 12:06 ?371次下載

    電工常用工具的使用技巧

    電工常用工具的使用技巧 扳手的使用  活絡扳手又叫活扳手,是一種旋緊或擰松有角螺絲釘或螺母的工具。電工常用的有200、250、300mm三種,使
    發表于 11-20 15:46 ?1999次閱讀

    MATLAB 常用工具

    電子發燒友網站提供《MATLAB 常用工具箱.rar》資料免費下載
    發表于 01-06 10:45 ?14次下載

    常用工具軟件

    電子發燒友網站提供《常用工具軟件.rar》資料免費下載
    發表于 10-14 10:59 ?11次下載

    Java常用工具

    Java常用工具類。
    發表于 11-06 11:21 ?1次下載

    Linux(ubuntu)常用工具

    本文檔內容介紹了基于Linux(ubuntu)常用工具,供參考
    發表于 04-17 16:15 ?23次下載

    電工常用工具儀表的使用

    電工常用工具儀表的使用說明。
    發表于 03-18 11:48 ?22次下載

    修理電機常用工具和設備

    修理電機常用工具和設備有哪些?下面就跟小編一起來看看吧!
    的頭像 發表于 07-20 09:50 ?7248次閱讀

    OpenHarmony常用工具匯總

    OpenHarmony 開發過程中我們一定會面對各種開發問題,比如如何看 log,如何看系統狀態,如何調試,等等。本章內容就是總結一些常用工具
    的頭像 發表于 01-04 12:02 ?1401次閱讀
    主站蜘蛛池模板: 天堂8资源8在线| 在线a亚洲老鸭窝天堂新地址| 伊人狼人综合网| 99啪啪| 1314亚洲人成网站在线观看| 91成人免费在线视频| 亚洲国产午夜看片| 午夜久久免费视频| 天堂资源最新版在线官网| 久久精品影院永久网址| 91操碰| 性黄视频| 亚洲综人网| 色秀视频免费高清网站| 欧美精品专区55页| 黄色大片毛片| 一级网站在线观看| 美女被免网站在线视频| 22222se男人的天堂| 亚洲精品资源| 一区二区三区精品国产欧美| 四虎永久精品免费网址大全| 日本精高清区一| 精品三级内地国产在线观看| 成人性视屏| 污视频日本| 国产成人午夜精品影院游乐网| 丁香网五月天| 在线观看国产久青草| 色香视频首页| 国产三片理论电影在线| 五月天婷婷基地| 5566精品资源在线播放| 老师在办公室被躁得舒服小说| 特黄特色的视频免费播放| 久久国产精品久久久久久久久久| 在线天天干| 亚洲欧美日韩高清mmm777| 抽搐一进一出gif免费男男| 日本黄色激情视频| www.成人在线|