为了输出每一类图片的张数,你可以在val.py
文件中找到init_metrics
函数,并在最后一行加上以下代码:
self.class_counts = {i: 0 for i in range(self.nc)} # 每一类图片计数初始化
然后在update_metrics
函数中,将原来的代码改为:
for label in cls.unique(): # 遍历当前批次中存在的唯一类别
self.class_counts[label.item()] += 1
self.seen += 1
注意,unique()
是标准的Python函数。
接下来,找到print_results
函数,并将打印logger的部分修改为:
LOGGER.info(pf % ('all', self.seen, self.nt_per_class.sum(), *self.metrics.mean_results()))
for i, c in enumerate(self.metrics.ap_class_index):
LOGGER.info(pf % (self.names[c], self.class_counts[c], self.nt_per_class[c], *self.metrics.class_result(i)))
这样,就可以输出每一类图片的目标数量及每一类图片的张数,以及各分类的训练指标结果。