資料介紹
描述
?
深度學習極大地提高了計算機視覺的性能,使其能夠達到人類甚至在某些情況下甚至超人類水平的能力。在過去的幾年里,用于訓練深度神經網絡的框架一直在提高其用戶友好性,以至于具有一些 Python 編程技能的普通用戶可以訓練和使用神經網絡來完成廣泛的計算機視覺任務,包括圖像分類、對象檢測和語義分割。
不過有一個警告——眾所周知,如果你想獲得好的結果,深度神經網絡需要大量數據進行訓練。在某些情況下,您可以使用開放數據集 - 然后問題就解決了。
在圖像分類的情況下,可以通過抓取網絡獲得中小型數據集。對于對象檢測,情況更加困難,因為訓練對象檢測網絡不僅需要圖像,還需要注釋文件,其中包含邊界框坐標。因此,如果有問題的對象沒有可用的良好開源檢測數據集,您唯一的選擇是手動創建數據集,這可能是一項乏味的任務。
除非...
您可以使用合成數據自動執行數據集創建過程。有幾種方法可以生成用于對象檢測的合成數據:
1)只需將對象粘貼到背景上并隨機化它們的方向/比例/位置
2)使用逼真的3D渲染引擎,如Unreal Engine
3) 使用 GAN 生成數據?當然,在這種情況下,您已經擁有一個能夠識別/檢測相關對象的網絡(GAN 中的鑒別器),所以這有點像雞與蛋的問題
2022 年 4 月 4 日更新。我盡我所能定期更新我的文章,并根據您在 YouTube/Hackster 評論部分的反饋。如果您想表達對這些努力的支持和贊賞,請考慮給我買杯咖啡(或披薩):)。
在本文中,我們將重點介紹最簡單和最容易剖析的方法 - 剪切粘貼。不要被腳本生成的圖像看似簡單和不切實際的外觀所迷惑。卷積神經網絡沒有邏輯或常識——因此對于我們的對象檢測網絡,即使是看似荒謬的圖像也是一個很好的學習材料。
我的任務是MARK 機器人平臺的樂高檢測模型。我在 Kaggle 上找到了一個很好的樂高分類數據集,但沒有現成的檢測數據集。所以我決定重新設計用于為論文Cut, Paste and Learn: Surprisingly Easy Synthesis for Instance Detection生成合成場景的代碼。
下載并準備對象實例
從這里下載樂高圖像數據集。它實際上也是使用 Autodesk Maya 2020 從 3D 模型程序生成的。
對于合成數據生成,我們將需要對象實例及其二進制掩碼——在我們的例子中,由于樂高積木都在黑色背景上,我們可以簡單地使用以下閾值腳本來生成這些掩碼。我們還隨機給樂高積木上色,因為我們希望模型檢測不同顏色的樂高積木。
# Standard imports
import cv2
import numpy as np;
import os
import time
import random
import sys
colors = ([1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 0], [0, 1, 1], [1, 0, 1])
input_folder = sys.argv[1]
output_folder = sys.argv[2]
try:
os.mkdir(os.path.join(os.path.join(output_folder, "imgs")))
os.mkdir(os.path.join(os.path.join(output_folder, "masks")))
except Exception:
pass
for folder in os.listdir(input_folder):
for file in os.listdir(os.path.join(input_folder, folder)):
print(file)
img = cv2.imread(os.path.join(input_folder, folder, file))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 1,255, cv2.THRESH_BINARY_INV)
#coloring
RGB = random.randint(0, len(colors)-1)
img[thresh == 0] *= np.array(colors[RGB], dtype='uint8')
#writing to files
cv2.imwrite(os.path.join(os.path.join(output_folder, "imgs", file)), img)
cv2.imwrite(os.path.join(os.path.join(output_folder, "masks", file)), thresh)
cv2.imshow('final', img)
cv2.waitKey(50)
cv2.destroyAllWindows()
使用輸入文件夾的名稱運行上述腳本(其中包含具有不同對象圖像的文件夾,每種類型的對象一個)和輸出文件夾,其中將保存圖像和蒙版,例如
python helper.py objects output
您將看到正在處理和保存的圖像。
接下來,克隆我的剪切、粘貼和學習論文代碼的分支——我將其更改為使用 Python 3 并接受.png 圖像作為掩碼。
git clone https://github.com/AIWintermuteAI/syndata-generation.git
安裝所有必需的依賴項(我建議您安裝依賴項并在 Python 的虛擬環境中執行腳本,例如 conda 或 virtualenv)。
pip install -r requirements.txt
將帶有圖像和蒙版的文件夾放入 data_dir/objects_dir 并在 data_dir/backgrounds 中添加或更改背景圖片。干擾物是我們試圖檢測的其他不是物體的物體——我在做這個項目時沒有使用它們。然后使用以下命令運行生成腳本:
python dataset_generator.py data_dir/objects_dir/lego/imgs output_dir/ --num 3 --scale --dontocclude
和...
獲得數據后,我們需要對其進行適當的結構化。需要有 4 個文件夾——訓練圖像、訓練注釋、驗證圖像和驗證注釋。只需從剛剛生成的數據中剪切一些圖片和注釋,然后將它們粘貼到驗證圖像和注釋文件夾中。確保剪切而不是復制圖像/注釋。
訓練模型
您可以使用任何框架/腳本來訓練模型 - 但是我建議使用aXeleRate,這是一個基于 Keras 的邊緣 AI 框架。它將自動訓練模型并將訓練會話的最佳模型轉換為邊緣推理所需的格式 - 目前它支持將訓練模型轉換為:.kmodel(K210)、.tflite 格式(提供完整的整數和動態范圍量化支持),OpenVINO IR 模型格式。實驗性支持:Google Edge TPU、TensorRT。
在本地機器上安裝 aXeleRate
pip install git+https://github.com/AIWintermuteAI/aXeleRate
要下載示例,請運行:
git clone https://github.com/AIWintermuteAI/aXeleRate.git
您可以使用aXeleRate文件夾中的 tests_training_and_inference.py運行快速測試。它將為每種模型類型運行訓練和推理,保存和轉換訓練好的模型。由于它只訓練 5 個 epoch 并且數據集非常小,您將無法獲得有用的模型,但此腳本僅用于檢查是否存在錯誤。
對于實際訓練,您需要運行以下命令:
python axelerate/train.py -c config/lego_detector.json
您可以從此處下載 example.json 配置文件和預訓練模型。確保更改圖像/注釋訓練和驗證文件夾路徑以匹配它們在系統上的位置。有關配置文件中附加參數的進一步說明,請查看本文。
推理
訓練完成后,您可以使用以下命令在您的計算機上進行快速健全性檢查并執行推理:
python axelerate/infer.py -c config/lego_detector.json --weights path-to-h5-weights
以下步驟將取決于您要運行訓練模型的硬件。例如,對于 Raspberry Pi,使用 generated.tflite 模型和這個示例腳本。
在本文中,我們將使用基于 K210 的機器人平臺進行 AI 教育,MARK(代表 Make A Robot Kit)。將項目文件夾中的.kmodel 文件復制到SD 卡中,并將SD 卡插入cyberEye 主板——cyberEye 是Maixduino 的定制版本。首先,讓我們使用來自 TinkerGen 的圖形編程環境 Codecraft 快速測試我們的機器人樂高檢測功能。
打開 Codecraft ,選擇 MARK(cyberEye) 作為設備,添加自定義模型擴展并定義具有以下屬性的對象檢測模型:
然后使用新出現的塊創建以下代碼:
如果您覺得卡住了,可以從本文的附件中下載 Codecraft 的 .cdc 文件。
它適用于較大的樂高積木,但也可以檢測較小的積木。在找到四月標簽后,機器人會接近四月標簽,直到達到設定的距離。然后它放下樂高積木,轉身并從循環的開頭繼續。
如果您使用相同型號和相同打印的 April Tag(A3 紙,tag36h11_1),您可以簡單地在 MaixPy IDE 中執行代碼并觀看您的機器人收集樂高積木!
如果您有任何問題,請在LinkedIn上添加我,并訂閱我的 YouTube 頻道,以獲得有關機器學習和機器人技術的更多有趣項目的通知。
- 生成式AI對智能家居的影響 12次下載
- TinyML:使用合成數據的永遠在線的音頻分類器 0次下載
- 合成數據的不合理有效性 0次下載
- TinyML:使用ChatGPT和合成數據檢測嬰兒哭聲 1次下載
- PyTorch教程14.6之對象檢測數據集 0次下載
- 基于特征融合等的視覺場景圖生成模型 10次下載
- 基于改進模型和區域分割的表情動畫合成方法 2次下載
- 一種可用于生成動漫人物頭像的改進模型 3次下載
- 融合施工場景及空間關系的圖像描述生成模型 0次下載
- 用于網絡用戶行為聚類分析的簇標簽自動生成方法 15次下載
- 自動生成數字密碼軟件1.71 PC版應用程序免費下載 0次下載
- TMS320C54X生成數字信號處理器的設備的功能概述 1次下載
- 基于內存云的大塊數據對象并行存取策略 0次下載
- 類對象測試數據自動生成研究 5次下載
- 面向對象軟件自動生成在檢測系統中的應用 9次下載
- OpenCV4.8 C++實現YOLOv8 OBB旋轉對象檢測 258次閱讀
- 對象檢測邊界框損失函數–從IOU到ProbIOU介紹 812次閱讀
- YOLOv8實現旋轉對象檢測 415次閱讀
- 兩種應用于3D對象檢測的點云深度學習方法 207次閱讀
- 【開發者說】鴻蒙原生應用開發——分布式數據對象 454次閱讀
- 詳解對象檢測網絡性能評價指標mAP計算 215次閱讀
- 對象轉換工具:MapStruct 庫 595次閱讀
- 頂刊TPAMI 2023!生成式AI與圖像合成綜述發布! 401次閱讀
- 數字頻率合成器的作用 535次閱讀
- Python中的類和對象詳解 717次閱讀
- 使用無監督學習和合成數據作為數據增強方法來分類異常 705次閱讀
- 谷歌新研究使用連續拍攝的一對非模糊圖像,能夠合成運動模糊圖像 2413次閱讀
- 工業機器人檢測對象的根本是什么? 4962次閱讀
- 對象存儲是什么?塊存儲又是什么? 1.8w次閱讀
- 基于numpy實現合成梯度 2608次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多