痞子衡嵌入式:恩智浦機器視覺模塊OpenMV-RT那些事(1)- 初體驗

来源:https://www.cnblogs.com/henjay724/archive/2019/12/01/11965518.html
-Advertisement-
Play Games

近些年機器視覺應用一直是個很火的方向,想象一下機器如果能長上“眼睛”,是不是就可以做一些人類才能做的事情,因此機器視覺是人工智慧實現的一個重要基礎。痞子衡當年碩士畢業論文課題就是工業相機圖像處理相關的,算是機器視覺系統的前端核心。遙想十年以前,想要從事機器視覺系統的開發一直是比較複雜的,需要開發者有... ...



  大家好,我是痞子衡,是正經搞技術的痞子。本系列痞子衡給大家介紹的是機器視覺模塊OpenMV-RT初體驗

  近些年機器視覺應用一直是個很火的方向,想象一下機器如果能長上“眼睛”,是不是就可以做一些人類才能做的事情,因此機器視覺是人工智慧實現的一個重要基礎。痞子衡當年碩士畢業論文課題就是工業相機圖像處理相關的,算是機器視覺系統的前端核心。遙想十年以前,想要從事機器視覺系統的開發一直是比較複雜的,需要開發者有相當扎實的嵌入式開發基礎,而現在一些機器視覺相關研究小組為了能讓開發者把更多重心放在應用本身,推出了簡潔易用的機器視覺模塊,藉助這些模塊,即使沒有太多嵌入式經驗,也可以輕鬆玩機器視覺。今天痞子衡就帶大家一起體驗恩智浦推出的一款輕量級的機器視覺模塊OpenMV-RT:

一、模塊簡介

  今天痞子衡要講的模塊全稱是OpenMV-RT,這是一款基於恩智浦最近主打的i.MXRT超高性能系列MCU的視覺模塊。如下是模塊簡圖,從簡圖裡可以看出,這款板子設計得非常簡潔,基本除了MCU最小系統之外,僅包含四大部件:640x480數字攝像頭感測器、九軸姿態感測器、串列SPI Flash(存放代碼)、SD卡槽(文件系統):

  除此以外,模塊還提供了標準OpenMV介面,可在OpenMV項目(關於OpenMV項目,痞子衡會在後續文章里細聊)生態里任意擴展其他功能模塊:

Note: 更詳細的模塊介紹可見該模塊設計者Rocky Song發表的微信文章 《基於i.MX RT1060的可編程視覺模塊》

二、安裝模塊

2.1 購買模塊和SD卡

  首先你需要有一塊OpenMV-RT模塊,不帶SD卡的裸價是399元,鏡頭焦距有6種可選。此模塊為第14屆全國大學生智能車競賽參賽選手提供過50元專享抵扣。

2.2 下載i.MXRT固件

  拿到OpenMV-RT模塊後,為了保證模塊能夠正常運行,最好試著自己下載一次i.MXRT固件程式(防止廠商發貨忘記燒錄固件),固件程式工程放在github網站上,源代碼是開源的。

  如果你不熟悉Git,那就按下圖所示直接下載項目壓縮包(記得Step1一定要做)。如果你熟悉Git,那就直接clone項目,並且checkout到omv_initial_integrate分支。

  痞子衡在第一節模塊簡圖展示過模塊有一個6-Pin的SWD介面,這個介面便是用於連接J-Link模擬器去下載i.MXRT固件程式進外部串列SPI Flash的。可按下圖連接模塊與J-Link模擬器:

  • J-Link.Pin6 (GND) -> 模塊J1.6(GND)
  • J-Link.Pin1 (VCC) -> 模塊J1.5(3.3V)
  • J-Link.Pin7 (SWC) -> 模塊J1.3(SWC)
  • J-Link.Pin9 (SWD) -> 模塊J1.2(SWD)

  使用Keil MDK(需v5.20以上)打開固件工程,選中“debug_flexspi” 然後編譯該工程(約4分鐘),最後點擊下載(約2分鐘),固件下載完成後需要給模塊重新上電。

  • i.MXRT固件工程:\micropython-rocky\ports\prj_keil_rt1060\mpyrt1060.uvproj

2.3 安裝OpenMV IDE

  因為OpenMV-RT模塊實現了OpenMV IDE的調試監控協議。為了體驗無需存檔一鍵下載並且監視模塊幀緩衝的功能,以及啟用虛擬串口功能,模塊最好配合OpenMV IDE一起使用。

三、運行模塊

  關於OpenMV-RT模塊的運行,痞子衡將給大家演示一個基於CIFAR-10數據集的物體識別的應用。

3.1 插上SD卡(含CIFAR-10模型文件)

  OpenMV-RT模塊需要配合SD卡一起使用,模塊當前僅支持在SD上實現文件系統。痞子衡要演示的物體識別的應用預訓練CIFAR-10數據集模型文件需要存放在SD卡裡,模型文件包含兩個文件:cifar10.network和cifar10_fast.network。

  • 預訓練CIFAR-10數據集模型文件路徑:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard 

3.2 使用IDE連接模塊

  先打開OpenMV IDE,然後給OpenMV-RT模塊上電(如果是第一次連接),系統可能花較長時間(可能超過1分鐘)來安裝和配置驅動,請耐心等待。當OpenMV IDE左下角狀態發生如下變化時,即表明驅動安裝成功,並已識別出模塊。

3.3 運行物體識別應用

  使用OpenMV IDE打開物體識別應用的Python源程式(是的,OpenMV-RT支持MicroPython語言,關於其原理痞子衡會在後續文章細聊),這個源程式其實包含了2個應用,一個是基於CIFAR-10的物體識別,另一個是基於LENet的數字識別。痞子衡想要演示的是物體識別,因此需要將Python源代碼稍作如下修改:

  • 物體識別應用主程式:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard\main.py
#...省略

while (True):
    pyb.LED(1).off()
    pyb.LED(2).off()
    pyb.LED(3).on()
    pyb.LED(4).off()

    #If you use RT1052, 'isFull' should be False
    CIFAR10Test(40000000, isFull = True)
    # RT1052 does not have enough RAM to run this
    #LENetTest(40000000)

  程式修改完畢後,點擊IDE左下角運行按鈕,OpenMV-RT模塊便開始運行Python程式,你可以在IDE里看到攝像頭實時採集視窗。去網上隨便找一張CIFAR-10訓練的10種物體(飛機、汽車、鳥、貓、鹿、狗、蛙、馬、船、卡車)的圖片,痞子衡找了一張鹿的圖片,並放在攝像頭面前,可以看到採集視窗最上面顯示了識別結果“deer”。

  至此,OpenMV-RT模塊初體驗痞子衡便介紹完畢了,掌聲在哪裡~~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 這是我今天在回答SO問題時偶然遇到的,覺得可能還比較通用,就記錄下來以供參考。 通常,我們使用 最簡單的方式是這樣: 這樣在游標懸浮在 上方時,會顯示一個提示條,但是這似乎又違背了一個設計原則: ToolTip作為提示,應該僅在當前內容顯示不全,且用戶有意願查看完整內容時作為替代元素出現 這很 ...
  • 【Powershell 教程】學習資源彙總 一、書籍教程 1、《Windows PowerShell實戰指南》第3版 作者:[美] Don,Jones(道·瓊斯),Jeffery,Hicks(傑弗瑞·希克斯) 譯者:宋沄劍 譯 資源:微信讀書、iReader、網上有第 2 版的電子版 實體:淘寶、京 ...
  • Red Hat Enterprise Linux是美國紅帽公司開發的商業市場導向的Linux發行版,為方便大家學習研究,整理分享歷代紅帽官方正式版鏡像給有需要的朋友們。 ...
  • 截圖工具: 其中用到了動態鏈接庫DLL技術(Dynamic Link Library)技術,鍵盤鉤子技術,游標捕獲技術,類橡皮類CRectTracker 頭文件:尾碼名為.cpp,主要是定義和聲明之類的,比如類的定義和常量定義 源文件:尾碼名為.cpp,主要是實現之類的,比如類方法的實現 資源文件: ...
  • tar是UNIX和類UNIX系統上的壓縮,備份工具, 名字來源於Tape archive--磁碟歸檔,最初的時候是用來將數據儲存,備份到磁帶上的。而今最簡單的備份方法是添加新的磁碟或者在雲端存儲,但即使是最簡單和便宜的磁碟設備和雲儲存,也應該壓縮備份數據,降低存儲空間需求和傳輸時間,linux系統默 ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 在之前的系列文章中,分析到了 的頁框分配, 的小塊記憶體對象分配,這些分配的地址都是物理記憶體連續 ...
  • 最近要使用到 alluxio,發現網上還是有一些文檔很是不錯,現在通過這篇文章進行索引一下,進行備忘: https://edgedef.com/2017/08/17/alluxio-%E5%B0%8F%E8%B0%83/ (以為網友關於 alluxio的調研) https://www2.eecs.b ...
  • 在dlib以及face_recognition通過pip安裝成功之後(如何通過pip進行安裝,在博主的上一篇隨筆中有提及),在pycharm中無法導入。 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...