YoloV8中修改标签为中文

需求

训练数据中带的标签是英文,想在模型推理的时候,绘制出来的标签改成中文。

我实验了一种投机取巧的方法,改动代码不是很多。来看下步骤:

步骤

1 在Results类中增加一个接口

主要是用来设置英文标签对应的中文标签数组。改动文件results.py

2 修改plot函数

修改绘制函数plot,也在results.py中,绘制文本的时候,类别名称改成步骤1中设置的中文数组。

3 调用

在进行推理时,每次推理得到results后,都设置一遍中文标签数组(按理说是在加载模型的时候,去设置好中文标签数组的,只需要设置一次,这里我没找到更好的方式,所以暂时这么写了,如果你有更好的方式,欢迎留言讨论!)。

results = model.predict(....)

for i, result in enumerate(results):
    result.set_ch_names(ch_names_array) # 你的中文标签数组
    result.plot(pil=True,font="SimHei.ttf") # pil需要设置为True,font给一个中文字体,需要已经下载好到本地

注意的是,pil要设置成True,否则plot时会报错,AttributeError: 'Annotator' object has no attribute 'draw'。跟代码发现,box_label函数中,如果不是ASCII码,会使用self.draw进行绘制,而self.draw是在初始化时创建的,详细请看截图的源码。如果这里pil不传入True,还可以直接改源码,在Annotator初始化时,传入的example为中文字符应该也是可以的。

4 效果

改成中文后,性能变差,视频识别用未改动的原有的plot函数,显示英文标签很流畅,但是改成中文后会变卡顿。

如果您有更好的方法,欢迎随时交流!

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值