[ํ”„๋กœ์ ํŠธ 4]๐Ÿค– ์นด๋ฉ”๋ผ ์ธ์‹์ด v7๊นŒ์ง€ ๊ฑธ๋ฆฐ ์ด์œ  – ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5 Edge AI ์™„์„ฑ๊ธฐ

“์ปจํ…Œ์ด๋„ˆ์— ์นด๋ฉ”๋ผ ๋งˆ์šดํŠธํ•˜๊ณ  YOLOv8 ๋Œ๋ฆฌ๋ฉด ๋˜๊ฒ ์ง€” ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. v1์„ ์˜ฌ๋ฆฌ๊ณ  ๋กœ๊ทธ๋ฅผ ๋ดค๋”๋‹ˆ exec format error. v2 ์˜ฌ๋ฆฌ๋‹ˆ Failed to read frame from camera. v3, v4, v5, v6 ๋นŒ๋“œ ์‹คํŒจ… ๊ฒฐ๊ตญ v7์—์„œ์•ผ ํ™”์žฌ ๊ฐ์ง€๊ฐ€ ์ •์ƒ ๋™์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŒ…์€ ๊ทธ 7๋ฒˆ์˜ ์‹œ๋„ ๋’ค์— ๋ฐœ๊ฒฌํ•œ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5์˜ ์นด๋ฉ”๋ผ ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

๐Ÿ”— Edge AI ์œ„ํ‚ค ์ƒ์„ธ ๋ฌธ์„œ: GitHub Wiki โ€” Edge AI | ๋ชจ๋‹ˆํ„ฐ๋ง ์‹ค์ฆ ๐Ÿณ Docker Hub ์ด๋ฏธ์ง€: safe-edge-integrated-ai | safe-edge-audio


๐ŸŒ ์™œ Edge AI์ธ๊ฐ€ โ€” ํด๋ผ์šฐ๋“œ AI๋Š” ์•ˆ ๋˜๋Š” ์ด์œ 

์Šค๋งˆํŠธ ํŒฉํ† ๋ฆฌ ํ˜„์žฅ์€ ์ธํ„ฐ๋„ท์ด ๋ถˆ์•ˆ์ •ํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ ์ฐจ๋‹จ๋œ ํ์‡„๋ง ํ™˜๊ฒฝ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์— ์˜์ƒ์„ ๋ณด๋‚ด์„œ ์ถ”๋ก ํ•˜๋Š” ๋ฐฉ์‹์˜ ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โŒ ํด๋ผ์šฐ๋“œ AI ๋ฐฉ์‹
  ํ˜„์žฅ ์นด๋ฉ”๋ผ โ†’ ์ธํ„ฐ๋„ท โ†’ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ ์ถ”๋ก  โ†’ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
  ๋ฌธ์ œ: ๋„คํŠธ์›Œํฌ ๋‹จ์ ˆ ์‹œ ๊ฐ์‹œ ์™„์ „ ๋ถˆ๊ฐ€ / ์ง€์—ฐ ์‹œ๊ฐ„ ์กด์žฌ

โœ… Edge AI ๋ฐฉ์‹ (์ด ํ”„๋กœ์ ํŠธ)
  ํ˜„์žฅ ์นด๋ฉ”๋ผ โ†’ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์ง์ ‘ ์ถ”๋ก  โ†’ ์ฆ‰์‹œ ๊ฒฐ๊ณผ ์ €์žฅ
  ์žฅ์ : ๋„คํŠธ์›Œํฌ ๋…๋ฆฝ / ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ / ํ์‡„๋ง ์™„์ „ ๋™์ž‘

ํ™”์žฌ๋‚˜ ํญ๋ฐœ์ด ์ผ์–ด๋‚˜๋Š” ๋ฐ”๋กœ ๊ทธ ์ˆœ๊ฐ„, ๋„คํŠธ์›Œํฌ๋„ ํ•จ๊ป˜ ๋Š๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ˆœ๊ฐ„์— ๊ฐ์ง€๊ฐ€ ์•ˆ ๋œ๋‹ค๋Š” ๊ฑด ์‹œ์Šคํ…œ์˜ ์กด์žฌ ์ด์œ  ์ž์ฒด๋ฅผ ๋ถ€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์—์„œ ์ง์ ‘ ์ถ”๋ก ํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋‹ต์ด์—ˆ์–ด์š”.


๐Ÿงฉ 4์ข… AI ํŒŒ๋“œ ๊ตฌ์„ฑ

ํŒŒ๋“œ๊ฐ์ง€ ๋Œ€์ƒ๋ชจ๋ธ์ž…๋ ฅ ์žฅ์น˜
safe-edge-integrated-ai๐Ÿ”ฅ ํ™”์žฌ ๊ฐ์ง€YOLOv8CSI ์นด๋ฉ”๋ผ
safe-edge-integrated-ai๐Ÿง ์ž์„ธ ์ด์ƒ (์“ฐ๋Ÿฌ์งยท๊ตฝํž˜)YOLOv8 Pose๋™์ผ ์นด๋ฉ”๋ผ
safe-edge-audio๐Ÿ’ฅ ์ด์ƒ ์†Œ์Œ (ํญ๋ฐœยท์ด์„ฑ)YAMNetUSB ๋งˆ์ดํฌ
bme280-sensor๐ŸŒก๏ธ ์˜จ์Šต๋„ยท๊ธฐ์••BME280 ์ง์ ‘ ์ฝ๊ธฐI2C GPIO

๋ชจ๋“  ํŒŒ๋“œ๋Š” ์ถ”๋ก  ๊ฒฐ๊ณผ๋ฅผ InfluxDB safe_edge_db์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ํ™”์žฌ ๊ฐ์ง€ ๊ฒฐ๊ณผ๋Š” 0 ๋˜๋Š” 1์˜ ์ด์ง„๊ฐ’์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 10-1. ARM ์•„ํ‚คํ…์ฒ˜ โ€” “exec format error”

์ฒซ ๋ฒˆ์งธ ๋ฒฝ์€ v1์„ ์˜ฌ๋ฆฌ์ž๋งˆ์ž ๋ฐ”๋กœ ์™”์Šต๋‹ˆ๋‹ค.

exec /hello-app: exec format error

PC(x86_64)์—์„œ docker build๋ฅผ ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ x86_64 ์•„ํ‚คํ…์ฒ˜ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋Š” ARM64 ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: docker buildx๋กœ ARM64 ์ „์šฉ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

# --platform ์˜ต์…˜์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ๋ช…์‹œ
docker buildx build --platform linux/arm64 \
  -t minsoo0919/safe-edge-integrated-ai:v2 \
  --push .

๐Ÿ’ก ๊ตํ›ˆ: ARM ๊ธฐ๋ฐ˜ ๋…ธ๋“œ์— ๋ฐฐํฌํ•  ๋•Œ๋Š” ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋‹จ๊ณ„๋ถ€ํ„ฐ --platform linux/arm64๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 10-2. Grafana โ†’ InfluxDB ์—ฐ๊ฒฐ ์‹คํŒจ โ€” ๋‚ด๋ถ€/์™ธ๋ถ€ DNS ๊ฒฝ๊ณ„

ArgoCD๋ฅผ ํ†ตํ•ด InfluxDB๋ฅผ K3s ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์— ์˜ฌ๋ฆฌ๊ณ , Grafana์—์„œ ์—ฐ๊ฒฐํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. Grafana ๋ฐ์ดํ„ฐ ์†Œ์Šค ์„ค์ •์— K3s ๋‚ด๋ถ€ DNS ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ–ˆ๋”๋‹ˆ connection refused.

http://influxdb-svc.monitoring.svc.cluster.local:8086
โ†’ connection refused โŒ

์›์ธ: Grafana๋Š” K3s ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€ Host PC์— Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ๋–  ์žˆ์Šต๋‹ˆ๋‹ค. K3s ๋‚ด๋ถ€ DNS๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ํŒŒ๋“œ๋ผ๋ฆฌ๋งŒ ํ†ต์‹  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ–์—์„œ ๋‚ด๋ถ€ DNS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ๊ณ ์ • IP + NodePort ์กฐํ•ฉ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

# ๋ณ€๊ฒฝ ์ „ (๋ถˆ๊ฐ€)
http://influxdb-svc.monitoring.svc.cluster.local:8086

# ๋ณ€๊ฒฝ ํ›„ (์ •์ƒ)
http://10.10.10.10:30086

์ถ”๊ฐ€๋กœ DB๋ช…์— ์˜คํƒ€(sage_edge_db โ†’ safe_edge_db)๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ํ•จ๊ป˜ ์ˆ˜์ •ํ•˜๊ณ  Save & Test ์„ฑ๊ณต.

๐Ÿ’ก ๊ตํ›ˆ: ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€/์™ธ๋ถ€ ํ†ต์‹  ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ด๋‘๋ฉด ์ด๋Ÿฐ ํ˜ผ๋ž€์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ฅ Episode 10-3. ์นด๋ฉ”๋ผ ์ธ์‹ โ€” v1์—์„œ v7๊นŒ์ง€

๊ฐ€์žฅ ์˜ค๋ž˜ ๊ฑธ๋ ธ๊ณ , ๊ฐ€์žฅ ๋งŽ์ด ๋ฐฐ์šด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ž…๋‹ˆ๋‹ค.

์ฆ์ƒ: ํ™”์žฌ ๊ฐ์ง€ ํŒŒ๋“œ๋ฅผ ๋ฐฐํฌํ–ˆ๋”๋‹ˆ ๋กœ๊ทธ์— ๊ณ„์† ์ด๋Ÿฐ ๋ฉ”์‹œ์ง€๋งŒ ๋œน๋‹ˆ๋‹ค.

Failed to read frame from camera
No working camera found

์ฒ˜์Œ์˜ ์ ‘๊ทผ:

# USB ์›น์บ  ๊ธฐ์ค€์˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์‹œ๋„
cap = cv2.VideoCapture(0)

v3, v4, v5๋ฅผ ๊ณ„์† ๋นŒ๋“œํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. v6์—์„œ๋Š” ์•„์˜ˆ ๋นŒ๋“œ ์ž์ฒด๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

Package 'libgl1-mesa-glx' has no installation candidate

Debian Trixie ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์—์„œ libgl1-mesa-glx ํŒจํ‚ค์ง€๋ช…์ด libgl1๋กœ ํ†ตํ•ฉ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทผ๋ณธ ์›์ธ์„ ๋ฐœ๊ฒฌ: ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5๋Š” Pi 4์™€ ๋‹ฌ๋ฆฌ ์ƒˆ๋กœ์šด ISP ์นฉ(RP1)์„ ์‚ฌ์šฉํ•˜๋ฉฐ, CSI ์นด๋ฉ”๋ผ๊ฐ€ ๊ตฌํ˜• V4L2 ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์•„๋‹Œ libcamera ์ „์šฉ ์•„ํ‚คํ…์ฒ˜๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

# ์นด๋ฉ”๋ผ ํ™•์ธ
rpicam-hello --list-cameras
# โ†’ [0] : ov5647 [2592x1944] (/base/soc/i2c0mux/...)
#   Modes: 'SRGGB10_CSI2P' ...
# libcamera ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ ํ™•์ธ โœ…

cv2.VideoCapture(0) + V4L2 ๋ฐฉ์‹์œผ๋กœ๋Š” ์ด ์นด๋ฉ”๋ผ์— ์ ˆ๋Œ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

v7 ํ•ด๊ฒฐ: GStreamer ํŒŒ์ดํ”„๋ผ์ธ(libcamerasrc)์œผ๋กœ ์ „ํ™˜

# ๋ณ€๊ฒฝ ์ „ (V4L2 ๋ฐฉ์‹ โ€” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5 CSI ์นด๋ฉ”๋ผ์— ๋™์ž‘ ์•ˆ ํ•จ)
cap = cv2.VideoCapture(0)

# ๋ณ€๊ฒฝ ํ›„ (GStreamer + libcamerasrc โ€” v7 ์ตœ์ข… ํ•ด๊ฒฐ)
pipeline = (
    "libcamerasrc ! "
    "video/x-raw, width=640, height=480, framerate=30/1 ! "
    "videoconvert ! "
    "appsink drop=True max-buffers=1"
)
cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)

YAML์˜ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋„ /dev/video0 ๋‹จ์ผ์—์„œ /dev ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

# ๋ณ€๊ฒฝ ์ „: ํŠน์ • ์žฅ์น˜ ๋ฒˆํ˜ธ๋งŒ ๋งˆ์šดํŠธ
volumes:
- name: camera-dev
  hostPath:
    path: /dev/video0

# ๋ณ€๊ฒฝ ํ›„: /dev ์ „์ฒด ๋งˆ์šดํŠธ (์‹ค์ œ ์ŠคํŠธ๋ฆผ ์žฅ์น˜ ๋ฒˆํ˜ธ ์ ‘๊ทผ ํ—ˆ์šฉ)
volumes:
- name: dev
  hostPath:
    path: /dev

๐Ÿ’ก ๊ตํ›ˆ: ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ธํ„ฐ๋„ท ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์ ์šฉํ•˜๊ธฐ ์ „์— ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋“œ๋ผ์ด๋ฒ„ ์Šคํƒ์„ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 5์˜ ์นด๋ฉ”๋ผ๋Š” Pi 4์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์ „์— ํ˜ธ์ŠคํŠธ โ†’ Docker โ†’ Kubernetes ์ˆœ์„œ๋กœ ํ•œ ๋‹จ๊ณ„์”ฉ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ”ํ…€์—… ๋ฐฉ์‹์ด ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Š InfluxDB ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ

Measurement์ฃผ์š” Field์˜๋ฏธ
fire_detectionis_fire (0/1), confidenceํ™”์žฌ ๊ฐ์ง€ ์—ฌ๋ถ€
pose_detectionis_fallen (0/1), is_bent (0/1)์ž‘์—…์ž ์ž์„ธ ์ด์ƒ
acoustic_detectionis_danger (0/1), event_type์ด์ƒ ์†Œ์Œ ๊ฐ์ง€
environment_datatemperature, humidity, pressureํ™˜๊ฒฝ ์„ผ์„œ

๐Ÿ“ˆ Grafana ๊ด€์ œ ๋Œ€์‹œ๋ณด๋“œ โ€” mean()์ด ์•„๋‹ˆ๋ผ max()๋ฅผ ์จ์•ผ ํ•˜๋Š” ์ด์œ 

์ฒ˜์Œ์— Grafana ๊ทธ๋ž˜ํ”„์— ์ด์ƒํ•œ ๊ฐ’์ด ๋œจ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™”์žฌ ๊ฐ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ 0 ๋˜๋Š” 1์ด์–ด์•ผ ํ•˜๋Š”๋ฐ
โ†’ 0.200, 0.600 ๊ฐ™์€ ์†Œ์ˆ˜์  ๊ฐ’์ด ํ‘œ์‹œ๋จ

์›์ธ: Grafana์˜ Time Series ํŒจ๋„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ mean()(ํ‰๊ท ) ์ง‘๊ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 0๊ณผ 1๋งŒ ์žˆ๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ์— ํ‰๊ท ์„ ๋‚ด๋ฉด ๊ตฌ๊ฐ„ ๋‚ด ๊ฐ์ง€ ๋น„์œจ๋กœ ๊ณ„์‚ฐ๋˜์–ด ์†Œ์ˆ˜์ ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ: max()๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ฐ„ ์•ˆ์—์„œ ๋‹จ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๊ฐ์ง€๋์œผ๋ฉด 1์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ด€์ œ ์‹œ์Šคํ…œ์—์„œ “ํ•œ ๋ฒˆ์ด๋ผ๋„ ํ™”์žฌ๊ฐ€ ๊ฐ์ง€๋์œผ๋ฉด ๊ฒฝ๋ณด”๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋กœ์ง์ž…๋‹ˆ๋‹ค.

-- ๋ณ€๊ฒฝ ์ „
SELECT mean(is_fire) FROM fire_detection WHERE time > now()-5m GROUP BY time(10s)

-- ๋ณ€๊ฒฝ ํ›„
SELECT max(is_fire) FROM fire_detection WHERE time > now()-5m GROUP BY time(10s)

4๊ฐœ ํŒจ๋„ ๊ตฌ์„ฑ:

ํŒจ๋„์ธก์ •๊ฐ’0 (์ •์ƒ)1 (๊ฐ์ง€)
๐Ÿ”ฅ ํ™”์žฌ ๊ฐ์ง€max(is_fire)โœ… ์ดˆ๋ก / SAFE๐Ÿšจ ๋นจ๊ฐ• / FIRE
๐Ÿšจ ์“ฐ๋Ÿฌ์ง ๊ฐ์ง€max(is_fallen)โœ… ์ดˆ๋ก / SAFE๐Ÿšจ ๋นจ๊ฐ• / FALLEN
โš ๏ธ ๊ตฝํž˜ ๊ฐ์ง€max(is_bent)โœ… ์ดˆ๋ก / SAFEโš ๏ธ ๋…ธ๋ž‘ / BENT
๐Ÿ”Š ์ด์ƒ ์†Œ์Œmax(is_danger)โœ… ์ดˆ๋ก / SAFE๐Ÿšจ ๋นจ๊ฐ• / DANGER
Grafana 4๊ฐœ ํŒจ๋„ ์‹ค์‹œ๊ฐ„ ๊ด€์ œ ํ™”๋ฉด

ํ™”์žฌ ๊ฐ์ง€ ํŒŒ๋“œ ๋กœ๊ทธ โ€” ๊ฐ์ง€ ์ด๋ฒคํŠธ ์ถœ๋ ฅ

AI ํŒŒ๋“œ ์‹คํ–‰ ์ƒํƒœ ํ™•์ธ


โœ… Edge AI ์™„์„ฑ ์ƒํƒœ

ํ•ญ๋ชฉ์ƒํƒœ
YOLOv8 ํ™”์žฌ ๊ฐ์ง€ (libcamera + GStreamer)โœ…
YOLOv8 ์ž์„ธ ์ด์ƒ ๊ฐ์ง€โœ…
YAMNet ์ด์ƒ ์†Œ์Œ ๋ถ„๋ฅ˜โœ…
BME280 ํ™˜๊ฒฝ ์„ผ์„œโœ…
InfluxDB ๋ฐ์ดํ„ฐ ์ €์žฅโœ…
Grafana 4ํŒจ๋„ ์‹ค์‹œ๊ฐ„ ๊ด€์ œโœ…

์ด์ œ AI ํŒŒ๋“œ๋“ค์ด ํ˜„์žฅ์„ 24์‹œ๊ฐ„ ๊ฐ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฌธ์ œ๋Š” ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋์—†์ด ์Œ“์ด๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋А๋ƒ์ž…๋‹ˆ๋‹ค. ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด SSD๋Š” ๋ฌดํ•œํ•˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ์š”.

๐Ÿ”— ๋‹ค์Œ ํŽธ: 5ํŽธ โ€” ๋ฐ์ดํ„ฐ ํ‹ฐ์–ด๋ง: K3s CronJob์ด CPU๋ฅผ 1291%๊นŒ์ง€ ํญ์ฃผ์‹œํ‚จ ๋‚  ๐Ÿ”— Edge AI ์œ„ํ‚ค ์ „์ฒด: GitHub Wiki โ€” Edge AI Wiki