Esempio n. 1
0
def generate_data_trip(img_data, C, backend,draw_flag = False):
	X, Y, img_data= data_generators.get_anchor_gt_trip(img_data, C, backend)

	P_rpn = model_rpn.predict_on_batch(X)

	R = roi_helpers.rpn_to_roi(P_rpn[0], P_rpn[1], C, K.image_dim_ordering(), use_regr=True, overlap_thresh=0.7,
							   max_boxes=300)

	# note: calc_iou converts from (x1,y1,x2,y2) to (x,y,w,h) format
	X2, Y1, Y2, Y_view = roi_helpers.calc_iou_new(R, img_data, C, class_mapping)

	pos_samples = np.where(Y_view[0, :, -1] != 20)

	if C.num_rois > 1:
		if len(pos_samples) < C.num_rois:
			selected_pos_samples = pos_samples[0].tolist()
		else:
			selected_pos_samples = np.random.choice(pos_samples[0], C.num_rois, replace=False).tolist()
	R,Y_view = roi_helpers.prep_flip(X2[:,selected_pos_samples,:],Y_view[:,selected_pos_samples,:],C)

	if draw_flag:
		Im = cv2.imread(img_data['filepath'])
		key = img_data['bboxes'][0]['class']
		azimuth = img_data['bboxes'][0]['azimuth']
		bbox = np.array([[img_data['bboxes'][0]['x1'],img_data['bboxes'][0]['y1'],img_data['bboxes'][0]['x2'],img_data['bboxes'][0]['y2']]])
		img = img_helpers.draw_bbox(Im, bbox, 0, [azimuth], 1, class_mapping_inv, key)
		img_helpers.display_image(img,0)
	return X,R,Y_view
Esempio n. 2
0
				global im_id
				im_id+=1
				return im_id

			siam_flip = True

			if  siam_flip and iter_num % C.siam_iter_frequancy == 0 :

				idx_orig = pos_samples.tolist()
				# idx_flip = pos_samples_flip.tolist()
				xSize = P_rpn[0].shape[1]
				R_tmp = X2[:,idx_orig,:]
				Y_tmp = Y_view[:,idx_orig,:]
				## make sure that none of the ROI is neg
				idx_pos = xSize - R_tmp[0,:,2] + R_tmp[0,:,0] > 0
				R_orig,Y_orig = roi_helpers.prep_flip(R_tmp[:,idx_pos,:],Y_tmp[:,idx_pos,:],C)
				R_flip = copy.deepcopy(R_orig)
				R_flip[0,:,0] += xSize - R_flip[0,:,2]

				if np.unique(Y_orig[0,:,-1]).shape[0] > 1 or sum(idx_pos) < 5:
					continue
				model_classifier.save_weights(weight_path_tmp)
				model_view_only.load_weights(weight_path_tmp, by_name=True)

				loss_before = model_flip.predict([X, R_orig,X_flip,R_flip,Y_orig])
				# model_flip.predict([X, R_orig,X,R_orig])
				_, _, out_az = model_classifier.predict([X, R_orig])
				_, _, out_az_flip = model_classifier.predict([X_flip, R_flip])
				gt_label = np.argmax(Y1[:, idx_orig, :], axis=2)
				az=[]
				az_flip=[]