@@ -45,20 +45,23 @@ def __init__(
4545 feature_vector : np .ndarray | None = None ,
4646 ):
4747 super ().__init__ ()
48- self .bboxes = bboxes
49- self .labels = labels
50- self .scores = scores if scores is not None else np .zeros (len (bboxes ))
51- self .label_names = None if label_names is None else label_names
52- self .saliency_map = saliency_map
53- self .feature_vector = feature_vector
48+ self ._bboxes = bboxes
49+ self ._labels = labels
50+ self ._scores = scores if scores is not None else np .zeros (len (bboxes ))
51+ self ._label_names = ["#" ] * len (bboxes ) if label_names is None else label_names
52+ self ._saliency_map = saliency_map
53+ self ._feature_vector = feature_vector
54+
55+ def __len__ (self ) -> int :
56+ return len (self ._bboxes )
5457
5558 def __str__ (self ) -> str :
5659 return (
57- f"bboxes : { self .bboxes .shape } , "
58- f"labels: { len (self .labels )} , "
59- f"scores: { len (self .scores )} , "
60- f"{ array_shape_to_str (self .saliency_map )} , "
61- f"{ array_shape_to_str (self .feature_vector )} "
60+ f"Num of boxes : { self ._bboxes .shape } , "
61+ f"Num of labels: { len (self ._labels )} , "
62+ f"Num of scores: { len (self ._scores )} , "
63+ f"Saliency Map: { array_shape_to_str (self ._saliency_map )} , "
64+ f"Feature Vec: { array_shape_to_str (self ._feature_vector )} "
6265 )
6366
6467 def get_obj_sizes (self ) -> np .ndarray :
@@ -67,7 +70,73 @@ def get_obj_sizes(self) -> np.ndarray:
6770 Returns:
6871 np.ndarray: Object sizes in dim of (N,).
6972 """
70- return (self .bboxes [:, 2 ] - self .bboxes [:, 0 ]) * (self .bboxes [:, 3 ] - self .bboxes [:, 1 ])
73+ return (self ._bboxes [:, 2 ] - self ._bboxes [:, 0 ]) * (self ._bboxes [:, 3 ] - self ._bboxes [:, 1 ])
74+
75+ @property
76+ def bboxes (self ) -> np .ndarray :
77+ return self ._bboxes
78+
79+ @bboxes .setter
80+ def bboxes (self , value ):
81+ if not isinstance (value , np .ndarray ):
82+ msg = "Bounding boxes must be numpy array."
83+ raise ValueError (msg )
84+ self ._bboxes = value
85+
86+ @property
87+ def labels (self ) -> np .ndarray :
88+ return self ._labels
89+
90+ @labels .setter
91+ def labels (self , value ):
92+ if not isinstance (value , np .ndarray ):
93+ msg = "Labels must be numpy array."
94+ raise ValueError (msg )
95+ self ._labels = value
96+
97+ @property
98+ def scores (self ) -> np .ndarray :
99+ return self ._scores
100+
101+ @scores .setter
102+ def scores (self , value ):
103+ if not isinstance (value , np .ndarray ):
104+ msg = "Scores must be numpy array."
105+ raise ValueError (msg )
106+ self ._scores = value
107+
108+ @property
109+ def label_names (self ) -> list [str ]:
110+ return self ._label_names
111+
112+ @label_names .setter
113+ def label_names (self , value ):
114+ if not isinstance (value , list ):
115+ msg = "Label names must be list."
116+ raise ValueError (msg )
117+ self ._label_names = value
118+
119+ @property
120+ def saliency_map (self ) -> np .ndarray :
121+ return self ._saliency_map
122+
123+ @saliency_map .setter
124+ def saliency_map (self , value ):
125+ if not isinstance (value , np .ndarray ):
126+ msg = "Saliency map must be numpy array."
127+ raise ValueError (msg )
128+ self ._saliency_map = value
129+
130+ @property
131+ def feature_vector (self ) -> np .ndarray :
132+ return self ._feature_vector
133+
134+ @feature_vector .setter
135+ def feature_vector (self , value ):
136+ if not isinstance (value , np .ndarray ):
137+ msg = "Feature vector must be numpy array."
138+ raise ValueError (msg )
139+ self ._feature_vector = value
71140
72141
73142class SingleOutputParser :
0 commit comments