前提:本文的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; }结果如下,标签的大小修改还没有找到在哪里修改,如果有小伙伴实现了修改大小和线的粗细,可以留言告知一下,谢谢。