yolov3源码解析-输出特征的存储方式
缘由:
最近在做darknet训练的yolov3模型转化成tensorlite模型的过程中,发现转换后的结果和转换前的结果不一致。此时需要排查三个输出节点的特征图信息是否一致,所以分析了darknet源码,并做此记录。
源码:
添加中文注释的地方为特征信息的打印,可根据打印信息分析特征的一致性问题。
int get_yolo_detections(layer l, int w, int h, int netw, int neth, float thresh, int *map, int relative, detection *dets, int letter)
{
printf("\n l.batch = %d, l.w = %d, l.h = %d, l.n = %d \n", l.batch, l.w, l.h, l.n);//打印当前yolo层信息
int i,j,n;
float *predictions = l.output; //函数调用之前做了网络层类型判断,当为yolo层时进入,l.output为上层(输出节点层)输出特征信息。
// This snippet below is not necessary
// Need to comment it in order to batch proce