or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
tags: 課程規劃
Darknet YOLO 入坑手冊
電腦視覺 物件偵測 簡介
https://pjreddie.com/darknet/yolo/
ameba pro2 對 yolo 的支援時間會比較晚。
Vision Transformer(ViT)重點筆記
近年的主流。
YOLO v4 模型訓練實作
目標檢測 YOLO v1-v5 全版本差異
活動推廣
活動內容
前置準備
學習路線 (入門到入土)
因考量時程上的關係,本章針對Yolo基礎與如何快速實現
什麼是機械學習
https://www.wikiwand.com/zh-tw/机器学习
什麼是NN(神經網路)
https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.htmlhttps://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html
什麼是 Yolo
https://pjreddie.com/darknet/yolo/
Dataset是什麼
分別有測試,訓練,驗證
data.yaml訓練時會使用到
https://public.roboflow.com/
https://www.kaggle.com/datasets
GPU或是NPU
我需要什麼樣的設備呢?
如果沒GPU就不能做深度學習了嗎?
開發環境的建置
基礎程式設計能力
https://zh.wikipedia.org/zh-tw/OpenCV
OpenCV在電腦視覺領域極常使用到,不只是在AI領域,
可以用於做影像相關的(顏色,物件邊緣,光流):可以將影響從RGB轉成GBR排序方式,亦可轉為灰皆或是更進一步將影像二元化,可以看作代碼版本的photoshop…
https://blog.csdn.net/jjddss/article/details/72841141
在OpenCV中標準安裝以外,亦可透過安裝OpenCV的contrib,實現人臉偵測或是TCR
https://pyimagesearch.com/2018/09/24/opencv-face-recognition/
https://pyimagesearch.com/2018/09/17/opencv-ocr-and-text-recognition-with-tesseract/
命令列基本操作
參考資料
GITHUB參考資料
Matlab運行代碼(初學者可以如有MATLAB授權可快速測試)
https://github.com/matlab-deep-learning/pretrained-yolo-v4
Pytorch Github資源
https://github.com/bubbliiiing/yolov4-tiny-pytorch
Darknet Github
https://github.com/AlexeyAB/darknet
YOLO訓練環境與過程(Pytorch)
1.UBUNTU Linux OK / Windows尚未測試
2.安裝完成Nvidia驅動,CUDA
3.使用CMD建立Python虛擬環境
4.資料集建置或下載


參考路徑 https://public.roboflow.com/object-detection/aquarium/2/download/yolov7pytorch
使用Yolo v7 PyTorch
下載完成後放在yolov7目錄底下(不喜歡的同學可以選擇不加)
確認環境建制完成後


如果需要指定GPU 可下 –device <num_gup>
如有多張顯示卡 不指定狀況下是都使用
–batch 4 (預設是64)
–data 資料集所在的yaml文件,裡面會描述路徑,標籤與影像數量
此文間有經過修改將,Path改為絕對路徑
–cfg 選擇需要訓練的yolov7規格,路徑中包含v7-tiny版本
–img 設定影像尺寸
–hyp 超參數文件路徑(有興趣的同學可以自行調整)
更多細節可以參考github文件
或者可以參考https://blog.csdn.net/weixin_51697369/article/details/123446928
可以使用nvtop進行使用資源檢視如下圖
訓練過程基於設備(CPU/GPU)規格有所差異,等待完成後
偵測
–conf 設定信心值 約低越容易被偵測到,但相對月不準確
–source 圖片路徑
好多好多魚魚<>< ~ <3

測試集結果


訓練集結果
混淆矩陣

使用攝影機
YOLO訓練環境與過程(Darknet)
Darknet
與流行的Tensorflow以及Caffe框架相比,Darknet框架在某些方面有着自己獨特的優勢。
YOLOv3:YOLOv3在YOLOv2的基礎上進行了改進,引入了多尺度預測和殘差結構。它使用Darknet-53作為其主要的特徵提取器,並增加了對更多物體類別的支持。此外,YOLOv3還對損失函數進行了改進,以提高對小物體的檢測精度。
YOLOv4:YOLOv4在YOLOv3的基礎上進一步改進了性能和速度。它使用CSPDarknet53作為特徵提取器,並引入了Bag of Freebies(BoF)和Bag of Specials(BoS)的概念,用於提高檢測精度。此外,YOLOv4還引入了Mish激活函數、PANet脊椎網路等新技術,以實現更好的性能。
YOLOv5:YOLOv5主要集中在改進速度和部署方便性。它採用了更輕量級的網絡結構,並且將框架從Darknet轉換到PyTorch。YOLOv5還引入了新的錨點機制,以及改進的數據增強策略,以實現更高的檢測精度。儘管YOLOv5在性能上有所提高,但它在社區中引起了一些爭議,因為其版本命名和開發過程與之前的YOLO版本不同。
關於Darknet深度學習框架
Darknet深度學習框架是由Joseph Redmon提出的一個用C和CUDA編寫的開源神經網絡框架。它安裝速度快,易於安裝,並支持CPU和GPU計算。
你可以在GitHub上找到源代碼:
https://github.com/pjreddie/darknet
你也可以在官網上閱讀完成更多事情:
https://pjreddie.com/darknet/
轉自
https://www.twblogs.net/a/5c840d3dbd9eee35fc13cdc4
安裝編譯工具
安裝 cuDNN
https://developer.nvidia.com/rdp/cudnn-download
install opencv= =3.4.19 opencv_contrib==3.4.19
下圖為3.4.16版本…上方命令已將改為3.4.19




安裝Darknet
你應該可以看到
可能會出現的錯誤
https://blog.csdn.net/XCCCCZ/article/details/112793411
https://www.cxyzjd.com/article/weixin_41840088/114594072
出現
./darknet: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory./darknet: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory
補上
Darkent 測試
yolov3
yolov7-tiny
v7Tiny運行結果

Darknet 訓練
下載預先訓練
https://github.com/pjreddie/darknet/issues/2557
Darknet cfg/weights file - currently tested for inference only:
cfg: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov7-tiny.cfg
weights: https://github.com/AlexeyAB/darknet/releases/download/yolov4/yolov7-tiny.weights
weights for fine-tuning: https://github.com/AlexeyAB/darknet/releases/download/yolov4/yolov7-tiny.conv.87
Darknet訓練
準備數據集
腳本內容



等待下載完成
修改dataset配置路徑(cfg/coco.data)

我的設備 3090ti * 1張 約莫需要250hr

如使用 2080ti * 4張 約莫24hr
Darknet 客製化(yolov4 tiny)
基於https://zh.wikipedia.org/zh-tw/%E7%BE%8E%E5%9C%8B%E6%89%8B%E8%AA%9E%E5%AD%97%E6%AF%8D
本次此次使用
修改cfg
A. classes 為資料的總類別數量
B. filters 為 ( classes + 5 ) * 3
下載預訓練
官方提供
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29
訓練
yolov4預測(電腦)
yolov4預測(電腦webcam)
-gpus 使用第二個GPU
-c 1 使用/dev/vidoe1
-thresh 0.1閥值
透過Docker部屬Darknet環境
dockerfile_opencv3_4_16_darknet(Yolo懶人包)
https://github.com/Oliver0804/dockerfile_opencv3_4_16_darknet
這個Dockerfile是用來建立一個深度學習開發環境的映像檔,該環境包含了NVIDIA CUDA、OpenCV,以及Darknet等關鍵元件,並且透過Docker的封裝特性,讓這個環境可以輕易地在不同的系統上進行部署和運行。
基底映像檔:我們從具有CUDA 11.0.3支援的Ubuntu 20.04映像檔開始建立我們的環境。
工具安裝:接著,我們安裝了一系列的基本工具,包括了C++編譯器、CMake、Git,以及一些其他必要的軟體包。
Python環境設定:我們也安裝了Python以及相關的函式庫,並設定好了Python的執行環境。
OpenCV安裝(3.4.16):我們從GitHub上抓取OpenCV的源碼,並進行編譯和安裝。在編譯的過程中,我們有啟用CUDA支援以提供更好的效能。
Darknet安裝:我們也從GitHub上抓取Darknet的源碼,並進行編譯和安裝。同樣地,我們有啟用CUDA和OpenCV支援。
X11支援:為了能在Docker環境中顯示圖形介面,我們也進行了相關的設定。
最後,我們設定了預設的命令為啟動bash,這樣當你啟動這個Docker映像檔的時候,就會直接進入bash命令列介面。
使用簡介
2與3則一使用即可
build image
ex. docker build -t oliver_darknet –no-cache .
編譯完成後可透過
查詢是否正確編譯
1.容器內操作(於容器中進行操作)
部屬docker容器
ex. docker run –gpus all -it oliver_darknet
下載yolov3權重檔
運行測試
2.容器外操作(離開即移除該容器,下次會基於映像檔重新部屬新的)
於設備中 任意 clone yolo項目
運行,此命令用運行完後即刻結束(–rm)
ex. docker run –gpus all –rm -v $PWD:/workspace -w /workspace oliver_darknet darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

yolov4預測(Ameba pro 2)
目前步驟較為繁瑣,且暫無提供離線版本的工具,如果比較在意模型保密的同學可以考慮一下。
轉換模型.nb 官方提供線上轉換工具

https://www.amebaiot.com/en/amebapro2-ai-convert-model/
訓練好的的weights跟訓練時使用的.cfg檔案打包壓縮成一份zip(不能有中文,包含cfg中的註解也是)
上傳完成後約莫需要等10~20分鐘…轉換好的.nb檔案會寄到你信箱。
把他下載下來後就可以進行Arduino的開發。
在等待的時間可以開始setup Arduino的開發環境
具體細節可以參考Ameba pro2 Github => https://github.com/ambiot/ambd_arduino
添加額外開發版管理路徑…
並選擇Ameba pro 2
開啟Ameba pro 2 NN 範例

目前對於模型抽換有需要調整,等Realtek夥伴進行更新

這邊直接把剛剛所收到的.nb進行替換,將yolov4_tiny.nb更換成我們自行訓練的(26類)。
.nb放置檔案的位置如下圖path,具體會根據所使用的Amebapro2_SDK版本些許差異
最後,因為原本Realtek提供的是coco dataset 是80類…需要替換成我們自己種類(26類)


修改OSD繪製的標籤清單
改為
修改114的item.name()改為 itemList[obj_type].objectName

(2023/02/16測試已從Github上更新,後續版本可以不用進行此步驟)
Ameba pro2 yolo展示
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →Ameba pro2 快速替換模型腳本
Image Not Showing
Possible Reasons
目前NN模型替換只能從Arduino目錄下進行每次操作(路徑蠻深的)
更換又希望能保存之前的模型,故以下的腳本因此誕生,目前bat只針對windows系統
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →https://docs.google.com/presentation/d/1Yfrjv8MI0mw2o8LRhpUgn6YCPf0URzcRoqOvHbtCipg/edit#slide=id.g203d87f4c89_0_0