(self, imgs)
return bboxes, labels, scores
Detect objects from images.

        This method predicts objects for each image.

        Args:
            imgs (iterable of numpy.ndarray): Arrays holding images.
                All images are in CHW and RGB format
                and the range of their value is :math:`[0, 255]`.

        Returns:
           tuple of lists:
           This method returns a tuple of three lists,
           :obj:`(bboxes, labels, scores)`.

           * **bboxes**: A list of float arrays of shape :math:`(R, 4)`, \
               where :math:`R` is the number of bounding boxes in a image. \
               Each bouding box is organized by \
               :math:`(y_{min}, x_{min}, y_{max}, x_{max})` \
               in the second axis.
           * **labels** : A list of integer arrays of shape :math:`(R,)`. \
               Each value indicates the class of the bounding box. \
               Values are in range :math:`[0, L - 1]`, where :math:`L` is the \
               number of the foreground classes.
           * **scores** : A list of float arrays of shape :math:`(R,)`. \
               Each value indicates how confident the prediction is.
Detect objects from images.
Detect objects from images .
def predict(self, imgs):
        """Detect objects from images.

        This method predicts objects for each image.

        Args:
            imgs (iterable of numpy.ndarray): Arrays holding images.
                All images are in CHW and RGB format
                and the range of their value is :math:`[0, 255]`.

        Returns:
           tuple of lists:
           This method returns a tuple of three lists,
           :obj:`(bboxes, labels, scores)`.

           * **bboxes**: A list of float arrays of shape :math:`(R, 4)`, \
               where :math:`R` is the number of bounding boxes in a image. \
               Each bouding box is organized by \
               :math:`(y_{min}, x_{min}, y_{max}, x_{max})` \
               in the second axis.
           * **labels** : A list of integer arrays of shape :math:`(R,)`. \
               Each value indicates the class of the bounding box. \
               Values are in range :math:`[0, L - 1]`, where :math:`L` is the \
               number of the foreground classes.
           * **scores** : A list of float arrays of shape :math:`(R,)`. \
               Each value indicates how confident the prediction is.

        """
        prepared_imgs = []
        sizes = []
        for img in imgs:
            size = img.shape[1:]
            img = self.prepare(img.astype(np.float32))
            prepared_imgs.append(img)
            sizes.append(size)

        bboxes = []
        labels = []
        scores = []
        for img, size in zip(prepared_imgs, sizes):
            with chainer.using_config('train', False), \
                    chainer.function.no_backprop_mode():
                img_var = chainer.Variable(self.xp.asarray(img[None]))
                scale = img_var.shape[3] / size[1]
                roi_cls_locs, roi_scores, rois, _ = self.__call__(
                    img_var, [scale])
            # We are assuming that batch size is 1.
            roi_cls_loc = roi_cls_locs.array
            roi_score = roi_scores.array
            roi = rois / scale

            # Convert predictions to bounding boxes in image coordinates.
            # Bounding boxes are scaled to the scale of the input images.
            mean = self.xp.tile(self.xp.asarray(self.loc_normalize_mean),
                                self.n_class)
            std = self.xp.tile(self.xp.asarray(self.loc_normalize_std),
                               self.n_class)
            roi_cls_loc = (roi_cls_loc * std + mean).astype(np.float32)
            roi_cls_loc = roi_cls_loc.reshape((-1, self.n_class, 4))
            roi = self.xp.broadcast_to(roi[:, None], roi_cls_loc.shape)
            cls_bbox = loc2bbox(roi.reshape((-1, 4)),
                                roi_cls_loc.reshape((-1, 4)))
            cls_bbox = cls_bbox.reshape((-1, self.n_class * 4))
            # clip bounding box
            cls_bbox[:, 0::2] = self.xp.clip(cls_bbox[:, 0::2], 0, size[0])
            cls_bbox[:, 1::2] = self.xp.clip(cls_bbox[:, 1::2], 0, size[1])

            prob = F.softmax(roi_score).array

            raw_cls_bbox = cuda.to_cpu(cls_bbox)
            raw_prob = cuda.to_cpu(prob)

            bbox, label, prob = self._suppress(raw_cls_bbox, raw_prob)
            indices = np.argsort(prob)[::-1]
            bbox = bbox[indices]
            label = label[indices]
            prob = prob[indices]

            bboxes.append(bbox)
            labels.append(label)
            scores.append(prob)

        return bboxes, labels, scores
def predict ( self , imgs ) : prepared_imgs = [ ] sizes = [ ] for img in imgs : size = img . shape [ 1 : ] img = self . prepare ( img . astype ( np . float32 ) ) prepared_imgs . append ( img ) sizes . append ( size ) bboxes = [ ] labels = [ ] scores = [ ] for img , size in zip ( prepared_imgs , sizes ) : with chainer . using_config ( 'train' , False ) , chainer . function . no_backprop_mode ( ) : img_var = chainer . Variable ( self . xp . asarray ( img [ None ] ) ) scale = img_var . shape [ 3 ] / size [ 1 ] roi_cls_locs , roi_scores , rois , _ = self . __call__ ( img_var , [ scale ] ) # We are assuming that batch size is 1. roi_cls_loc = roi_cls_locs . array roi_score = roi_scores . array roi = rois / scale # Convert predictions to bounding boxes in image coordinates. # Bounding boxes are scaled to the scale of the input images. mean = self . xp . tile ( self . xp . asarray ( self . loc_normalize_mean ) , self . n_class ) std = self . xp . tile ( self . xp . asarray ( self . loc_normalize_std ) , self . n_class ) roi_cls_loc = ( roi_cls_loc * std + mean ) . astype ( np . float32 ) roi_cls_loc = roi_cls_loc . reshape ( ( - 1 , self . n_class , 4 ) ) roi = self . xp . broadcast_to ( roi [ : , None ] , roi_cls_loc . shape ) cls_bbox = loc2bbox ( roi . reshape ( ( - 1 , 4 ) ) , roi_cls_loc . reshape ( ( - 1 , 4 ) ) ) cls_bbox = cls_bbox . reshape ( ( - 1 , self . n_class * 4 ) ) # clip bounding box cls_bbox [ : , 0 : : 2 ] = self . xp . clip ( cls_bbox [ : , 0 : : 2 ] , 0 , size [ 0 ] ) cls_bbox [ : , 1 : : 2 ] = self . xp . clip ( cls_bbox [ : , 1 : : 2 ] , 0 , size [ 1 ] ) prob = F . softmax ( roi_score ) . array raw_cls_bbox = cuda . to_cpu ( cls_bbox ) raw_prob = cuda . to_cpu ( prob ) bbox , label , prob = self . _suppress ( raw_cls_bbox , raw_prob ) indices = np . argsort ( prob ) [ : : - 1 ] bbox = bbox [ indices ] label = label [ indices ] prob = prob [ indices ] bboxes . append ( bbox ) labels . append ( label ) scores . append ( prob ) return bboxes , labels , scores