精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

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

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

3天內不再提示
創作
電子發燒友網>電子資料下載>電子資料>基于FPGA的披薩切片角度計算器

基于FPGA的披薩切片角度計算器

2023-06-16 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

介紹

嗨,在這個項目中,我想向您展示如何構建一個基于 FPGA 加速 Yolov3 網絡的披薩切片角度計算器。披薩配料由 Yolov3 網絡分析。根據 Yolo 輸出,計算出意大利辣香腸熱圖。此熱圖用于計算將比薩餅切成兩半的完美角度。最佳切割角度的結果投影在披薩附近。Avnet 的 Ultra96-V2 板用于所有計算。GoPro Hero 相機用于從意大利辣香腸比薩餅中捕捉圖像。相機和投影儀連接到 Ultra96-V2 板。我使用了定制的 HDMI 板,但您可以使用 USB 網絡攝像頭進行圖像捕捉。來自相機的傳入圖像會調整大小,這是通過可編程邏輯 (PL) 加速器完成的。Yolov3對象檢測網絡,DPU ) 執行比薩餅和意大利辣香腸檢測。#projectofthemonth

pYYBAGN1HgqAEqbhAAA6AVUESW4941.png
系統總覽
?

在你開始之前

項目文檔分為“入門”、“從數據集到DPU精靈”和“切片器程序”三個部分。“入門”部分描述了在 Ultra96V2 板上運行基于 Yolo 的披薩切片機所需的步驟。“從數據集到 DPU elf”一節描述了從自定義數據集到 DPU elf 文件的整個開發過程。該項目的這一部分最耗時,因為賽靈思文檔和示例僅涵蓋了整個開發過程的一部分。目前,這部分正在建設中,但結合項目源代碼,它是您自定義 Xilinx DPU 項目的良好起點。就在這個項目在 hackster 上發布前幾個小時,LogicTronix 發布了這個教程,其中涵蓋了 Yolov3 到 DPU 精靈編譯的某些部分。最后但同樣重要的是,您可以在“切片器程序”部分找到實現 Pizza 切片器應用程序的 Python 代碼的詳細描述。

入門

  • 下載 Ultra96V2 的 PYNQ V2.6映像
  • 從這個黑客教程安裝 PYNQ-DPU
  • 為了提高 OpenCV 的速度,我Tengine 支持下重建了 OpenCV。這提高了基于 ARM 處理器的系統的整體性能。
  • 克隆我的項目存儲庫以構建 FPGA 硬件。我使用了定制的 HDMI 板,因此 Pizza-base-without-hdmi.tcl 創建了帶有 pl 圖像調整器和 DPU 的 Ultra96-V2 板,沒有 HDMI 輸入/輸出。
  • 從 Vitis ai docker 運行 compile-caffe.sh 腳本。該腳本使用預訓練的 Caffe 模型。我還將用于 DPU 量化和編譯的測試圖像放入存儲庫中。
  • 復制板上的FPGA *.bin 文件和DPU *.elf 文件。但一切都在與披薩切片機 jupyter notebook 相同的目錄中。
  • 使用我的 repo 中的披薩切片機 jupyter notebook 并測試 yolov3 網絡并切片一些披薩。

?

從數據集到 DPU 精靈

遺憾的是,Xilinx 的 Zoo 模型沒有提供用于比薩檢測的預訓練網絡,所以我不得不從頭開始構建網絡。下圖顯示了在 Xilinx DPU 上運行 Yolo 網絡所需的步驟。

poYBAGN1Hg2AB4CNAACqeb0xOQk890.png
從數據集到 DPU 精靈的工作流程
?

詳細的工作流程:

  • 圖片:首先我必須得到一些意大利辣香腸披薩的圖片。我使用了來自 Google 的 22 張圖片,后來我添加了一些來自 GoPro 的真實圖片。所有圖像都已調整大小并裁剪為 320x320 像素。
  • 圖像注釋:圖像注釋的一個很好的工具是Microsoft VoTT 。對于披薩切片機應用程序,使用了披薩和意大利辣香腸的邊界框。VoTT 可以導出不同格式的數據集,我使用Pascal VOC 格式進行導出。
  • 數據增強:訓練一個只有 22 張圖像的網絡對于網絡推理來說不是很健壯。為了提高訓練數據集和魯棒性,來自roboflow ai的數據增強工作流程. 用來。這是一種修改小型數據集并添加一些預處理圖像進行訓練的簡單方法。使用每個數據集限制為 1000 張圖像的免費帳戶,可以構建一個小型數據集。對于這個用例,旋轉和飽和是模擬真實世界場景的好方法。很酷的是,roboflow 在預處理步驟中更新注釋。我的最終數據集包含大約 800 張披薩圖像,慢慢地我餓了…… 需要將預處理的數據集導出到 Pascal VOC(Xilinx DPU 編譯)和 Yolo 數據集(用于訓練)。生成多種輸出格式的可能性是 roboflow 的另一個重要功能。
  • 網絡訓練:YOLO 網絡是用darknet訓練的對于訓練,使用了Google Colab GPU 筆記本培訓筆記本可在我的 GitHub 存儲庫中找到。我在我的 Colab 筆記本中添加了對 yolov2-tiny、yolov3-tiny 和 yolov4-tiny 訓練的支持。訓練后,您可以比較不同的網絡及其輸出。用于該項目的預訓練網絡可在我的 GitHub 存儲庫中獲得。
  • Darknet to Caffe convert:要將 Yolo 網絡與 Xilinx DPU 一起使用,必須將網絡轉換為 Caffe 格式。這一步很棘手。幾乎沒有關于如何將暗網輸出轉換為與 Xilinx Vitis ai 編譯器兼容的 Caffe 模型的文檔。Xilinx 在Vitis-Ai存儲庫中提供了 xilinx-caffe 版本。我構建了一個docker 容器,它構建了 xilinx-caffe 版本,該容器能夠將暗網模型轉換為 caffe 模型。要轉換暗網模型(*cfg 和 *weights),請使用convert.py腳本,該腳本位于Vitis-AI/AI-Model-Zoo/caffe-xilinx/scripts/如果一切正常,您將獲得一個 *.prototxt 和一個 *.caffe 模型
  • 編譯DPU elf:最后一步,DPU elf文件的量化和編譯需要一些準備。需要一個 Vivado 硬件項目,其中包括 DPU IP、Pascal 驗證數據集、Caffe 網絡和 Vitis-AI docker 容器。這僅對 Ultra96-V2 板 DPU 上的 Yolo 網絡有效,對于其他網絡類型,要求可能有所不同。需要在 Vitis Ai docker 容器內執行以下步驟。但在我們能夠編譯模型之前,我們必須更改 *.prototxt 文件的第一個“層”。請參閱項目 GitHub RepoXilinx 教程。 量化步驟需要有效的網絡輸入數據。為了讓第一層的圖像加載器運行起來,我們需要 ms coco 數據集格式的圖像。幸運的是,roboflow 可以以 coco 格式導出數據集(參見“數據增強”步驟)。對于量化,可以使用來自 roboflow 的測試圖像。Roboflow 自動將數據集拆分為測試、訓練和有效部分。完整的編譯代碼、測試圖像和 DPU 配置是我 repo 的一部分。除了網絡層適配之外,DPU 編譯器還需要一些有關 DPU 的信息,這些信息在硬件設計中實現。配置存儲在 JSON 文件中。JSON 文件分為兩部分,一是 CPU 架構和 DPU 類型,另一部分是 DPU 配置(Cores、Softmax 等)。這個 JSON 文件可以使用 DELT 工具生成。DELT 工具將 *.hwh 文件轉換為 JSON 文件,可用于編譯。有關更多信息,請參閱此賽靈思論壇帖子我的自定義 JSON 文件是我的repo的一部分如果你準備好了一切,你就可以量化和編譯 DPU 精靈了。從您的自定義網絡。如果一切成功,就會生成dpu.elf文件。該文件可以使用 PYNQ-DPU python 框架加載。

切片程序

最后一部分解釋了 Pizza Slicer 代碼。該程序是用python3編寫的,并使用jupyter notebook來控制程序。源代碼

前三個單元格涵蓋了所有 Python 導入和 FPGA/DPU 文件加載。

pYYBAGN1Hg-AYtEWAAFSU9ME240037.png
Python 導入、FPGA bin 和 DPU 文件加載
?

生成切片蒙版。找到最佳角度的問題以幾何方式解決。我使用了 180 個蒙版,將 320 x 320 的圖像分成兩部分。注釋代碼,啟用繪制切片 mak 的 matplotlib 圖。

poYBAGN1HhKAUTVBAAFTr5_Rza8773.png
生成切片蒙版
?

為 Yolov3 網絡加載錨點。Yolov3 使用一組固定的錨點來生成邊界框。這些錨點用于評估函數。

pYYBAGN1HhWAE-I1AADfqsQYTk0897.png
yolov3 主播
?

評估函數將 Yolov3 輸出轉換為框、類和分數。這是必需的,因為所有其他步驟都需要邊界框格式的輸出。

poYBAGN1HhiAKDd4AAIDXfeLX-I038.png
評價功能
?

用于相機輸入和投影儀輸出的 HDMI 設置。該代碼與 PYNQ HDMI 接口兼容。此時可以設置自定義輸入/輸出。

poYBAGN1HhuAYy7VAADg6QhzepI330.png
輸入/輸出設置
?

第一步中裁剪來自相機的輸入圖像,以選擇感興趣區域 (ROI)。我的 GoPro 攝像機輸出 720p 圖像,因此 ROI 設置為 440 x 440 像素,裁剪是在軟件中完成的。如果您的相機沒有固定在投影儀上,并且需要進行一些調整以使比薩餅適合 ROI 中間,這將非常有用。ROI 圖像數據被傳輸到 FPGA 圖像縮放器,數據傳輸由一些 DMA 任務完成。為了啟用從 python 內存到 PL 內存的數據傳輸,使用了 pynq.buffer。PL 圖像縮放器的輸出用作 DPU 輸入。PL resizer 的源代碼來自這個PYNQ-Helloworld GitHub repo. PL resizer 可以處理自定義輸入/輸出圖像,輸入/輸出圖像的設置可以通過寄存器進行設置。必須設置四個寄存器值: 0x10:輸入圖像高度;0x18 輸入圖像寬度;0x20 輸出圖像高度;0x28 輸出圖像寬度

pYYBAGN1Hh6AYVgZAAIF_-7frdQ566.png
圖像捕捉、裁剪和調整大小
?

DPU init 和 DPU Task 啟動。評估函數將原始 Yolov3 網絡輸出轉換為邊界框格式。

poYBAGN1HiKAYBxNAAJ4WRgS7nY286.png
DPU 初始化和評估
?

評估函數的輸出被傳遞到排序過程。重復的比薩檢測被刪除,只使用比薩的最高置信度。如果置信度高于 0.5,則使用 Pepperoni 檢測。

pYYBAGN1HiWAEOCoAAFB_9-KNGQ399.png
重新排序原始的 Yolo 輸出
?

基于排序過程,在 320 x320 uint8 數組中繪制了一個虛擬披薩。邊界框坐標用于在邊界框內繪制一個橢圓。橢圓的內部用 1 填充,外部用 0 填充。每個意大利辣香腸近似值都添加到 320 x 320 基本數組中。基本數組元素是一個披薩邊界框近似。披薩基數組之外的意大利辣香腸檢測將被忽略。結果是一個意大利辣香腸熱圖。

poYBAGN1HieAXtPVAAEtHj95q-o867.png
生成意大利辣香腸熱圖
?

意大利辣香腸熱圖,覆蓋意大利辣香腸切片也被模擬(較亮的區域)。這就是為什么使用對象檢測網絡而不是分割網絡的原因之一。使用目標檢測網絡和橢圓區域近似覆蓋意大利辣香腸可以進行模擬。

pYYBAGN1HiqADkdEAAHFt3NxxFs263.png
意大利辣香腸熱圖與輸入圖像
?

3D 意大利辣香腸熱圖,重疊的意大利辣香腸區域被繪制為尖峰。該圖非常清楚地顯示了在橢圓區域近似和層添加之后如何組合熱圖數據。

poYBAGN1Hi2ANAVdAAGgfxVxGBg791.png
3D 近似熱圖
?

在計算意大利辣香腸熱圖后,必須定義最佳切割角度。這個問題是通過對意大利辣香腸熱圖應用蒙版來解決的。掩碼將熱圖值的一半設置為零。應用掩碼后,所有元素都被匯總。該值與原始意大利辣香腸熱圖中的所有元素的一半進行比較。二分搜索算法試圖最小化從掩碼總和到半熱圖總和的差異。我使用了我們只需要從 0 到 180 度搜索的事實,因為掩碼圍繞數組的中心旋轉。這種搜索非常有效,并且極大地減少了計算次數。

pYYBAGN1HjGAI8GPAAKQfN34lb4339.png
二分查找最佳切割角度
?

3D 最佳切割角度的可視化

poYBAGN1HjOAeKsiAAG8_JRhfCk583.png
3D 披薩切片
?

在最后一步中,計算“Cut Here”的輸出圖像和切割箭頭。

pYYBAGN1HjaAUrMmAAD5arm7sQ8364.png
輸出圖像計算
?

設置

pYYBAGN1HjuAVEPtAAncX2znGow074.jpg
帶鏡子和 GoPro 攝像頭的 Bottum Up 投影儀
?
poYBAGN1HkCAdpRjAAZGT0nCOmo868.jpg
帶鏡子和 GoPro 攝像頭的 Top Down 投影儀
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費