remove y_scale parameter
This commit is contained in:
parent
9c547f418b
commit
dfdddae43a
@ -88,7 +88,7 @@ If it does not find the file, it will generate images
|
|||||||
with all the predictions without ground-truth matching.
|
with all the predictions without ground-truth matching.
|
||||||
|
|
||||||
Below an example with and without ground-truth matching. They have been created (adding or removing `--path_gt`) with:
|
Below an example with and without ground-truth matching. They have been created (adding or removing `--path_gt`) with:
|
||||||
`python3 src/main.py predict --networks monoloco --glob docs/002282.png --output_types combined --scale 2 --y_scale 1.85
|
`python3 src/main.py predict --networks monoloco --glob docs/002282.png --output_types combined --scale 2
|
||||||
--model data/models/monoloco-190513-1437.pkl --n_dropout 100 --z_max 30`
|
--model data/models/monoloco-190513-1437.pkl --n_dropout 100 --z_max 30`
|
||||||
|
|
||||||
With ground truth matching (only matching people):
|
With ground truth matching (only matching people):
|
||||||
|
|||||||
@ -64,8 +64,7 @@ def cli():
|
|||||||
predict_parser.add_argument('--transform', help='transformation for the pose', default='None')
|
predict_parser.add_argument('--transform', help='transformation for the pose', default='None')
|
||||||
predict_parser.add_argument('--draw_kps', help='to draw kps in the images', action='store_true')
|
predict_parser.add_argument('--draw_kps', help='to draw kps in the images', action='store_true')
|
||||||
predict_parser.add_argument('--predict', help='whether to make prediction', action='store_true')
|
predict_parser.add_argument('--predict', help='whether to make prediction', action='store_true')
|
||||||
predict_parser.add_argument('--z_max', type=int, help='', default=22)
|
predict_parser.add_argument('--z_max', type=int, help='maximum meters distance for predictions', default=22)
|
||||||
predict_parser.add_argument('--y_scale', type=float, help='', default=1)
|
|
||||||
predict_parser.add_argument('--n_dropout', type=int, help='Epistemic uncertainty evaluation', default=0)
|
predict_parser.add_argument('--n_dropout', type=int, help='Epistemic uncertainty evaluation', default=0)
|
||||||
predict_parser.add_argument('--combined', help='to print combined images', action='store_true')
|
predict_parser.add_argument('--combined', help='to print combined images', action='store_true')
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,6 @@ class PredictMonoLoco:
|
|||||||
self.output_path = output_path
|
self.output_path = output_path
|
||||||
self.device = args.device
|
self.device = args.device
|
||||||
self.draw_kps = args.draw_kps
|
self.draw_kps = args.draw_kps
|
||||||
self.y_scale = args.y_scale # y_scale = 1.85 for kitti combined
|
|
||||||
self.z_max = args.z_max
|
self.z_max = args.z_max
|
||||||
self.output_types = args.output_types
|
self.output_types = args.output_types
|
||||||
self.show = args.show
|
self.show = args.show
|
||||||
@ -72,8 +71,7 @@ class PredictMonoLoco:
|
|||||||
except (KeyError, TypeError):
|
except (KeyError, TypeError):
|
||||||
self.dic_names = None
|
self.dic_names = None
|
||||||
# kk = [[718.3351, 0., 600.3891], [0., 718.3351, 181.5122], [0., 0., 1.]] # Kitti standard
|
# kk = [[718.3351, 0., 600.3891], [0., 718.3351, 181.5122], [0., 0., 1.]] # Kitti standard
|
||||||
#kk = [[1266.4, 0., 816.27], [0, 1266.4, 491.5], [0., 0., 1.]] # Nuscenes standard
|
kk = [[1266.4, 0., 816.27], [0, 1266.4, 491.5], [0., 0., 1.]] # Nuscenes standard
|
||||||
kk = [[1266.4, 0., 816.27], [0, 1266.4, 491.5], [0., 0., 1.]]
|
|
||||||
print("Ground-truth annotations for the image not found\n"
|
print("Ground-truth annotations for the image not found\n"
|
||||||
"Using a standard calibration matrix...\n" + '-' * 120)
|
"Using a standard calibration matrix...\n" + '-' * 120)
|
||||||
|
|
||||||
@ -151,8 +149,7 @@ class PredictMonoLoco:
|
|||||||
dic_out['uv_shoulders'].append(uv_shoulders[idx])
|
dic_out['uv_shoulders'].append(uv_shoulders[idx])
|
||||||
|
|
||||||
if any((xx in self.output_types for xx in ['front', 'bird', 'combined'])):
|
if any((xx in self.output_types for xx in ['front', 'bird', 'combined'])):
|
||||||
printer = Printer(self.image_path, self.output_path, dic_out, kk,
|
printer = Printer(self.image_path, self.output_path, dic_out, kk, output_types=self.output_types,
|
||||||
y_scale=self.y_scale, output_types=self.output_types,
|
|
||||||
show=self.show, z_max=self.z_max, epistemic=self.epistemic)
|
show=self.show, z_max=self.z_max, epistemic=self.epistemic)
|
||||||
printer.print()
|
printer.print()
|
||||||
|
|
||||||
|
|||||||
@ -17,11 +17,10 @@ class Printer:
|
|||||||
Print results on images: birds eye view and computed distance
|
Print results on images: birds eye view and computed distance
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, image_path, output_path, dic_ann, kk, output_types, y_scale=1, show=False,
|
def __init__(self, image_path, output_path, dic_ann, kk, output_types, show=False,
|
||||||
draw_kps=False, text=True, legend=True, epistemic=False, z_max=30, fig_width=10):
|
draw_kps=False, text=True, legend=True, epistemic=False, z_max=30, fig_width=10):
|
||||||
|
|
||||||
self.kk = kk
|
self.kk = kk
|
||||||
self.y_scale = y_scale # 1.85 for kitti combined
|
|
||||||
self.output_types = output_types
|
self.output_types = output_types
|
||||||
self.show = show
|
self.show = show
|
||||||
self.draw_kps = draw_kps
|
self.draw_kps = draw_kps
|
||||||
@ -57,13 +56,8 @@ class Printer:
|
|||||||
with open(image_path, 'rb') as f:
|
with open(image_path, 'rb') as f:
|
||||||
self.im = Image.open(f).convert('RGB')
|
self.im = Image.open(f).convert('RGB')
|
||||||
|
|
||||||
# Resize image for aesthetic proportions
|
|
||||||
if y_scale >= 1.02 or y_scale <= 0.98:
|
|
||||||
ww = self.im.size[0]
|
|
||||||
hh = self.im.size[1]
|
|
||||||
self.im = self.im.resize((ww, round(hh * y_scale)))
|
|
||||||
|
|
||||||
self.uv_camera = (int(self.im.size[0] / 2), self.im.size[1])
|
self.uv_camera = (int(self.im.size[0] / 2), self.im.size[1])
|
||||||
|
self.hh = self.im.size[1]
|
||||||
|
|
||||||
def print(self):
|
def print(self):
|
||||||
"""
|
"""
|
||||||
@ -79,10 +73,17 @@ class Printer:
|
|||||||
textcolor = 'darkorange'
|
textcolor = 'darkorange'
|
||||||
color_kps = 'yellow'
|
color_kps = 'yellow'
|
||||||
|
|
||||||
# Initialize combined
|
# Resize image for aesthetic proportions in combined visualization
|
||||||
if 'combined' in self.output_types:
|
if 'combined' in self.output_types:
|
||||||
|
ww = self.im.size[0]
|
||||||
|
hh = self.im.size[1]
|
||||||
|
y_scale = ww / (hh * 1.8) # Defined proportion
|
||||||
|
self.im = self.im.resize((ww, round(hh * y_scale)))
|
||||||
|
print(y_scale)
|
||||||
width = self.fig_width + 0.6 * self.fig_width
|
width = self.fig_width + 0.6 * self.fig_width
|
||||||
height = self.fig_width * self.im.size[1] / self.im.size[0]
|
height = self.fig_width * self.im.size[1] / self.im.size[0]
|
||||||
|
print(width)
|
||||||
|
print()
|
||||||
fig_ar_1 = 1.7 # 1.3 before
|
fig_ar_1 = 1.7 # 1.3 before
|
||||||
width_ratio = 1.9
|
width_ratio = 1.9
|
||||||
ext = '.combined.png'
|
ext = '.combined.png'
|
||||||
@ -98,6 +99,7 @@ class Printer:
|
|||||||
|
|
||||||
# Initialize front
|
# Initialize front
|
||||||
elif 'front' in self.output_types:
|
elif 'front' in self.output_types:
|
||||||
|
y_scale = 1
|
||||||
width = self.fig_width
|
width = self.fig_width
|
||||||
height = self.fig_width * self.im.size[1] / self.im.size[0]
|
height = self.fig_width * self.im.size[1] / self.im.size[0]
|
||||||
|
|
||||||
@ -120,15 +122,15 @@ class Printer:
|
|||||||
for idx, uv in enumerate(self.uv_shoulders):
|
for idx, uv in enumerate(self.uv_shoulders):
|
||||||
|
|
||||||
if self.draw_kps:
|
if self.draw_kps:
|
||||||
ax0 = self.show_kps(ax0, self.uv_kps[idx], self.y_scale, radius_kps, color_kps)
|
ax0 = self.show_kps(ax0, self.uv_kps[idx], y_scale, radius_kps, color_kps)
|
||||||
|
|
||||||
elif min(self.zz_pred[idx], self.zz_gt[idx]) > 0:
|
elif min(self.zz_pred[idx], self.zz_gt[idx]) > 0:
|
||||||
color = cmap((self.zz_pred[idx] % self.z_max) / self.z_max)
|
color = cmap((self.zz_pred[idx] % self.z_max) / self.z_max)
|
||||||
circle = Circle((uv[0], uv[1] * self.y_scale), radius=radius, color=color, fill=True)
|
circle = Circle((uv[0], uv[1] * y_scale), radius=radius, color=color, fill=True)
|
||||||
ax0.add_patch(circle)
|
ax0.add_patch(circle)
|
||||||
|
|
||||||
if self.text:
|
if self.text:
|
||||||
ax0.text(uv[0]+radius, uv[1] * self.y_scale - radius, str(num),
|
ax0.text(uv[0]+radius, uv[1] * y_scale - radius, str(num),
|
||||||
fontsize=fontsize, color=textcolor, weight='bold')
|
fontsize=fontsize, color=textcolor, weight='bold')
|
||||||
num += 1
|
num += 1
|
||||||
|
|
||||||
@ -160,8 +162,7 @@ class Printer:
|
|||||||
|
|
||||||
# Create bird or combine it with front)
|
# Create bird or combine it with front)
|
||||||
if any(xx in self.output_types for xx in ['bird', 'combined']):
|
if any(xx in self.output_types for xx in ['bird', 'combined']):
|
||||||
im_height = 375 # TODO change it
|
uv_max = np.array([0, self.hh, 1])
|
||||||
uv_max = np.array([0, im_height, 1])
|
|
||||||
xyz_max = self.pixel_to_camera(uv_max, self.kk, self.z_max)
|
xyz_max = self.pixel_to_camera(uv_max, self.kk, self.z_max)
|
||||||
x_max = abs(xyz_max[0]) # shortcut to avoid oval circles in case of different kk
|
x_max = abs(xyz_max[0]) # shortcut to avoid oval circles in case of different kk
|
||||||
|
|
||||||
@ -212,12 +213,7 @@ class Printer:
|
|||||||
ax1.plot([0, x_max], [0, self.z_max], 'k--')
|
ax1.plot([0, x_max], [0, self.z_max], 'k--')
|
||||||
ax1.plot([0, -x_max], [0, self.z_max], 'k--')
|
ax1.plot([0, -x_max], [0, self.z_max], 'k--')
|
||||||
ax1.set_ylim(0, self.z_max+1)
|
ax1.set_ylim(0, self.z_max+1)
|
||||||
# ax1.set_xmin([-10, 10])
|
ax1.set_xlim(-self.z_max+2, self.z_max-2)
|
||||||
# ax1.set_ymin([0, 20])
|
|
||||||
# x_max_field = min(x_max, z_max / 1.55) # ! Shortcut to avoid oval circles in case of different k
|
|
||||||
# plt.axis([-x_max_field, x_max_field, 0, z_max])
|
|
||||||
# plt.xticks([])
|
|
||||||
# plt.title('Birds eye view')
|
|
||||||
ax1.set_xlabel("X [m]")
|
ax1.set_xlabel("X [m]")
|
||||||
ax1.set_ylabel("Z [m]")
|
ax1.set_ylabel("Z [m]")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user