AI示例.IPCam 人车非检测 - sophgo-forum-service/sophpi-huashan GitHub Wiki

人车非检测

1、IPC

ip network camera网际协议照相机,ip camera实际上是一台视频服务器和摄像头的集成。
1991年,剑桥大学计算机研究中心只有主机房有咖啡壶,时常会有其他房间的科学家跑到主机房才发现咖啡已没了。为了解决倒咖啡时白跑一趟的问题,科学家弗雷泽和保罗想到:装配一个能够监控主机房咖啡壶的设备。他们先用一个相机对准咖啡壶,设置每分钟拍三张照片,然后编写了一个把照相机图片传送到研究部门内部网络的程序。于是,剑桥大学成功安装了世界首个网络摄像头。


2、模拟摄像机与网络摄像机

摄像机类型 工作方式 监控方式 安装环境
模拟摄像机 输出模拟信号进行传输,传输距离有限,易受干扰 通过监视器查看录像只能本地存储 不能远程查看 同轴电缆连接到每一台摄像机,录像设备,显示设备。
网络摄像机 输出数字信号进行传输,传输距离远 可联网查看 支持网络存储 便于管理 配置网络环境及IP即可,无需额外布线。

3、IP Camera分类


4、IPC基本组成


5、CV181介绍|CV181主要规格


6、CV181介绍 IPC配套方案推荐


7、CV181介绍|人车非侦测+警戒区(农村、巷道)


8、IPC软件架构


9、IPC Pipeline

pipeline以实际ini配置文件配置的参数为准。


10、Main函数流程


11、Ini配置文件

配置文件是ipc demo的基石,各模块的工作模式及参数均从配置文件中读取,下图是配置文件的位置及各模块子线程的主要工作内容。


12、Web效果展示

1.运行前将./middleware/v2/sample/ipcam/resource/www文件夹拷贝至/mnt/sd目录。
2.将ipcam/mars/Makefile NET_ENABLE宏打开,如下图所示。

3.重新编译并运行ipc demo, ipc起来后浏览器输入http://192.168.3.8/index.html 即可访问(注意ip地址需更改为自己设置的板端ip)


13、Pc端 VLC效果展示及编译步骤

windows下VLC播放器设置

14、使能IPC AI/NET/Record编译步骤

AI

配置AI功能后,会提供人脸检测,移动检测及区域入侵检测功能,会有人脸框,移动侦测框及区域入侵区域框显示。

NET

配置NET功能后,可通过Web浏览器远程查看视频流,效果如12Web效果展示所示。

Record

配置Record功能后,会提供音频及视频的录制功能,插入SD之后即可开启录制,拔出即可暂停录制。

1.修改文件cvi_mmf_sdk/middleware/v2/sample/ipcam/mars/Makefile,打开对应功能,将对应宏设置为1即可,位置如下:
2.重新执行build_middleware,即可重新编译ipcam。
3.对于AI功能而言,还需确保配置文件中AI模块是否打开,如下:

15、参数配置及运行效果

参数配置文件

打开文件param_config_ai.ini,部分配置如下

屏幕显示对象配置

......

[osdc_objs_info]
cnt        = 3			; 绘制对象数目

[osdc_obj_info0]
bShow           = 1		; 显示使能
type            = 0 ; 0: rect, 1: bitmap, 2: line, 3: buff		; 显示元素类型 0:矩形 1:位图 2:线 3:缓冲区
color           = 0xff00ffff									; 颜色
x1           	= 500											; 显示区域的左上角点坐标(横轴)
y1          	= 500											; 显示区域的左上角点坐标(纵轴)
width        	= 100											; 显示区域宽度 
height        	= 100											; 显示区域高度 
filled        	= 0												; 是否填充
thickness       = 4												; 显示边线粗细

[osdc_obj_info1]
bShow           = 1
type            = 2 ; 0: rect, 1: bitmap, 2: line, 3: buff
color           = 0xff00ffff
x1           	= 800
y1          	= 800
x2              = 1000
y2              = 1000
thickness       = 4

[osdc_obj_info2]
bShow           = 1
type            = 0 ; 0: rect, 1: bitmap, 2: line, 3: buff
color           = 0xff00ffff
x1           	= 1000
y1          	= 1000
width        	= 200
height        	= 200
filled        	= 1
thickness       = 4

......

屏幕显示元素配置

......

; osd config
[osd_config]
osd_enable_all  = 1			; 是;否使能所有显示元素
osd_cnt         = 12		; 屏;显示元素数目

; osd attach to main streaming
[osd0]
show            = 1			; 显示使能
handle          = 0			; 句柄号
type            = 2 ; 0:TYPE_PICTURE, 1: TYPE_STRING, 2:TYPE_TIME 
					; 0:图片类型	   1:字符类型	    2:实时时间类型

mod_id          = 6 ; 6: CVI_ID_VPSS	; 模块号	
dev_id          = 0						; 设备号
chn_id          = 0						; 通道号
s32x            = 20					; 显示区域起始点坐标
s32y            = 20
rec_width       = 24					; 显示区域宽度
rec_heigh       = 24					; 显示区域高度

[osd1]
show            = 1
handle          = 1
type            = 1 ; 0:TYPE_PICTURE, 1: TYPE_STRING, 2:TYPE_TIME
mod_id          = 6 ; 6: CVI_ID_VPSS
dev_id          = 0
chn_id          = 0
s32x            = 20
s32y            = 60
rec_width       = 24
rec_heigh       = 24
str             = "cvitek main streaming demo"		; 字符内容

[osd2]
show            = 1
handle          = 2
type            = 1 ; 0:TYPE_PICTURE, 1: TYPE_STRING, 2:TYPE_TIME
mod_id          = 6 ; 6: CVI_ID_VPSS
dev_id          = 0
chn_id          = 0
s32x            = 20
s32y            = 100
rec_width       = 24
rec_heigh       = 24
str             = "北京晶视智能科技有限公司"

......

配置模型参数(以face_detection为例)

......

[ai_fd_config]
fd_enable        = 1		; 人脸检测使能
fr_enable        = 1		; 人脸识别使能
mask_enable      = 0		; 口罩使能
capture_enable    = 1		; 捕获使能(开启的话需要挂载sd卡到/mnt/sd,系统检测到人脸一定时间会保存图片到sd卡)
face_ae_enable   = 0		; 
vpss_grp         = 4		; 视频处理子系统组号
vpss_chn         = 0		; 通道号
fd_poolid        = 6		; 池化层id
grp_width        = 960		;	
grp_height       = 540		;
model_width      = 768		; 模型宽度
model_height     = 432		; 模型高度
vpssPreProcSkip  = 0		; 跳过视频处理预处理使能
threshold_fd     = 0.7		; 人脸检测阈值
threshold_fr     = 0.7		; 人脸识别阈值
threshold_mask   = 0.7		; 戴口罩人脸检测阈值
model_id_fd      = 30 ;0:CVI_AI_SUPPORTED_MODEL_RETINAFACE;30:CVI_AI_SUPPORTED_MODEL_FACEMASKDETECTION
model_id_fr      = 6 ;3:CVI_AI_SUPPORTED_MODEL_FACERECOGNITION
model_id_mask    = 7 ;7:CVI_AI_SUPPORTED_MODEL_MASKCLASSIFICATION
model_path_fd    = "/mnt/data/ai_models/retinaface_mask.cvimodel"		; 模型路径
model_path_fr    = "/mnt/data/ai_models/cviface-v5-s.cvimodel"
model_path_mask  = "/mnt/data/ai_models//mask_classifier.cvimodel"

; 检测框设置
color_r          = 7.0													
color_g          = 10.0
color_b          = 230.0		
color_size       = 4		

......