本文主要是介绍easy-Fpn源码解读(三):bbox,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- easy-Fpn源码解读(二):bbox
- bbox代码解析
easy-Fpn源码解读(二):bbox
bbox代码解析
import torch
from torch import Tensorclass BBox(object):# 初始化方法:四个坐标点def __init__(self, left: float, top: float, right: float, bottom: float):super().__init__()self.left = leftself.top = topself.right = rightself.bottom = bottom# 输出实例化对象的坐标信息def __repr__(self) -> str:return 'BBox[l={:.1f}, t={:.1f}, r={:.1f}, b={:.1f}]'.format(self.left, self.top, self.right, self.bottom)# 将bbox转换成列表def tolist(self):return [self.left, self.top, self.right, self.bottom]@staticmethod# 类调用,静态方法:把(x0,y0,x1,y1)转换成(x,y,w,h)def to_center_base(bboxes: Tensor):return torch.stack([(bboxes[:, 0] + bboxes[:, 2]) / 2,(bboxes[:, 1] + bboxes[:, 3]) / 2,bboxes[:, 2] - bboxes[:, 0],bboxes[:, 3] - bboxes[:, 1]], dim=1)@staticmethod# 把(x,y,w,h)转换成(x0,y0,x1,y1)def from_center_base(center_based_bboxes: Tensor) -> Tensor:return torch.stack([center_based_bboxes[:, 0] - center_based_bboxes[:, 2] / 2,center_based_bboxes[:, 1] - center_based_bboxes[:, 3] / 2,center_based_bboxes[:, 0]
这篇关于easy-Fpn源码解读(三):bbox的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!