def cifar_generator(): """ X_data : (data_size, 32, 32, 3) y_label : (data_size, 100) batch_size : batch size """ (X_train, y_train), (X_test, y_test) = c100.load_data() # Load Data y_train, y_test = prepare_output_data(y_train, y_test) # prepare y_label data_size = len(X_train) batch_iter_per_epoch = int(data_size / batch_size) while True: shuffle_idx = perm(np.arange(len(X_train))) print('\n') print("*" * 30) print("Data Size : {}".format(data_size)) print("Batch Size : {}".format(batch_size)) print("Batch iterations per Epoch : {}".format(batch_iter_per_epoch)) print("*" * 30) print(shuffle_idx[0:10]) for b in range(batch_iter_per_epoch): batch_features = np.zeros((batch_size, inp_w, inp_h, inp_c)) batch_labels = np.zeros((batch_size, 100)) for b_i, i in enumerate( range(b * batch_size, b * batch_size + batch_size)): # choose random index in features batch_features[b_i] = preprocess(X_train[shuffle_idx[i]], color_type='RGB') batch_labels[b_i] = y_train[shuffle_idx[i]] yield batch_features, batch_labels print("Done Generator")
def _batch(chunk, is_test=False): """ Takes a chunk of parsed annotations returns value for placeholders of net's input & loss layer correspond to this chunk chunk : ['006098.jpg', [375, 500, [['boat', 92, 74, 292, 178], ['bird', 239, 88, 276, 133], ['bird', 93, 100, 142, 140]]]] """ S, B = cfg.cell_size, cfg.boxes_per_cell C, labels = cfg.num_classes, cfg.classes_name # preprocess jpg = chunk[0] w, h, allobj_ = chunk[1] allobj = deepcopy(allobj_) if not is_test: path = os.path.join(cfg.imageset_location, jpg) else: path = os.path.join(cfg.test_imageset_location, jpg) img = preprocess(path, allobj) # Calculate regression target cellx = 1. * w / S celly = 1. * h / S for obj in allobj: centerx = .5 * (obj[1] + obj[3]) #xmin, xmax centery = .5 * (obj[2] + obj[4]) #ymin, ymax cx = centerx / cellx cy = centery / celly if cx >= S or cy >= S: return None, None obj[3] = float(obj[3] - obj[1]) / w obj[4] = float(obj[4] - obj[2]) / h obj[3] = np.sqrt(obj[3]) obj[4] = np.sqrt(obj[4]) obj[1] = cx - np.floor(cx) # centerx obj[2] = cy - np.floor(cy) # centery obj += [int(np.floor(cy) * S + np.floor(cx))] # show(im, allobj, S, w, h, cellx, celly) # unit test # Calculate placeholders' values probs = np.zeros([S * S, C]) confs = np.zeros([S * S, B]) coord = np.zeros([S * S, B, 4]) proid = np.zeros([S * S, C]) prear = np.zeros([S * S, 4]) for obj in allobj: # print(type(obj), obj) # <class 'list'> ['horse', 0.024000000000000021, 0.48952095808383245, 0.92303846073714613, 0.85995404416970578, 24] probs[obj[5], :] = [0.] * C probs[obj[5], labels.index(obj[0])] = 1. proid[obj[5], :] = [1] * C coord[obj[5], :, :] = [obj[1:5]] * B prear[obj[5], 0] = obj[1] - obj[3]**2 * .5 * S # xleft prear[obj[5], 1] = obj[2] - obj[4]**2 * .5 * S # yup prear[obj[5], 2] = obj[1] + obj[3]**2 * .5 * S # xright prear[obj[5], 3] = obj[2] + obj[4]**2 * .5 * S # ybot confs[obj[5], :] = [1.] * B # Finalise the placeholders' values upleft = np.expand_dims(prear[:, 0:2], 1) botright = np.expand_dims(prear[:, 2:4], 1) wh = botright - upleft area = wh[:, :, 0] * wh[:, :, 1] upleft = np.concatenate([upleft] * B, 1) botright = np.concatenate([botright] * B, 1) areas = np.concatenate([area] * B, 1) # value for placeholder at input layer inp_feed_val = img # value for placeholder at loss layer loss_feed_val = { 'probs': probs, 'confs': confs, 'coord': coord, 'proid': proid, 'areas': areas, 'upleft': upleft, 'botright': botright } return inp_feed_val, loss_feed_val
frameNum = -1 items = [] cap = cv2.VideoCapture(video_path) try: while True: ret, frame = cap.read() frameNum += 1 if frameNum > maxFrame or not ret: break if frameNum % frameSteps != 0: continue print("FrameNum : {}".format(frameNum)) img = preprocess(frame) batch = np.expand_dims(img, axis=0) net_out = model.predict(batch) out_img, objects, is_object = post_progress(net_out[0], im=frame, is_save=False, threshold=test_threshold) if is_object: for each_object in objects: items.append( DB_Item(videoId, frameNum, each_object[0], each_object[1], each_object[2], each_object[3], each_object[4], each_object[5])) if len(items) >= 10:
# # In[7]: # imagePath = './test/my_testset/001618.jpg' # imagePath = './test/my_testset/000892.jpg' # imagePath = './test/my_testset/000906.jpg' # imagePath = './test/my_testset/000467.jpg' # imagePath = './test/my_testset/000386.jpg' # imagePath = './test/my_testset/many_person.jpg' imagePath = './test/my_testset/person.jpg' # imagePath = './test/my_testset/person_car3.jpg' # imagePath = './test/my_testset/person.jpg' # imagePath = './test/my_testset/car1.jpg' image = cv2.imread(imagePath) print("1", image.shape) image = preprocess(image) batch = np.expand_dims(image, axis=0) print("4", batch.shape) # # In[8]: # out = model.predict(batch) # print("5", out.shape) # # In[9]: # out_img = post_progress(out[0], im=image, is_save=False, threshold=0.1) # print("6", out_img.shape) # out_img = cv2.cvtColor(out_img, cv2.COLOR_BGR2RGB) # plt.imshow(out_img)