← 작업실로 돌아가기
일상 도구

Home Monitor

집 카메라에서 낯익은 얼굴은 내 서버에서 인식하고, 누가 다녀갔는지 차분한 타임라인으로 보여 줍니다.

Home Monitor는 직접 호스팅합니다. 각자 자신만의 비공개 사본을 운영합니다.

알림 설정, 카메라 상태, 데모 카메라 세 대의 스냅샷이 있는 개요 화면

앱 정보

Home Monitor는 집 카메라를 직접 호스팅해서 보는 앱입니다. 카메라 옆에 둔 작은 수집기가 카메라 스냅샷을 가져오고, 움직임이 있으면 이미지를 보냅니다. 그러면 내 서버가 사람과 얼굴을 찾아, 설치할 수 있는 웹 앱에서 하루 타임라인과 함께 결과를 보여 줍니다.

연속 영상은 카메라의 SD 카드에 남고, 서버는 선택한 스냅샷만 보관합니다. 사람과 얼굴 인식은 서버의 프로세서에서 실행되므로 외부 서비스가 내 이미지를 받는 일은 없습니다.

인식은 추정일 뿐입니다. Home Monitor는 얼굴을 신중하게 대조하고 불분명한 얼굴은 식별하지 않지만, 얼굴이 실제인지 확인하거나 신원을 보장하거나 사람을 카메라 사이에서 추적하지는 않습니다. 동의한 사람만 등록하고, 뜻밖의 일치는 직접 확인하세요.

갤러리

이 스크린샷의 장면, 사람, 이벤트는 앱의 데모가 만든 것이며 실제 카메라 이미지는 쓰지 않았습니다.

작동 원리

  1. 카메라 옆에서 수집합니다. 카메라 근처의 작은 기기가 2초마다 각 카메라의 스냅샷을 확인하고, 움직임이 있을 때만 이미지를 올리며, 15초마다 한 장씩 더 보냅니다.
  2. 내 서버에서 인식합니다. 서버는 그래픽 카드 없이 프로세서로 사람과 얼굴을 찾고, 등록한 사람들의 비공개 라이브러리와 얼굴을 비교합니다.
  3. 앱에서 확인합니다. 설치할 수 있는 웹 앱에서 최신 스냅샷, 인식된 사람, 카메라별 하루 타임라인을 볼 수 있습니다.
  4. 조용한 알림을 받습니다. 선택형 알림은 무슨 일이 있었다는 것만 알리고 사진이나 이름은 담지 않으며, 마당에 있는 동안 모든 기기에서 한 번에 일시 중지할 수 있습니다.

기능

  • 낯익은 얼굴: 동의를 받아 사람을 등록하면 각 이벤트가 인식됨, 인식되지 않은 얼굴, 얼굴이 또렷하게 보이지 않은 사람 중 하나로 표시됩니다.
  • 하루를 한눈에: 활동 타임라인은 하루 동안 각 카메라의 이벤트를 보여 주며 카메라, 결과, 시간으로 걸러 볼 수 있고, 카메라가 오프라인이었거나 알림이 일시 중지된 시간도 함께 표시합니다.
  • 아무것도 드러내지 않는 알림: 푸시 알림은 암호화되며 사진이나 이름이 담기지 않습니다. 인식되지 않은 얼굴에만 알림을 받을 수 있고, 모든 기기에서 한 번에 일시 중지할 수 있습니다.
  • 초대받은 기기만 접근: 휴대폰이나 컴퓨터는 초대로 활성화하며 언제든 취소할 수 있습니다. 지금은 초대받은 모든 기기가 얼굴 라이브러리를 포함해 전체 권한을 가집니다.
  • 작게 유지되는 저장 공간: 이벤트는 기간과 전체 크기에 따라 삭제되고, 등록한 얼굴은 따로 보관되며, 비공개 이미지는 앱의 오프라인 캐시에 절대 들어가지 않습니다.
  • 카메라 없이 체험: 로컬 데모는 가상의 장면과 사람을 그리고, 실제 인식은 쓰지 않으며, 멈추면 스스로 삭제됩니다.

후드 아래

Home Monitor는 두 부분으로 되어 있습니다. 수집기에는 Python과 Pillow만 있으면 됩니다. 서버는 Python 3.12, FastAPI, SQLite로 동작하며 OpenCV와 ONNX Runtime으로 작은 모델 세 개를 씁니다. YOLOX-Nano는 사람을, YuNet은 얼굴을 찾고, SFace는 얼굴을 비교합니다. 그래픽 카드가 없는 ARM64 프로세서에 맞춰 설계했습니다. 사용자와 수집기는 Tailscale로 서버에 비공개로 접속하고, 선택형 공개 접속은 Cloudflare Tunnel과 보안을 강화한 Caddy 리스너를 거칩니다. 이 프로젝트는 GPL-3.0-or-later 라이선스의 오픈 소스입니다.