using DOTA dataset, default cfgs.py of DOTA
原本代码对于输入grountruth box的格式是4个角点坐标 (x0, y0, x1, y1, x2, y2, x3, y3)
我想改成bbox中心点和size的格式,即(xcenter, ycenter, width, height, angle),也就是论文里Fig 9.(b)描述的格式,使得angle的角度范围位于(-180, 0), box的长宽保持固定。
看了下代码感觉网络训练的时候用的是(xc, yc, w, h, angle)的格式,以为只需要改动 gtboxes 输入输出的坐标转换部分就行,于是改了代码里用到box_utils.coordinate_convert.forward convert()和box_utils.coordinate_convert.backward convert()的地方,以及angle_range=180的地方
改完之后跑训练代码,一直都是跑到100+步左右就出现除零warning,之后的reg loss就都是Nan。
参照了issue里面有一个方法提到加epsilon=1e-5,也还是没有解决问题。而且在tensorboard里面看refine_stage都没有positive anchor。不知道是什么情况会导致ex_roi(也就是anchor)的长宽出现0?
数据没有问题,直接用没有改的代码跑是正常的。
报错信息:
refinebox_target_layer_without_boxweight.py:40: RuntimeWarning: invalid value encountered in greater_equal
positive_indices = max_overlaps >= pos_threshold
refinebox_target_layer_without_boxweight.py:40: RuntimeWarning: invalid value encountered in greater
ignore_indices = (max_overlaps > neg_threshold) & ~positive_indices
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dy = (gt_rois[:, 1] - ex_rois[:, 1]) / ex_rois[:, 3]
bbox_transform.py:98 RuntimeWarning: overflow encountered in true_divide
targets_dy = (gt_rois[:, 1] - ex_rois[:, 1]) / ex_rois[:, 3]
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dw = np.log(gt_rois[:, 2] / (ex_rois[:, 2] + epsilon) )
bbox_transform.py:98 RuntimeWarning: invalid value encountered in true_divide
targets_dx = (gt_rois[:, 0] - ex_rois[:, 0]) / ex_rois[:, 2]
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dh = np.log(gt_rois[:, 3] / (ex_rois[:, 3] + epsilon) )
using DOTA dataset, default cfgs.py of DOTA
原本代码对于输入grountruth box的格式是4个角点坐标 (x0, y0, x1, y1, x2, y2, x3, y3)
我想改成bbox中心点和size的格式,即(xcenter, ycenter, width, height, angle),也就是论文里Fig 9.(b)描述的格式,使得angle的角度范围位于(-180, 0), box的长宽保持固定。
看了下代码感觉网络训练的时候用的是(xc, yc, w, h, angle)的格式,以为只需要改动 gtboxes 输入输出的坐标转换部分就行,于是改了代码里用到
box_utils.coordinate_convert.forward convert()和box_utils.coordinate_convert.backward convert()的地方,以及angle_range=180的地方改完之后跑训练代码,一直都是跑到100+步左右就出现除零warning,之后的reg loss就都是Nan。
参照了issue里面有一个方法提到加epsilon=1e-5,也还是没有解决问题。而且在tensorboard里面看refine_stage都没有positive anchor。不知道是什么情况会导致ex_roi(也就是anchor)的长宽出现0?
数据没有问题,直接用没有改的代码跑是正常的。
报错信息:
refinebox_target_layer_without_boxweight.py:40: RuntimeWarning: invalid value encountered in greater_equal
positive_indices = max_overlaps >= pos_threshold
refinebox_target_layer_without_boxweight.py:40: RuntimeWarning: invalid value encountered in greater
ignore_indices = (max_overlaps > neg_threshold) & ~positive_indices
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dy = (gt_rois[:, 1] - ex_rois[:, 1]) / ex_rois[:, 3]
bbox_transform.py:98 RuntimeWarning: overflow encountered in true_divide
targets_dy = (gt_rois[:, 1] - ex_rois[:, 1]) / ex_rois[:, 3]
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dw = np.log(gt_rois[:, 2] / (ex_rois[:, 2] + epsilon) )
bbox_transform.py:98 RuntimeWarning: invalid value encountered in true_divide
targets_dx = (gt_rois[:, 0] - ex_rois[:, 0]) / ex_rois[:, 2]
bbox_transform.py:98 RuntimeWarning: divide by zero encountered in true_divide
targets_dh = np.log(gt_rois[:, 3] / (ex_rois[:, 3] + epsilon) )