yolov5在进行目标检测时,如何用中文标签进行训练以及如何在检测框上显示中文标签,下面一步一步分享给大家实现步骤
1.该方法是以中文标签进行训练,然后并以中文标签进行检测。确保yaml文件的标签是中文
2.在utils文件夹中的plots.py文件,在文件前面添加如下代码:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
3.继续在utils文件夹中的plots.py文件中找到class Annotator这个类函数,将其中的字体改为中文字体(绝对路径),再将pil=False改为Ture。建议将字体文件直接放在主目录下
4.在utils/metrics.py文件前面添加如下代码
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
5. 在utils/general.py文件修改def yaml_load
with open(file, errors='ignore', encoding='gbk',) as f:
6.修改train.by文件,具体如图:
7.上述步骤修改完成以后,就可以进行运行train.by文件进行训练了。此时完成了用中文标签进行训练的过程
8.当权重文件训练出来以后,用detect.by文件进行检测时会发现程序报如下错误
‘FreeTypeFont‘ object has no attribute ‘getsize‘
此时一定不要听网上的解决办法,去降低pillow的版本,这样会导致train.by文件无法执行。
一定要按照如下方法去替代getsize。
打开utils文件夹中的plots.py文件,更改前程序如图所示
更改后程序如图所示:
9.最后修改 detect.by文件,将def run 函数的权重文件和def parse_opt函数的权重文件,全部换成自己的训练出来的权重文件。
10.以上就完成了中文标签检测程序的设置,最后的检测效果如下所示: