首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暗网:标签如何用于分类?

暗网:标签如何用于分类?
EN

Stack Overflow用户
提问于 2020-04-23 17:11:45
回答 1查看 207关注 0票数 0

我想在没有bbox检测的情况下使用YOLOv3进行分类,并遵循此链接how to train a classifier with darknet

然而,我似乎找不到每个图像的确切类被分配到哪里。对于每个图像都没有任何.txt文件,比如用于检测。这个类只是从文件名中提取出来的吗?

如何为多类分类中的每个图像分配类?或者,我只是简单地添加图像,然后YOLO会根据您在labels.txt中指定的类数自动学习

EN

回答 1

Stack Overflow用户

发布于 2021-03-31 15:19:23

是的,每个训练图像的类别都是从文件名中提取的。查看src/data.c中的load_labels_path()fill_truth()函数。load_labels_path()创建一个# of images by # of classes矩阵,并使用fill_truth()测试类名是否为图像文件名的子字符串,并使用1和0填充该矩阵。

代码语言:javascript
复制
matrix load_labels_paths(char **paths, int n, char **labels, int k, tree *hierarchy)
{
    matrix y = make_matrix(n, k);
    int i;
    for(i = 0; i < n && labels; ++i){
        fill_truth(paths[i], labels, k, y.vals[i]);
        if(hierarchy){
            fill_hierarchy(y.vals[i], k, hierarchy);
        }
    }
    return y;
}

...

void fill_truth(char *path, char **labels, int k, float *truth)
{
    int i;
    memset(truth, 0, k*sizeof(float));
    int count = 0;
    for(i = 0; i < k; ++i){
        if(strstr(path, labels[i])){
            truth[i] = 1;
            ++count;
            //printf("%s %s %d\n", path, labels[i], i);
        }
    }
    if(count != 1 && (k != 1 || count != 0)) printf("Too many or too few labels: %d, %s\n", count, path);
}

https://github.com/pjreddie/darknet/blob/master/src/data.c#L620 https://github.com/pjreddie/darknet/blob/master/src/data.c#L543

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61383471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档