边缘设备使用记录--阿加犀AIBox 6490(realsense+yolox部署)

边缘设备使用记录--阿加犀AIBox 6490:realsense+yolox部署

前言

由于6490这个板子是有type-c接口的,所以这里准备用Realsense+YOLOx来先简单做一个实时的目标检测的东西出来,这里也用到上一篇文章所提到的Aidlite SDK,通过这个SDK在板子上可以很方便的部署YOLOx模型

具体的代码我放在realtime_detection中了,目前测试下来来看,我把相机的采集频率设置为15Hz,平均每帧推理的耗费时间在20ms左右,理论上可以实现实时的需求。

在这里插入图片描述

Realsense SDK + ROS

这里的具体的安装要参考realsense-ros切记要把SDK的版本和你ROS启动程序的版本对应上,比如我这里用的是ROS1版本的节点,对应的SDK就应该是v2.50.0

  • 这里有个问题,就是我安装好之后启动节点图像是没什么问题的,但是再启动IMU的话就会一直报错。。后来我去另一个电脑下也试了一下,好像IMU模块坏了。。但是reaslsense-viewer打开视图又是能看到的,所以不清楚现在具体是什么问题,不过因为不影响图像的使用,所以这里就先没管

然后这里的ROS还是推荐用鱼香ROS,一键安装,这里还遇到了OpenCV版本冲突的原因,因为板子里自己带个4.9.0,不过我这里因为不会用到4.9.0,所以最后就直接把4.9.0覆盖掉了,后边就不会再有警告了

YOLOx部署

关于这个SDK的一些接口上篇文章写过了,所以这里主要讲一下YOLO部署实际遇到的一些问题

预处理

这里的resize就是之前说的那个思路,挑选scale比较小的一边,然后resize到规定的大小

scale_ = std::min((float)resolution_ / img.cols, (float)resolution_ / img.rows);
ROS_INFO_STREAM("scale: " << scale_);
cv::Size scale_size = cv::Size(img.cols * scale_, img.rows * scale_);
cv::resize(dst_img, dst_img, scale_size, 0, 0, cv::INTER_CUBIC);

然后这里要记得先检查下图像的RGB顺序和通道,不然最后提取是会出错的!我一开始就是这里搞错了,所以提取出来的结果一直很抽象。。

dst_img.convertTo(input_data, CV_32FC3);

后处理

后处理的部分我是参考了autoware,大体的一个思路可以参考我之前的文章autoware.universe源码略读(3.4)–perception:tensorrt_yolox,总体流程就是先提取框框,然后根据置信度排序,然后再做一下nms的步骤就好了,思路还是挺简单的

void YoloX::postProcess(
      float * prob, ObjectArray & objects, float scale, cv::Size & img_size) const
{
   
   
    ObjectArray proposals;

    std::vector<int> strides = {
   
   8, 16, 32};
    std::vector<GridAndStride> grid_strides;
    generateGridsAndStride(resolution_, resolution_, strides, grid_strides);
    generateYoloxProposals(grid_strides, prob, score_threshold_, proposals);

    qsortDescentInplace(proposals)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值