コード例 #1
0
ファイル: rpn_eval.py プロジェクト: SoulDuck/faster_rcnn_tf
    def load_model(self):
        self.sess = tf.Session()
        self.saver = tf.train.import_meta_graph(
            meta_graph_or_file=self.model_path + '.meta',
        )  # example model path ./models/fundus_300/5/model_1.ckpt
        self.saver.restore(
            self.sess, save_path=self.model_path
        )  # example model path ./models/fundus_300/5/model_1.ckpt
        self.top_conv = tf.get_default_graph().get_tensor_by_name('top_conv:0')
        self.cls_conv = tf.get_default_graph().get_tensor_by_name(
            'cls/cls_output:0')
        self.bbox_conv = tf.get_default_graph().get_tensor_by_name(
            'bbox/cls_output:0')

        self.rpn_labels_op = tf.get_default_graph().get_tensor_by_name(
            'rpn_labels:0')
        self.rpn_bbox_targets_op = tf.get_default_graph().get_tensor_by_name(
            'rpn_bbox_targets:0')
        self.rpn_bbox_inside_weights_op = tf.get_default_graph(
        ).get_tensor_by_name('rpn_bbox_inside_weights:0')
        self.rpn_bbox_outside_weights_op = tf.get_default_graph(
        ).get_tensor_by_name('rpn_bbox_outside_weights:0')

        self.indice_op = tf.get_default_graph().get_tensor_by_name('indice:0')
        self.bbox_targets_op = tf.get_default_graph().get_tensor_by_name(
            'bbox_targets:0')
        self.bbox_inside_weights_op = tf.get_default_graph(
        ).get_tensor_by_name('bbox_inside_weights:0')
        self.bbox_outside_weights_op = tf.get_default_graph(
        ).get_tensor_by_name('bbox_outside_weights:0')

        self.x_ = tf.get_default_graph().get_tensor_by_name('x_:0')
        self.im_dims = tf.get_default_graph().get_tensor_by_name('im_dims:0')
        self.gt_boxes = tf.get_default_graph().get_tensor_by_name('gt_boxes:0')
        self.phase_train = tf.get_default_graph().get_tensor_by_name(
            'phase_train:0')
        self.roi_blobs_op, self.roi_scores_op, self.roi_blobs_ori_op, self.roi_scores_ori_op, self.roi_softmax_op = \
            roi.roi_proposal(self.cls_conv, self.bbox_conv, self.im_dims, self.feat_stride, self.anchor_scales,
                             is_training=True)
コード例 #2
0
# D_op : indiced rpn target  op
# E_op : rpn_inside_weights
# F_op : rpn_outside_weights
rpn_bbox_loss_op , diff_op , C_op , D_op ,E_op ,F_op= \
    bbox_loss(rpn_bbox_pred ,bbox_targets_op , bbox_inside_weights_op , bbox_outside_weights_op , rpn_labels_op)
anchor_scales = [3, 4, 5]

# BBOX OP
# INV inv_blobs_op OP = return to the original Coordinate
# INV target_inv_blobs_op OP = return to the original Coordinate (indices )
inv_blobs_op  , target_inv_blobs_op = inv_transform_layer(rpn_bbox_pred ,  cfg_key = phase_train , \
                                        _feat_stride = _feat_stride , anchor_scales =anchor_scales , indices = indice_op)

blobs_op, scores_op = roi.roi_proposal(rpn_cls,
                                       rpn_bbox_pred,
                                       im_dims,
                                       _feat_stride,
                                       anchor_scales,
                                       is_training=True)
cost_op = rpn_cls_loss_op + rpn_bbox_loss_op
train_cls_op = optimizer(rpn_cls_loss_op, lr=0.01)
train_bbox_op = optimizer(rpn_bbox_loss_op, lr=0.001)
train_op = optimizer(cost_op, lr=0.001)
sess = sess_start()

max_iter = 55000 * 100
for i in range(2, max_iter):
    src_img, src_gt_boxes = next_img_gtboxes(i)
    h, w = np.shape(src_img)
    src_im_dims = [(h, w)]

    rpn_cls_score = np.zeros(
コード例 #3
0
rpn_bbox_loss_op , diff_op , C_op , D_op ,E_op ,F_op= \
    bbox_loss(rpn_bbox_pred ,bbox_targets_op , bbox_inside_weights_op , bbox_outside_weights_op , rpn_labels_op)
rpn_bbox_loss_op = tf.identity(rpn_bbox_loss_op, name='rpn_bbox_loss_op')

anchor_scales = [24, 36, 50]

# BBOX OP
# INV inv_blobs_op OP = return to the original Coordinate
# INV target_inv_blobs_op OP = return to the original Coordinate (indices )
#inv_blobs_op  , target_inv_blobs_op = inv_transform_layer(rpn_bbox_pred ,  cfg_key = phase_train , \
#                                        _feat_stride = _feat_stride , anchor_scales =anchor_scales , indices = indice_op)
#inv_blobs_op=tf.identity(inv_blobs_op,name='inv_blobs_op')
# Region of Interested
roi_blobs_op, roi_scores_op , roi_blobs_ori_op ,roi_scores_ori_op  , roi_softmax_op = \
    roi.roi_proposal(rpn_cls , rpn_bbox_pred , im_dims , feat_stride_ , anchor_scales_ ,is_training=phase_train)
# NMS 후 >0.5 인것 fast rcnn 으로 넘기기
# Fast rcnn 을 학습시킬 roi을 추출합니다
ptl_rois_op, ptl_labels_op, ptl_bbox_targets_op, ptl_bbox_inside_weights_op, ptl_bbox_outside_weights_op = \
    proposal_target_layer(roi_blobs_op , gt_boxes , _num_classes= n_classes ) # ptl = Proposal Target Layer
# Fast RCNN LOGITS
# foreground 만 보내면 된다.
rois_op = tf.cond(phase_train, lambda: ptl_rois_op, lambda: roi_blobs_op)
fast_rcnn_cls_logits , fast_rcnn_bbox_logits = \
    fast_rcnn(top_conv , ptl_rois_op ,roi_blobs_op ,im_dims  , num_classes=n_classes , phase_train = phase_train)
fast_rcnn_cls_logits = tf.identity(fast_rcnn_cls_logits, 'fr_cls_logits_op')
fast_rcnn_bbox_logits = tf.identity(fast_rcnn_bbox_logits,
                                    'fr_bboxes_logits_op')
# 만약 training 이면 ptl rois op 을 , eval 이면 roi_blobs_op 을 선택한다
# fast_rcnn_cls_logits 은 행이 4 * n_classes 만큼 나온다 . 그래서 cls 에 해당하는 좌표만 가져온다
# itr ==> interest
コード例 #4
0
                             shape=[1, conv_h, conv_w, conv_out],
                             name='top_conv_op')
roi_cls_op = tf.placeholder(dtype=tf.float32,
                            shape=[1, conv_h, conv_w, n_anchor * 2],
                            name='rpn_cls_op')
roi_bbox_op = tf.placeholder(dtype=tf.float32,
                             shape=[1, conv_h, conv_w, n_anchor * 4],
                             name='rpn_bbox_op')
#
im_dims = tf.placeholder(tf.int32, [None, 2], name='im_dims')
gt_boxes = tf.placeholder(tf.int32, [None, 5], name='gt_boxes')
phase_train = tf.placeholder(tf.bool, name='phase_train')

# Region of Interested
roi_blobs_op, roi_scores_op , roi_blobs_ori_op ,roi_scores_ori_op  , roi_softmax_op = \
    roi.roi_proposal(roi_cls_op , roi_bbox_op  , im_dims , _feat_stride , anchor_scales ,is_training=True)
# Proposoal Target Layer
ptl_rois_op, ptl_labels_op, ptl_bbox_targets_op, ptl_bbox_inside_weights_op, ptl_bbox_outside_weights_op = \
    proposal_target_layer(roi_blobs_op , gt_boxes , _num_classes= n_classes ) # ptl = Proposal Target Layer
# Fast RCNN Model
fast_rcnn_cls_logits , fast_rcnn_bbox_logits = \
    fast_rcnn(top_conv_op , ptl_rois_op , im_dims , eval_mode=False , num_classes=n_classes , phase_train = phase_train)

fr_cls_loss_op = fast_rcnn_cls_loss(fast_rcnn_cls_logits, ptl_labels_op)
fr_bbox_loss_op = fast_rcnn_bbox_loss(fast_rcnn_bbox_logits,
                                      ptl_bbox_targets_op,
                                      ptl_bbox_inside_weights_op,
                                      ptl_bbox_outside_weights_op)
fr_cost_op = fr_cls_loss_op + fr_bbox_loss_op

lr = 0.0001