2.基于Jetson Nano的嵌入式小车避障项目

在这里插入图片描述
在这里插入图片描述
英伟达jetbot智能小车
在这里插入图片描述

一.数据采集

数据采集的时候,一定要不用的光线,不同的方向,不同的环境。
一般500-600张

二.AI训练

三.AI部署

import torch
import torchvision

3.1 加载预训练模型

'''第一步:载入模型'''
model = torchvision.models.alexnet(pretrained=False) # 构建alexnet模型
# 或取到模型的第7个线性层,然后创建一个线性层,输入特征与原来的一样的,输出特征数为2。替换掉原来的线性层
# 这个2,是让模型输出:有物体遮挡 无物体遮挡
model.classifier[6] = torch.nn.Linear(model.classifier[6].in_features,2)
# 导入已训练好的权重值
model.load_state_dict(torch.load('best_model.pth'))
# 把模型从cpu中传输到gpu中
device = torch.device('cuda')
model = model.to(device)

3.2 数据预处理

'''第二步:数据预处理。要把采集的数据格式转换为模型的输出格式:把摄像头的数据做归一化处理'''
import cv2
import numpy as np
mean = 255.0 * np.array([0.485,0.456,0.406]) # 得到数据对于某个数据在RGB上的均值,这三个数可能是imagenet的均值
stdev = 255.0 * np.array([0.229,0.224,0.225])
normalize = torchvision.transforms.Normalize(mean,stdev) # 对图片归一化
def preprocess(camera_value):
    global device,normalize
    x = camera_value
    x = cv2.cvtColor(x,cv2.COLOR_BGR2RGB) # 把相机的BGR格式 转为 模型需要的RGB格式
    x = x.transpose((2,0,1)) # 从 (高,宽,通道) 转换为 (通,高,宽)
    x = torch.from_numpy(x).float()
    x = normalize(x) # 数据归一化处理,变成0-1间的数据分布
    x = x.to(device) # 将数据从cpu转到GPU
    x = x[None] # 添加批次维度
    return x

3.3 监控界面

在这里插入图片描述

在这里插入图片描述

3.4 绕过障碍物

让摄像头一直获取最新的图片
把最新的图片输入模型,让模型判断是否图中有障碍物?
如果有障碍物的概率<0.5 : 则直行
否则:左转
from jetbot import Robot
robot = Robot()

import torch.nn.functional as F
import time
def update(change):
    global blocked_slider,robot
    x = change['new']
    x = preprocess(x) # 数据预处理
    y = model(x)
    y = F.softmax(y,dim=1) # 归一化,输出0-1范围,方便用于计算遮挡的概率

    prob_blocked = float(y.flatten()[0])
    blocked_slider.value = prob_blocked

    if prob_blocked <0.5 # 阻挡概率小于50%,则直行
        robot.forward(speed_slider.value)
    else: # 否则原地左转
        robot.left(speed_slider.value)
    time.sleep(0.001) # 多长时间刷新一次
update({'new':camera.value}) # 调用一次函数来进行初始化
camera.observe(update,names='value') # 监听相机值的变化

3.5 释放资源

在这里插入图片描述摄像头是内核管理资源,释放之后摄像头就不能用了。

资料链接

Jetson Nano 快速入门
https://zhuanlan.zhihu.com/p/62501901

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

computer_vision_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值