|
model = torchvision.models.alexnet(pretrained=False) |
|
model.classifier[6] = torch.nn.Linear(model.classifier[6].in_features, 2) |
|
Sequential( (0): Dropout(p=0.5, inplace=False) (1): Linear(in_features=9216, out_features=4096, bias=True) (2): ReLU(inplace=True) (3): Dropout(p=0.5, inplace=False) (4): Linear(in_features=4096, out_features=4096, bias=True) (5): ReLU(inplace=True) (6): Linear(in_features=4096, out_features=1000, bias=True) ) |
|
model.load_state_dict(torch.load('best_model.pth')) device = torch.device('cuda') model = model.to(device) |
|
x = cv2.cvtColor(x, cv2.COLOR_BGR2RGB) |
|
x = x.transpose((2, 0, 1)) |
|
mean = 255.0 * np.array([0.485, 0.456, 0.406]) stdev = 255.0 * np.array([0.229, 0.224, 0.225]) |
|
blocked_slider = widgets.FloatSlider(description='blocked', min=0.0, max=1.0, orientation='vertical') |
|
speed_slider = widgets.FloatSlider(description='speed', min=0.0, max=0.5, value=0.0, step=0.01, orientation='horizontal') |
|
camera_link = traitlets.dlink((camera, 'value'), (image, 'value'), transform=bgr8_to_jpeg) |
|
def update(change): x = change['new'] x = preprocess(x) y = model(x) 。。。 update({'new': camera.value}) |
|
y = F.softmax(y, dim=1) prob_blocked = float(y.flatten()[0]) blocked_slider.value = prob_blocked |
|
if prob_blocked < 0.5: robot.forward(speed_slider.value) else: robot.left(speed_slider.value) |
|
camera.observe(update, names='value') |
Jetbot 系统上只使用一个 CSI 摄像头,而没有其他任何距离传感设备(sensor),便能实现“避障”、“循路”与“遇障停止”等功能。