Get box regression transformation deltas. Args: rbboxes (torch.Tensor): Source boxes, e.g., object proposals. Returns: torch.Tensor: Box transformation deltas
(self, rbboxes)
| 114 | super(GVRatioCoder, self).__init__(**kwargs) |
| 115 | |
| 116 | def encode(self, rbboxes): |
| 117 | """Get box regression transformation deltas. |
| 118 | |
| 119 | Args: |
| 120 | rbboxes (torch.Tensor): Source boxes, e.g., object proposals. |
| 121 | |
| 122 | Returns: |
| 123 | torch.Tensor: Box transformation deltas |
| 124 | """ |
| 125 | assert rbboxes.size(1) == 5 |
| 126 | |
| 127 | polys = obb2poly(rbboxes, self.version) |
| 128 | max_x, _ = polys[:, ::2].max(1) |
| 129 | min_x, _ = polys[:, ::2].min(1) |
| 130 | max_y, _ = polys[:, 1::2].max(1) |
| 131 | min_y, _ = polys[:, 1::2].min(1) |
| 132 | hbboxes = torch.stack([min_x, min_y, max_x, max_y], dim=1) |
| 133 | |
| 134 | h_areas = (hbboxes[:, 2] - hbboxes[:, 0]) * \ |
| 135 | (hbboxes[:, 3] - hbboxes[:, 1]) |
| 136 | |
| 137 | polys = polys.view(polys.size(0), 4, 2) |
| 138 | areas = polys.new_zeros(polys.size(0)) |
| 139 | for i in range(4): |
| 140 | areas += 0.5 * ( |
| 141 | polys[:, i, 0] * polys[:, (i + 1) % 4, 1] - |
| 142 | polys[:, (i + 1) % 4, 0] * polys[:, i, 1]) |
| 143 | areas = torch.abs(areas) |
| 144 | |
| 145 | ratios = areas / h_areas |
| 146 | return ratios[:, None] |
| 147 | |
| 148 | def decode(self, bboxes, bboxes_pred): |
| 149 | """Apply transformation `fix_deltas` to `boxes`. |
nothing calls this directly
no test coverage detected