yolov5 檢測框顯示中文標籤#
注意:本註解對應 yolov5 的 5.0 版本!!!#
前言#
很多人在訓練yolov5目標檢測的時候,標籤只能顯示英文的。怎麼樣才可以訓練一個可以檢測物體並且顯示中文標籤的模型呢。下面我們來一步一步的做。
1、有中文標籤的數據集#
首先在收集數據集的時候,打部分公開的數據集,標籤都是英文的,格式都是 voc 格式,文件是 xml 文件,當然 xml 文件格式的標籤是特別直觀的,直觀的知道標籤中的圖片大小,標註位置,還有標註的類別。雖然訓練 yolov5 的時候用的是 yolo 格式的數據集,但是大家在標註數據集的時候盡量標註為 voc 格式,這樣方便又直觀,然後訓練 YOLOv5 模型的時候有代碼可以一鍵轉換。代碼博客:目標檢測 --- 數據集格式轉化及訓練集和驗證集劃分。
自己製作中文標籤的數據集的話,利用 labelimg 這個工具標註數據集的時候,將標籤改成中文就好了,具體的教程博客:目標檢測 --- 利用 labelimg 製作自己的深度學習目標檢測數據集。
如果這裡有一份英文標籤的 voc 格式的數據集,可以利用如下的代碼將數據集中的英文標籤轉為中文標籤。
這個代碼也可以將中文標籤的 voc 格式的數據集轉化為英文標籤的數據集。如下圖所示,將中文和英文的位置調換就可以了。
中文標籤的 voc 格式的數據集,可以利用目標檢測 --- 數據集格式轉化及訓練集和驗證集劃分這篇博客中的代碼將 voc 格式的數據集轉化為 yolo 數據集,並劃分為訓練集和驗證集。
至此中文標籤的數據集就準備好了
2、yolov5 代碼修改為支持中文標籤#
特別要說明一下,該博客所用的是 yolov5 的 5.0 版本。
(1)train.py 文件修改,在 py 文件中的 63 行,代碼修改如下:
(2)test.py 文件文件修改,在 py 文件中的 73 行,代碼修改如下:
(3)utils/general.py 文件文件修改,在這個代碼中導入如下的包:
(4)utils/plots.py 文件修改,在 py 文件中的 64 行,修改 plot_one_box 函數,if label 之後的代碼改為:
(5)utils/plots.py 文件修改,在 py 文件中的 144 行,修改 plot_images 函數:
(6)detect.py 文件修改,在 py 文件中的 178 行,代碼修改如下:
注意,這個 im0 非常重要,如果你的圖片已經框出來了,但是標籤上不顯示字,那麼很有可能就是這個im0= 缺失,這個im0與後面plot_one_box(xyxy, im0裡的 im0 要對應
至此為了支持中文標籤的代碼就修改完了。
如果後面的模型訓練和推理測試工作可以參考博客:目標檢測 --- 教你利用 yolov5 訓練自己的目標檢測模型。
這裡特別要說明一下,就是修改 data 目錄下的 yaml 文件的時候,那個標籤也一定要對應標註的中文類別。
參考鏈接:(下文)
YoloV5 實現中文標籤目標檢測 - 知乎 (zhihu.com)
YoloV5 實現中文標籤目標檢測#
1、複製 yolov5 工程到本地#
https://github.com/ultralytics/yolov5
2、查看字體#
默認調用C:\Windows\Fonts 下的字體,找個合適的,比如我這次使用simhei.ttf 。
3、train.py文件#
改為
4、test.py 文件#
改為
5、utils/general.py 文件#
導包
6、utils/plot.py 文件#
修改plot_one_box 函數,if label之後的代碼改為
7、utils/plot.py 文件#
plot_images函數中
改為
8、detect.py 文件#
改為