文章目錄
- 去哪里下代碼?
- 怎么下代碼?
- 怎么裝環境?
- 命令行界面(CLI)指令和Python腳本區別?
- 附錄1 conda常用指令
- 附錄2 git常用指令
- 附錄3 項目代碼文件作用
去哪里下代碼?
下載代碼請大家直接去 YOLOv8
的官方倉庫下載,名字叫 ultralytics,有些鏡像網站和個人發的等來歷不明的代碼不要用!
官方倉庫長這樣子,先別著急下,看完這篇文章你會學到更高級的方法~
怎么下代碼?
下載代碼方式有三種:
-
直接下載代碼壓縮包
-
直接下主分支代碼壓縮包(不推薦!)
-
下發行版壓縮包(可以,但有更好的方法!)
-
-
pip install ultralytics (不要用!)
-
git clone https://github.com/ultralytics/ultralytics.git (推薦!但有些人不會用git!😭)
直接下載主分支,不推薦!下文解釋為什么。
下發行版,可以!發行版下載下來名字有-8.1.0
后綴的。注意區分!
git
沒用過沒關系,Linux
一般都預裝了,win
和mac
直接來這里下載,無腦安裝。
Git - Downloads (git-scm.com)
怎么裝環境?
非常簡單,就記住一條核心,別用 pip install ultralytics
這條指令!
pip install ultralytics
的確是一種裝v8
環境的方式,但是這不是給你們想對代碼做改進的同學用的,是給那些不想對YOLOv8
源代碼做改動的同學用的!
如果你做改進,一定要將項目源代碼放到本地的工作區!那就只能下載壓縮包或者clone源代碼。
但是下載和clone
也要注意,YOLOv8
有很多的版本,版本是怎么產生的呢?在項目開發過程中,隨著新功能的添加、舊問題的修復以及性能的優化,項目會不斷地演進。每次對代碼的重大更新或穩定的改進之后,開發者通常會發布一個新的版本,這樣用戶就可以使用到最新的功能和最佳的性能,這些版本沒更新一次都更新到了v8項目的”主分支“,就是你每次默認下載的代碼版本。
YOLOv8
這個項目維護的非常的頻繁,如果你每次都下載主分支,那你可能每次的代碼都是不一樣的,所以為了保證教程和學習的統一,我們一般使用”發行版“代碼。
發行版是指在軟件開發中,當一個產品或項目的特定版本準備好被廣泛使用時,正式發布給公眾的版本。發行版通常包含了從上一個正式發布的版本以來的所有更新,如新功能、改進、和bug修復。發行版通常都是非常穩定的,而且功能上也是很完整的,最主要的是用發行版可以保持你使用的代碼版本和我教程的代碼版本統一!
目前YOLOv8
項目有兩個發行版,v8.1.0
和 v8.2.0
,我這里使用的都是 v8.1.0
,所以下面我的教程都是針對 v8.1.0
,如果你想改進的是YOLO
模型,不需要刻意追求最新的發行版, v8.1.0
對你來說完全夠用。v8.1.0
和 v8.2.0
差別不是很大。
# 克隆代碼
git clone https://github.com/ultralytics/ultralytics.git --branch v8.1.0# 克隆后將路徑切換到和pyproject.toml文件同級別,不然裝環境會報錯
cd ultralytics/
代碼下到本地后開始安裝依賴環境!
# 新建一個conda環境
conda create --name yolov8_env python=3.10 -y# 切換到你新建的conda環境
conda activate yolov8_env# 安裝yolov8項目所需要的包
pip install -e .
如果在你訓練時顯示沒有用到 gpu
, 說明 torch ``torchvision
這些包版本沒對應,可以去Pytorch官網選擇自己的安裝指令,但是肯定有人不會選,那就輸入下面的指令:
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.tuna.tsinghua.edu.cn/simple
所以,從下代碼到裝環境,用下面的指令就可以無腦解決!就是這么簡單。
- 克隆
v8.1.0
發行版代碼
git clone https://github.com/ultralytics/ultralytics.git --branch v8.1.0
- 克隆后將路徑切換到和
pyproject.toml
文件同級別,不然裝環境會報錯
cd ultralytics/
- 新建一個
conda
環境
conda create --name yolov8_env python=3.10 -y
- 切換到你新建的
conda
環境
conda activate yolov8_env
- 安裝
yolov8
項目所需要的包
pip install -e .
- 如果無法使用
GPU
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.tuna.tsinghua.edu.cn/simple
命令行界面(CLI)指令和Python腳本區別?
當你YOLO
環境安裝好后你有兩種訓練方式:
- 一種就是用
CLI
,也就是yolo task=detect mode=train model=yolov8n.pt args
- 第二種就是用我給的
python
腳本,【訓練】【驗證】【推理】
CLI
是很方便快捷,但是很多指令你不會用!用不明白為什么非得用呢,用我給的腳本不好嗎,各種參數,各種功能給你寫的輕輕楚楚。
附錄1 conda常用指令
-
創建新環境:
conda create --name myenv
:創建一個名為myenv
的新環境。conda create --name myenv python=3.8
:創建一個包含指定Python版本(例如Python 3.8)的環境。
-
激活和停用環境:
conda activate myenv
:激活名為myenv
的環境。conda deactivate
:停用當前環境。
-
安裝包:
conda install numpy
:在當前活動環境中安裝NumPy包。conda install numpy=1.18
:安裝指定版本的NumPy。conda install numpy scipy pandas
:同時安裝多個包。
-
查看環境列表:
conda env list
或conda info --envs
:列出所有Conda環境。
-
查看已安裝的包:
conda list
:在當前環境中列出所有已安裝的包。conda list -n myenv
:在指定環境myenv
中列出所有已安裝的包。
-
更新和刪除包:
conda update numpy
:更新當前環境中的NumPy包。conda remove numpy
:從當前環境中刪除NumPy包。
-
克隆環境:
conda create --name myenv2 --clone myenv
:從現有環境myenv
克隆到新環境myenv2
。
-
刪除環境:
conda remove --name myenv --all
:刪除名為myenv
的環境。
-
導出和導入環境:
conda env export > environment.yml
:導出當前環境到environment.yml
文件。conda env create -f environment.yml
:根據environment.yml
文件創建環境。
附錄2 git常用指令
新手會 git clone
和 git pull
就夠了!
-
配置用戶信息:
git config --global user.name "Your Name"
:設置全局用戶名。git config --global user.email "your.email@example.com"
:設置全局用戶郵箱。
-
初始化和克隆倉庫:
git init
:在當前目錄初始化一個新的 Git 倉庫。git clone https://github.com/user/repo.git
:克隆遠程倉庫到本地。
-
添加和提交更改:
git add filename
:將文件添加到暫存區。git add .
:將所有更改(當前目錄及其子目錄中的更改)添加到暫存區。git commit -m "Commit message"
:提交暫存區的更改,并附加提交消息。
-
查看狀態和日志:
git status
:查看當前工作目錄狀態(更改的文件、未追蹤的文件等)。git log
:查看提交歷史。git log --oneline
:查看壓縮的提交歷史。
-
分支管理:
git branch
:列出所有本地分支。git branch new-branch
:創建一個名為new-branch
的新分支。git checkout branch-name
:切換到指定分支branch-name
。git checkout -b new-branch
:創建并切換到新分支new-branch
。
-
合并和解決沖突:
git merge other-branch
:將other-branch
分支合并到當前分支。- 在合并過程中,如果遇到沖突,需手動解決沖突的文件,然后使用
git add
將其標記為已解決。
-
推送和拉取:
git push origin branch-name
:將本地分支branch-name
推送到遠程倉庫。git pull origin branch-name
:從遠程倉庫拉取branch-name
分支并自動合并到當前分支。
-
撤銷操作:
git checkout -- filename
:放棄對文件的未暫存的更改。git reset HEAD filename
:從暫存區撤銷對文件的添加。git reset --hard commitID
:重置當前分支到指定提交,丟棄此后的所有更改。
-
查看更改:
git diff
:顯示暫存區和工作目錄的差異。git diff --staged
:顯示已暫存的與上次提交的差異。
附錄3 項目代碼文件作用
-
assets - 存放圖片資源,用于模型測試或示例。
bus.jpg
- 測試圖片,公交車圖像。zidane.jpg
- 測試圖片,足球運動員齊達內的圖像。
-
cfg - 配置文件目錄,包含模型和數據集的配置。
datasets
- 各種數據集的配置文件,如COCO、DOTA等。models
- 各種模型的配置文件,如YOLOv3、YOLOv5等。trackers
- 跟蹤算法的配置文件,如ByteTrack、BOTSort等。
-
data - 與數據處理相關的腳本和模塊。
annotator.py
- 數據注釋工具。augment.py
- 數據增強模塊。dataset.py
- 數據集加載和處理。
-
engine - 模型訓練、評估、導出等核心功能。
exporter.py
- 模型導出工具。trainer.py
- 模型訓練器。validator.py
- 模型驗證器。
-
hub - 與模型集成和管理相關的模塊。
auth.py
- 授權和認證處理。session.py
- 會話管理。
-
models - 包含多種不同模型的定義和訓練邏輯。
rtdetr
- RT-DETR模型的實現。yolo
- YOLO模型系列的實現,包括檢測、姿態估計、目標跟蹤等。
-
nn - 神經網絡基礎模塊,如層定義、塊定義等。
autobackend.py
- 自動選擇后端處理。modules
- 網絡層和組件的定義。
-
solutions - 特定問題的解決方案,如目標計數、速度估計等。
object_counter.py
- 目標計數。speed_estimation.py
- 速度估計。
-
trackers - 目標跟蹤算法的實現。
byte_tracker.py
- ByteTrack算法的實現。utils
- 跟蹤相關的工具,如卡爾曼濾波器等。
-
utils - 各種工具和輔助功能。
downloads.py
- 下載工具。torch_utils.py
- PyTorch相關的工具和輔助函數。