mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-01-26 14:08:30 +03:00
Handle unknown SOCs for RKNN converter by only using known SOCs
This commit is contained in:
parent
63d3227457
commit
657fb6da62
@ -77,6 +77,9 @@ FFMPEG_HWACCEL_RKMPP = "preset-rkmpp"
|
|||||||
FFMPEG_HWACCEL_AMF = "preset-amd-amf"
|
FFMPEG_HWACCEL_AMF = "preset-amd-amf"
|
||||||
FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
|
FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
|
||||||
|
|
||||||
|
# RKNN constants
|
||||||
|
SUPPORTED_RK_SOCS = ["rk3562", "rk3566", "rk3568", "rk3576", "rk3588"]
|
||||||
|
|
||||||
# Regex constants
|
# Regex constants
|
||||||
|
|
||||||
REGEX_CAMERA_NAME = r"^[a-zA-Z0-9_-]+$"
|
REGEX_CAMERA_NAME = r"^[a-zA-Z0-9_-]+$"
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import cv2
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import Field
|
from pydantic import Field
|
||||||
|
|
||||||
from frigate.const import MODEL_CACHE_DIR
|
from frigate.const import MODEL_CACHE_DIR, SUPPORTED_RK_SOCS
|
||||||
from frigate.detectors.detection_api import DetectionApi
|
from frigate.detectors.detection_api import DetectionApi
|
||||||
from frigate.detectors.detection_runners import RKNNModelRunner
|
from frigate.detectors.detection_runners import RKNNModelRunner
|
||||||
from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
|
from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
|
||||||
@ -19,8 +19,6 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
DETECTOR_KEY = "rknn"
|
DETECTOR_KEY = "rknn"
|
||||||
|
|
||||||
supported_socs = ["rk3562", "rk3566", "rk3568", "rk3576", "rk3588"]
|
|
||||||
|
|
||||||
supported_models = {
|
supported_models = {
|
||||||
ModelTypeEnum.yologeneric: "^frigate-fp16-yolov9-[cemst]$",
|
ModelTypeEnum.yologeneric: "^frigate-fp16-yolov9-[cemst]$",
|
||||||
ModelTypeEnum.yolonas: "^deci-fp16-yolonas_[sml]$",
|
ModelTypeEnum.yolonas: "^deci-fp16-yolonas_[sml]$",
|
||||||
@ -82,9 +80,9 @@ class Rknn(DetectionApi):
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
raise Exception("Make sure to run docker in privileged mode.")
|
raise Exception("Make sure to run docker in privileged mode.")
|
||||||
|
|
||||||
if soc not in supported_socs:
|
if soc not in SUPPORTED_RK_SOCS:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f"Your SoC is not supported. Your SoC is: {soc}. Currently these SoCs are supported: {supported_socs}."
|
f"Your SoC is not supported. Your SoC is: {soc}. Currently these SoCs are supported: {SUPPORTED_RK_SOCS}."
|
||||||
)
|
)
|
||||||
|
|
||||||
return soc
|
return soc
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import time
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
from frigate.const import SUPPORTED_RK_SOCS
|
||||||
from frigate.util.file import FileLock
|
from frigate.util.file import FileLock
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -68,9 +69,20 @@ def is_rknn_compatible(model_path: str, model_type: str | None = None) -> bool:
|
|||||||
True if the model is RKNN-compatible, False otherwise
|
True if the model is RKNN-compatible, False otherwise
|
||||||
"""
|
"""
|
||||||
soc = get_soc_type()
|
soc = get_soc_type()
|
||||||
|
|
||||||
if soc is None:
|
if soc is None:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Check if the SoC is actually a supported RK device
|
||||||
|
# This prevents false positives on non-RK devices (e.g., macOS Docker)
|
||||||
|
# where /proc/device-tree/compatible might exist but contain non-RK content
|
||||||
|
if soc not in SUPPORTED_RK_SOCS:
|
||||||
|
logger.debug(
|
||||||
|
f"SoC '{soc}' is not a supported RK device for RKNN conversion. "
|
||||||
|
f"Supported SoCs: {SUPPORTED_RK_SOCS}"
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
if not model_type:
|
if not model_type:
|
||||||
model_type = get_rknn_model_type(model_path)
|
model_type = get_rknn_model_type(model_path)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user