YOLOv3生成中文标签

前提:本文的YOLOv3为AlexeyAB的版本。
step1:生成标签
生成标签的代码借鉴了https://www.pianshen.com/article/8064424145/
先在data/labels下创建python程序,写入以下代码,其中label.names为自定义分类的汇总,如





G
H
Q
R

3
9
保存为txt,之后运行以下python程序

import os
import string
import pipes

font = 'futura-normal'
fileName=open("label.names",'r')
l=[label.lstrip().rstrip() for label in fileName.readlines()]


def make_labels(s):
    i = 0
    for word in l:
        os.system(
            "convert -fill black -background white -bordercolor white -border 4  -font /usr/share/fonts/truetype/arphic/ukai.ttc -pointsize %d label:\"%s\" \"%d_%d.png\"" % (
            s, word, i, s / 12 - 1))
        i = i + 1


for i in [12, 24, 36, 48, 60, 72, 84, 96]:
    make_labels(i)

step2:修改代码
生成了标签,之后修改代码
参见 https://blog.csdn.net/phinoo/article/details/89501569此处的修改
注意:他的标签生成程序可能有问题,我没有成功,所以我结合了两个人的博客实现了输出中文标签

step3:关键一步
最后关键一步,至少在我这里为关键一步

修改 **load_alphabet函数,修改为自己的识别类别,如何知道自己的识别类别呢,查看生成的标签,x_y.png,x为类别,y为字体大小

image **load_alphabet()
{
    int i, j;
    const int nsize = 8;
    image** alphabets = (image**)xcalloc(nsize, sizeof(image*));
    for(j = 0; j < nsize; ++j){
        alphabets[j] = (image*)xcalloc(128, sizeof(image));
        //将此处改为自己的标签类别,如67个类别,所以改为0-68
        for(i = 0; i < 67; ++i){
            char buff[256];
            sprintf(buff, "data/labels/%d_%d.png", i, j);
            alphabets[j][i] = load_image_color(buff, 0, 0);
        }
    }
    return alphabets;
}

结果如下,标签的大小修改还没有找到在哪里修改,如果有小伙伴实现了修改大小和线的粗细,可以留言告知一下,谢谢。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值