RTSP串流加上人形/人脸检测
-
本篇介绍的过程并不复杂,原理上比上篇博客介绍的要简单一些,有趣的地方在于将之前的编码落盘和预览转换为了两路RTSP子码流输出,这样码流可以传的更远一些。
V833/V831目标检测demo方案开发_papaofdoudou的博客-CSDN博客_v833
整个应用方案原理如下:
闲言少叙,下面开始技术流水账:
第一步,打开Tina EMAC以太网络支持
由于uart2和emac phy是share pin的,所以需要事先将默认配置为uart功能的PIN角修改为emac功能,方法是cconfigs到目录,修改board.dts:之后,重新编译,打包,烧录,系统启动后,执行ifconfig -a命令,查看是否存在eth0设备,正常情况下,eth0网卡应该如下图所示,会出现的,此时你会看到以太网和本地回环两个网络接口设备。
平台和开发PC主机建立网络连接
RTSP是一种实时串流协议,当然离不开网络连接,由于我们需要将端侧的网络流通过RTSP协议推送到PC侧实时播放,所以必须建立端侧平台和PC主机的以太网连接。将端侧平台和PC主机通过网线直连,如果你不想拉断主机原来的网络,可以用USB转以太网接口给主机再扩展一个以太网口,产品如下图所示,好用不贵,价格实惠,不超过50买个不错的,由于不想断网,这里我采用后者的方案:
关于USB网卡类产品的体验,可以参考博客:
绿联USB网卡的使用记录_papaofdoudou的博客-CSDN博客_usb网卡
在windows10上插入usb转以太网卡,无需安装驱动,在用网线将两个以太网口直连起来。之后就需要设置端侧IP地址了。
首先为了保证两台设备在同一个网段,先看一下USB网卡的IP地址,下图的以太网适配器 以太网3即是USB网卡的IP地址,是169.254.173.243,169.254.0.0到169.254.255.255是B类IP保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.1到169.254.255.254中临时获得一个IP地址,我们就用这个地址。
我们需要保证端侧和PC在同一个网段内,所以必须将端侧配置成同一个网段的B类保留地址,方法和过程如下:
ifconfig -a ifconfig eth0 up ifconfig eth0 169.254.173.233 netmask 255.255.0.0 ifconfig -a
设置IP为169.254.173.233。
网络测试:直接ping peer.从PC端ping端侧:
端侧ping PC侧:
都可以ping通,网络配置完成。
为了避免每次重启都要配IP的不便,我们将配置放在脚本中,cdevice到设备配置目录,打开busybox-init-base-files/etc/init.d/rc.final文件,将以上命令添加到末尾:
重新编译,烧录,之后每次启动IP都已经配置好。
方便多了,接下来实现方案。
方案流程
一个有趣的问题
我们知道,常用的开源人形检测算法,比如yolo系列,mobilenet-ssd系列,它们的输入图形尺寸都是正方形的,也就是长==宽,比如yolov支持的三种尺寸输入(320x320, 416x416, 608x608),以及mobilenet-ssd(224x224).虽然VIPP也支持无极缩放和变AR缩放,但是为了保证图像缩放时不裁剪内容也不将内容压缩,通路中建议使用16:9的长宽比压缩数据,如下图所示:
所以,这里就有一个不匹配的问题发生,如果VIPP通路送的图像是16:9的,而网络则希望输入图为方形的,该如何处理?
处理的方法很简单,你不是16:9吗,直接将9补到16就可以了,也就是说,图像下方留黑边,以352*352的网络输入尺寸为例,下方补154行的而黑边,变成方形,如下图所示:
480*480的做法类似
这样做虽然可以解决问题,但是有一个弊端,就是黑边的部分其实是在浪费算力,使原本可以提高的帧率部分的算力浪费在黑边的无效处理上。
架构都是虚的,无图无真相,我们看一下处理前后YUV图形的变化:
处理前是的480*270:
处理后的480*480:
这样处理,由于下面补的部分经过有效卷积后为0,不会检测出框来.而上方内容区的检测内容和实际的16:9的检测图像效果是等效的,所以,网络的检出结果可以直接经过线性变换还原回大图中对应框的位置。
关于补黑边的逻辑很简单,由于VIPP输出16:9的NV12格式YUV, 我们直接将Y部分拷贝到方形图像的Y部分,UV拷贝到方形尺寸的UV部分,其余补0即可。对应代码,注意下图的SIZE对应方形尺寸的长宽,不对应VIPP输出图的长宽,只有这样,才能起到补黑边的作用。
RTSP实跑测试:
打开VLC,选择媒体->打开网络串流... 对话框,配置RTSP服务端的拉流地址,点确定后即可拉流成功。人形检测算法的效果:
人脸检测算法效果:
基于以上功能,可以做出很多有意思的应用场景出来,比如,在安防领域,由于网络带宽的限制,一般需要压低编码码率从而减少带宽,这会造成整幅画面的区域码率变低。但是针对具体场景,又有针对个别区域做精细控制的需求,这是一对矛盾,而AI检测框的机制给解决这种矛盾提供了一种优美的方案,在行业内,它被称为ROI(Region Of Interst).
本帖转自CSDN:https://blog.csdn.net/tugouxp/article/details/123692835
作者:papaofdoudou
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号