def cross_entropy_error(y, t): if y.ndim == 1: t = t.reshape(1, t.size) y = y.reshape(1, y.size) # 教師データ(t)がone-hot-vectorの場合、正解ラベルのインデックスに変換される ⇒ ex) [0,0,1,0,0,0] = [2] if t.size == y.size: t = t.argmax(axis=1) batch_size = y.shape[0] return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size
def depthmap_to_ply(shot, depth, image): """Export depthmap points as a PLY string""" height, width = depth.shape K = shot.camera.get_K_in_pixel_coordinates(width, height) R = shot.pose.get_rotation_matrix() t = shot.pose.translation y, x = np.mgrid[:height, :width] v = np.vstack((x.ravel(), y.ravel(), np.ones(width * height))) camera_coords = depth.reshape((1, -1)) * np.linalg.inv(K).dot(v) points = R.T.dot(camera_coords - t.reshape(3, 1)) vertices = [] for p, c, d in zip(points.T, image.reshape(-1, 3), depth.reshape(-1, 1)): if d != 0: # ignore points with zero depth s = "{} {} {} {} {} {}".format(p[0], p[1], p[2], c[0], c[1], c[2]) vertices.append(s) return io.points_to_ply_string(vertices)