欢迎光临散文网 会员登陆 & 注册

yolofastest源码学习记录

2022-10-25 10:58 作者:饼干快快快跑  | 我要投稿

主要防止自己忘了,不详细了写了

顺序记录下程序的流程:

1.darknet.c

运行darknet.c,输入以下命令:

    //./darknet detector  test ./data/voc.data  ./Yolo-Fastest/VOC/yolo-fastest-xl.cfg  ./Yolo-Fastest/VOC/yolo-fastest-xl.weights  data/dog.jpg  -thresh 0.55

    //./darknet detector train voc.data yolo-fastest.cfg yolo-fastest.conv.109

darknet.c程序中根据命令不同进入不同的函数接口

if (0 == strcmp(argv[1], "average")){

        average(argc, argv);} 

else if (0 == strcmp(argv[1], "yolo")){       

//string compare(字符串比较),strcmp(str1,str2),若str1=str2,则返回零;若str1str2,则返回正数。

    } else if (0 == strcmp(argv[1], "detector")){   

//argv[1]==“detector”,所以进入的分支函数是run_detector(),并将argv参数一并传入

2.detector.c

    //在run_detector()函数内,又会根据参数argv[2]的不同选择执行不同的分支:

    //当第二个参数为test时,执行test_detector()

3.detector.c的test_detector()函数


//1.建立网络

network net = parse_network_cfg_custom

//2.对建立好的网络结构加载权重文件。./Yolo-Fastest/VOC/yolo-fastest-xl.weights

load_weights(&net, weightfile);


 //3.读取图像input为图像地址,net.c为输入层通道数,然后根据参数,选择缩放的方式:

        image im = load_image(input, 0, 0, net.c);

        image sized;

        if(letter_box) sized = letterbox_image(im, net.w, net.h);

        else sized = resize_image(im, net.w, net.h);

 //4.模型进行推理,X为输入图像数据

        network_predict(net, X);    

//5.通过网络提取出检测到的目标的位置以及类别        

//5.1 get_network_boxes函数实现的是预测框的获取,位于darknet/src下的network.c

    detection *dets = get_network_boxes();          

//5.2 完成后,通过do_nms_sort做非极大化抑制。位于box.c

    do_nms_sort(dets, nboxes, l.classes, nms);

//6.将目标的位置以及类别标注在图片中。

    draw_detections_v3(im, dets, nboxes, thresh, names, alphabet, l.classes, ext_output);            save_image(im, "predictions");

整个流程结束,里面最关键是第五步:通过网络提取出检测到的目标的位置以及类别  

get_network_boxes函数实现的是预测框的获取,位于darknet/src下的network.c

4.network.c的get_network_boxes()函数

首先通过make_network_boxes()生成检测(dets)信息,然后以fill_network_boxes()过滤boxes。

两者都位于yolo_layer.c,下面进入最关键的yolo.c文件

5.yolo.c的全部函数

这部分过于重要,需要全文学习。

参考:https://zhuanlan.zhihu.com/p/107266500

东西太多,下次发。

yolofastest源码学习记录的评论 (共 条)

分享到微博请遵守国家法律