『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6187|回复: 75

[求助] J4125主机使用Frigate做人形检测,GPU加速的问题(已解决)

  [复制链接]

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
发表于 2023-7-29 11:03:53 | 显示全部楼层 |阅读模式
本帖最后由 sorrypqa 于 2023-9-3 21:49 编辑

最近看了flashbj大佬的教程https://bbs.hassbian.com/thread-22179-1-1.html,正式玩起了Frigate,效果非常满意,比雷达和红外传感器好用太多了(像下图这类地方,用10个雷达或红外都不能全部覆盖,而且供电和干扰问题更是难于解决,用Frigate的话,1个摄像头就几乎完美覆盖,还可以指定或排除范围,划分区域,为所欲为,在i3-5010U和i5-8260U平台上使用GPU加速和解码都没问题,在J4125主机里,可以使用GPU加速,但不能使用GPU解码,官网里有提到这个问题,但我不懂配置文件里应该怎么写,在此请教一下各位大佬,先谢谢!

SNAG-2023-9-1_0002.png


SNAG-2023-7-29_00006.png

注意:对于一些处理器,如J4125,默认的驱动程序iHD似乎无法正确用于硬件加速。您可能需要将驱动程序更改为i965,方法是将以下环境变量LIBVA_driver_NAME=i965添加到您的docker compose文件中,或在适用于HA OS用户的frigate.yml中。



SNAG-2023-7-29_00007.png


----------------------------------------------------------------------------------------------------------------------------------
我是HassOS安装的Frigate,在frigate.yml里添加下面字符
environment_vars:
  LIBVA_DRIVER_NAME: i965

完整参考配置:

mqtt:
  host: 192.168.99.200 #mqtt服务器地址
  port: 1883 #mqtt端口
  user: admin #mqtt用户名
  password: ahsaesiemahneecai2thongaoph5Jae0eighieYei4gaengiewohGeithae7quep #MQTT密码
  topic_prefix: frigate1 #主题前缀,如果运行多个实例,则必须是唯一的
  client_id: frigate1 #客户端id,如果运行多个实例,则必须是唯一的

detectors: #探测器配置
   J4125: #探测器名称
    type: openvino #检测器类型
    device: AUTO
    model:
      path: /openvino-model/ssdlite_mobilenet_v2.xml

model: #探测模型
  width: 300 #对象检测模型输入宽度
  height: 300 #对象检测模型输入高度
  input_tensor: nhwc #对象检测模型输入张量格式
  input_pixel_format: bgr #对象检测模型输入颜色空间
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt #标签映射的路径

cameras:
  cam102:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://admin:[email protected]:554/h264/ch1/main/av_stream #海康摄像头的RTSP流地址
          roles: #此流的角色列表,有效值为detect,record,rtmp
            - detect #检测
    detect: #摄像头的分辨率
      width: 2560
      height: 1440      
    zones:
      zone_0: #区域名
        coordinates: 375,275,1508,988,942,1440,291,1440,77,365
        objects:
          - person
        # Optional: Zone level object filters.
        # NOTE: The global and camera filters are applied upstream.
        filters: #过滤器,可减少特定对象类型的误报
          person: #对象类型
            min_area: 2000 #检测到的对象的边界框的最小宽度*高度(默认值:0)
            max_area: 24000000 #检测到的对象的边界框的最大宽度*高度(默认值:24000000)
            min_ratio: 0 #检测到的对象的边界框的最小宽度/高度(默认值:0)
            max_ratio: 24000000 #检测到的对象的边界框的最大宽度/高度(默认值:24000000)
            min_score: 0.5 #对象启动跟踪的最低分数(默认值:0.5)
            threshold: 0.7 #被跟踪对象的计算得分被视为真正的最小小数百分比(默认值:0.7)
#          mask: 0,0,1000,0,1000,200,0,200 #遮罩以防止在某些区域检测到此对象类型(默认值:无遮罩)
      zone_1: #区域名
        coordinates: 935,1440,2358,1440,2524,640,2159,494
        objects:
          - person
        # Optional: Zone level object filters.
        # NOTE: The global and camera filters are applied upstream.
        filters: #过滤器,可减少特定对象类型的误报
          person: #对象类型
            min_area: 2000 #检测到的对象的边界框的最小宽度*高度(默认值:0)
            max_area: 24000000 #检测到的对象的边界框的最大宽度*高度(默认值:24000000)
            min_ratio: 0 #检测到的对象的边界框的最小宽度/高度(默认值:0)
            max_ratio: 24000000 #检测到的对象的边界框的最大宽度/高度(默认值:24000000)
            min_score: 0.5 #对象启动跟踪的最低分数(默认值:0.5)
            threshold: 0.7 #被跟踪对象的计算得分被视为真正的最小小数百分比(默认值:0.7)
#          mask: 0,0,1000,0,1000,200,0,200 #遮罩以防止在某些区域检测到此对象类型(默认值:无遮罩)   
    record:
      events: #新增
        required_zones: #新增
          - zone_0 #这里是表示需要监听哪个区域的事件
          - zone_1 #这里是表示需要监听哪个区域的事件
  cam107:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://admin:[email protected]:554/h264/ch1/main/av_stream #海康摄像头的RTSP流地址
          roles: #此流的角色列表,有效值为detect,record,rtmp
            - detect #检测
    detect: #摄像头的分辨率
      width: 2560
      height: 1440
  cam108:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://admin:[email protected]:554/h264/ch1/main/av_stream #海康摄像头的RTSP流地址
          roles: #此流的角色列表,有效值为detect,record,rtmp
            - detect #检测
    detect: #摄像头的分辨率
      width: 2560
      height: 1440
  cam112:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 #大华摄像头的RTSP流地址,不同品牌的摄像头地址都不同
          roles: #此流的角色列表,有效值为detect,record,rtmp
            - detect #检测
    detect: #摄像头的分辨率
      width: 2560
      height: 1440
  cam113:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 #大华摄像头的RTSP流地址,不同品牌的摄像头地址都不同
          roles: #此流的角色列表,有效值为detect,record,rtmp
            - detect #检测
    detect: #摄像头的分辨率
      width: 2560
      height: 1440

detect: #检测配置
  enabled: True #启用相机检测(默认值:True)
  fps: 5 #建议值为5,理想情况下,尽量减少相机上的FPS
  stationary:
    interval: 0 #用于确认静止对象的频率,默认值为0,在检测到移动之前,对象检测不会确认静止对象。如果设置为10,则每隔10帧将运行对象检测以确认对象是否仍然存在。
    threshold: 50 #对于被视为静止的对象,不改变位置的帧数(默认值:帧速率的10倍或10秒)
    # Optional: Define a maximum number of frames for tracking a stationary object (default: not set, track forever)
    # This can help with false positives for objects that should only be stationary for a limited amount of time.
    # It can also be used to disable stationary object tracking. For example, you may want to set a value for person, but leave
    # car at the default.
    # WARNING: Setting these values overrides default behavior and disables stationary object tracking.
    #          There are very few situations where you would want it disabled. It is NOT recommended to
    #          copy these values from the example config into your config unless you know they are needed.
#    max_frames:
#      default: 3000 #所有对象类型的默认值(默认值:未设置,永远跟踪)
#      objects: #特定对象的值
#        person: 1000 #人体

objects: #对象配置,可以在摄像头级别进行覆盖
  # Optional: list of objects to track from labelmap.txt (default: shown below)
  track: #要从labelmap.txt跟踪的对象列表(默认值为person)
    - person
#  mask: 0,0,1000,0,1000,200,0,200 #遮罩以防止在某些区域检测到所有对象类型(默认值:无遮罩)
  filters: #过滤器,可减少特定对象类型的误报
    person: #对象类型
      min_area: 0 #检测到的对象的边界框的最小宽度*高度(默认值:0)
      max_area: 24000000 #检测到的对象的边界框的最大宽度*高度(默认值:24000000)
      min_ratio: 0 #检测到的对象的边界框的最小宽度/高度(默认值:0)
      max_ratio: 24000000 #检测到的对象的边界框的最大宽度/高度(默认值:24000000)
      min_score: 0.5 #对象启动跟踪的最低分数(默认值:0.5)
      threshold: 0.7 #被跟踪对象的计算得分被视为真正的最小小数百分比(默认值:0.7)
#      mask: 0,0,1000,0,1000,200,0,200 #遮罩以防止在某些区域检测到此对象类型(默认值:无遮罩)

snapshots: #快照,为每个事件写入剪辑目录的jpg快照配置,可以在摄像头级别进行覆盖
  enabled: False #启用将jpg快照写入/media/frigate/clips(默认值:False)
  clean_copy: False #保存快照图像的干净PNG副本(默认值:True)
  timestamp: True #在快照上打印时间戳(默认值:False)
  bounding_box: True #在快照上绘制边界框(默认设置:False)
  crop: False #裁剪快照(默认设置:False)
#  height: 175 #调整快照大小的高度(默认值:原始大小)
  required_zones: [] #将快照限制为进入任何列出区域的对象(默认值:不需要区域)
  retain: #保留设置的相机覆盖(默认值:全局值)
    # Required: Default retention days (default: shown below)
    default: 2 #默认保留天数(默认值:10)
#    objects:
#      person: 15 #每个对象的保留天数

record: #记录配置,可以在摄像头级别进行覆盖
  enabled: False #启用录制(默认值:False),如果在配置中禁用了录制,还可以通过UI或MQTT启动。
  expire_interval: 60 #清理运行之间等待的分钟数(默认值:60)
  retain: #录制的保留设置
    days: 0 #无论发生什么事件,保留录制的天数(默认值:0)
    mode: active_objects #保留模式。可用选项包括:all、motion和active_objects
                         #all-保存所有录制片段,而不考虑活动
                         #motion-保存所有检测到运动的录制片段
                         #active_objects-使用活动/移动对象保存所有录制片段
                         #注意:此模式仅适用于上述天数设置大于0的情况
  events: #事件记录设置
    pre_capture: 5 #要包括的事件前的秒数(默认值:5)
    post_capture: 5 #事件后要包含的秒数(默认值:5)
    objects: #保存录制的对象。(默认值:all tracked objects)
      - person
    required_zones: [] #将录制限制为进入任何列出区域的对象(默认值:不需要区域)
    retain: #事件录制的保留设置
      default: 2 #默认保留天数(默认值:10)
      mode: active_objects #保留模式(默认值:motion)
                   #all-保存事件的所有录制片段,而不考虑活动
                   #motion-保存检测到任何运动的事件的所有录制片段
                   #active_objects-保存具有活动/移动对象的事件的所有录制片段
                   #注意:相机的保留模式比配置的模式更具限制性
                   #例如,如果相机保留模式为“运动”,在此处将模式设置为“all”,没有运动的片段照样没有存储
      objects: #每个对象的保留天数
        person: 15

ui:
  live_mode: mse #在UI中设置相机的默认实时模式(默认:mse)
#   timezone: America/Denver  #设置要在UI中使用的时区(默认:使用浏览器本地时间)
  use_experimental: False #使用实验记录/相机视图UI(默认设置:False)
  time_format: 24hour #设置使用的时间格式,选项包括browser, 12hour, or 24hour(默认设置:browser)
  date_style: short #设置日期样式,选项有:full, long, medium, short(默认值:short)
                    # 示例:
                    #    short: 2/11/23
                    #    medium: Feb 11, 2023
                    #    full: Saturday, February 11, 2023
  time_style: medium #设置时间样式,选项有:full, long, medium, short(默认值:medium)
                     # Examples:
                     #    short: 8:14 PM
                     #    medium: 8:15:22 PM
                     #    full: 8:15:22 PM Mountain Standard Time
  strftime_fmt: "%Y/%m/%d %H:%M:%S" #可以手动使用strftime格式覆盖日期/时间样式
                                    ##https://www.gnu.org/software/lib ... -Calendar-Time.html                                


environment_vars:
  LIBVA_DRIVER_NAME: i965        







评分

参与人数 2金钱 +20 收起 理由
shayulei + 10 高手,这是高手!
隔壁的王叔叔 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

13

主题

280

帖子

1615

积分

金牌会员

Rank: 6Rank: 6

积分
1615
金钱
1325
HASS币
50
发表于 2023-7-29 11:20:39 | 显示全部楼层
我新买了一台j4105的x86,准备通过PVE或是ESXI方式安装HA,不知道j4105能不能用GPU解码
回复

使用道具 举报

1

主题

21

帖子

167

积分

注册会员

Rank: 2

积分
167
金钱
146
HASS币
0
发表于 2023-7-29 11:40:10 | 显示全部楼层
牛X啊,老的UHD630可以搞不
回复

使用道具 举报

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
 楼主| 发表于 2023-7-29 11:41:02 | 显示全部楼层
flashbj 发表于 2023-7-29 11:20
我新买了一台j4105的x86,准备通过PVE或是ESXI方式安装HA,不知道j4105能不能用GPU解码 ...

大佬是真的牛啊!竟然为了Frigate买新机啦,哈哈~~!我怕和J4125一样
回复

使用道具 举报

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
 楼主| 发表于 2023-7-29 11:57:55 | 显示全部楼层
theatrics 发表于 2023-7-29 11:40
牛X啊,老的UHD630可以搞不

可以搞,8代以上的CPU用起来就非常爽了
回复

使用道具 举报

19

主题

478

帖子

2660

积分

金牌会员

Rank: 6Rank: 6

积分
2660
金钱
2182
HASS币
30
发表于 2023-7-29 17:26:27 | 显示全部楼层
你填写的东西好像错了?
我看他介绍,ha的格式应该是这样的?
environment_vars:
  LIBVA_driver_NAME: i965
回复

使用道具 举报

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
 楼主| 发表于 2023-7-29 17:50:41 | 显示全部楼层
本帖最后由 sorrypqa 于 2023-7-29 17:57 编辑
wdmywm3 发表于 2023-7-29 17:26
你填写的东西好像错了?
我看他介绍,ha的格式应该是这样的?

谢谢!我试了一下,还是没起作用

SNAG-2023-7-29_00008.png


SNAG-2023-7-29_00010.png


回复

使用道具 举报

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
 楼主| 发表于 2023-7-29 23:05:26 | 显示全部楼层
wdmywm3 发表于 2023-7-29 17:26
你填写的东西好像错了?
我看他介绍,ha的格式应该是这样的?

把名称改成大写之后正常了,谢谢!

SNAG-2023-7-29_00012.png


SNAG-2023-7-29_00011.png
回复

使用道具 举报

0

主题

562

帖子

2187

积分

金牌会员

Rank: 6Rank: 6

积分
2187
金钱
1625
HASS币
0
发表于 2023-7-30 08:46:01 | 显示全部楼层
感觉很厉害啊,用esxi能直通给os里面的Frigate用吗
回复

使用道具 举报

50

主题

1300

帖子

4913

积分

论坛DIY达人

积分
4913
金钱
3613
HASS币
20
 楼主| 发表于 2023-7-30 08:56:47 | 显示全部楼层
Ari 发表于 2023-7-30 08:46
感觉很厉害啊,用esxi能直通给os里面的Frigate用吗

是的,PVE也可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-3 20:43 , Processed in 0.140054 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表