efficientdet-tf2 icon indicating copy to clipboard operation
efficientdet-tf2 copied to clipboard

loss一直降,但是预测出来的框完全不对

Open cl886699 opened this issue 5 years ago • 4 comments

你好,我这训练自己的数据,都是小物体,都在30pixel以下,训练集上loss下降很快,第一阶段训练完,loss较低,但是预测没有任何框,第二阶段训练后,loss略有上升,预测的框全是大框,和标注完全对不上 image

cl886699 avatar Sep 28 '20 02:09 cl886699

这个loss要降到0.几,你的图片很少?

bubbliiiing avatar Sep 28 '20 08:09 bubbliiiing

这个loss要降到0.几,你的图片很少?

我有八张gpu,这个loss应该是reduce_sum的结果,图片数量确实很少,平均一张图有十来个目标,训练集一百张,验证集20张。 贴图的loss是第二阶段的loss,第一阶段的loss差不多降到了6左右,6除以8应该也就是不到1了。 我先检测了一遍输入数据,解码回原图没有问题,这是我解码部分的代码 ` from utils.utils import BBoxUtility from utils.anchors import get_anchors

priors = get_anchors(640)
bbox_util = BBoxUtility(1, priors)
tf_record_path = 'D:/datasets/bjod/'
train_datasets, val_data = ZipDataset(tf_record_path, 1, 96, bbox_util, 1, crop_size=[640, 640, 3],
                            roi_path='D:/datasets/bjod/roi_test/').prepare(True)
for parse_image, t1, t2, file_name in tqdm(train_datasets):
    parse_image = tf.squeeze(parse_image,axis = 0)
    parse_image = parse_image * 255.0
    parse_image = parse_image.numpy().astype(np.uint8)
    t1 = tf.squeeze(t1, axis=0).numpy()
    indx = []
    for i,a in enumerate(t1):
        if a[4] == 1.0:
            indx.append(i)
    decoded_bbox = bbox_util.decode_boxes(mbox_loc=t1, mbox_priorbox=priors)
    for cc in indx:
        xmin = int(decoded_bbox[cc][0] * 640)
        ymin = int(decoded_bbox[cc][1] * 640)
        xmax = int(decoded_bbox[cc][2] * 640)
        ymax = int(decoded_bbox[cc][3] * 640)
        cv2.rectangle(parse_image, (xmin, ymin), (xmax, ymax), (255, 0, 255), 1)
    cv2.imshow('h', parse_image)
    cv2.waitKey(0)

`

cl886699 avatar Sep 28 '20 09:09 cl886699

增大训练集再说,我做过归一化了兄弟

bubbliiiing avatar Sep 28 '20 09:09 bubbliiiing

增大训练集再说,我做过归一化了兄弟

我之前用fpn 跑过该数据集,验证集map在0.4左右,也用过tf自带的object detection aip中的efficientdet跑过,训练集的map能达到0.7,但是验证集只有0.1

cl886699 avatar Sep 28 '20 09:09 cl886699