AI Hunter
Member
Bạn có một chiếc Webcam cũ vứt trong ngăn kéo? Thay vì để nó bám bụi, hãy biến nó thành "Mắt thần Jarvis" bảo vệ ngôi nhà của bạn.
Khác với camera an ninh thông thường (ghi hình 24/7 gây tốn dung lượng ổ cứng), Camera AI này thông minh hơn nhiều:
Hệ thống hoạt động dựa trên mô hình Deep Learning **YOLOv8** (You Only Look Once) nổi tiếng về tốc độ và độ chính xác.
Quy trình xử lý:
1. **Webcam** thu hình ảnh liên tục.
2. **AI (YOLOv8)** quét từng khung hình để tìm dáng người.
3. Nếu phát hiện người -> Kích hoạt luồng **Cảnh báo** (Gửi tin nhắn + Hú còi).
4. Hệ thống tạm nghỉ (Cooldown) 15 giây trước khi quét tiếp để tránh spam.
Bước 1: Tạo Bot Telegram
Để camera gửi ảnh cho bạn, chúng ta cần một con Bot đưa thư:
1. Chat với **@BotFather** trên Telegram.
2. Gõ
3. Chat với bot vừa tạo, nhắn đại câu "Hello".
4. Truy cập link sau để lấy ID của bạn: `https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates`. Tìm dòng `"id": 123456789` (đây là Chat ID).
Bước 2: Cài đặt thư viện Python
(Lưu ý: Thư viện `ultralytics` sẽ tự động tải model AI về máy trong lần chạy đầu tiên).
Dưới đây là file `security_camera.py`. Tôi sử dụng kỹ thuật Multi-threading để việc gửi tin nhắn không làm đơ camera.
Bạn có thể phát triển thêm:
Chúc các bạn có một hệ thống an ninh "xịn sò" với chi phí 0 đồng!
Khác với camera an ninh thông thường (ghi hình 24/7 gây tốn dung lượng ổ cứng), Camera AI này thông minh hơn nhiều:
- Phân loại thông minh: Chỉ báo động khi thấy NGƯỜI (bỏ qua chó, mèo, xe cộ).
- Báo động thời gian thực: Gửi ảnh kẻ xâm nhập qua Telegram ngay lập tức.
- Còi hú: Phát âm thanh cảnh báo để dọa trộm.
1. Kiến trúc hệ thống
Hệ thống hoạt động dựa trên mô hình Deep Learning **YOLOv8** (You Only Look Once) nổi tiếng về tốc độ và độ chính xác.
Quy trình xử lý:
1. **Webcam** thu hình ảnh liên tục.
2. **AI (YOLOv8)** quét từng khung hình để tìm dáng người.
3. Nếu phát hiện người -> Kích hoạt luồng **Cảnh báo** (Gửi tin nhắn + Hú còi).
4. Hệ thống tạm nghỉ (Cooldown) 15 giây trước khi quét tiếp để tránh spam.
2. Chuẩn bị
Bước 1: Tạo Bot Telegram
Để camera gửi ảnh cho bạn, chúng ta cần một con Bot đưa thư:
1. Chat với **@BotFather** trên Telegram.
2. Gõ
/newbot -> Đặt tên bot -> Nhận **TOKEN**.3. Chat với bot vừa tạo, nhắn đại câu "Hello".
4. Truy cập link sau để lấy ID của bạn: `https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates`. Tìm dòng `"id": 123456789` (đây là Chat ID).
Bước 2: Cài đặt thư viện Python
Mã:
pip install ultralytics opencv-python requests
3. Triển khai Code (Full Source)
Dưới đây là file `security_camera.py`. Tôi sử dụng kỹ thuật Multi-threading để việc gửi tin nhắn không làm đơ camera.
Python:
import cv2
import time
import requests
import threading
import platform
from ultralytics import YOLO
# --- CẤU HÌNH HỆ THỐNG ---
TELEGRAM_TOKEN = "DÁN_TOKEN_CUA_BAN_VAO_DAY"
CHAT_ID = "DÁN_CHAT_ID_CUA_BAN_VAO_DAY"
CONFIDENCE_THRESHOLD = 0.6 # Độ tin cậy (trên 60% mới báo)
ALERT_COOLDOWN = 15 # Nghỉ 15 giây giữa các lần báo động
# Load model YOLOv8 Nano (Bản nhẹ nhất, chạy mượt trên CPU)
print("⏳ Đang tải Model AI...")
model = YOLO('yolov8n.pt')
def play_sound():
"""Phát âm thanh cảnh báo (Hỗ trợ Windows/Mac/Linux)"""
try:
sys_os = platform.system()
if sys_os == "Windows":
import winsound
# Tần số 2500Hz, kéo dài 1000ms
winsound.Beep(2500, 1000)
else:
# Trên Linux/Mac dùng ký tự chuông
print('\a')
except:
pass
def send_alert_thread(frame):
"""Hàm chạy ngầm: Gửi ảnh Telegram & Hú còi"""
print("🚨 ĐANG GỬI CẢNH BÁO...")
# 1. Phát còi trước
play_sound()
# 2. Lưu ảnh bằng chứng
filename = "intruder_alert.jpg"
cv2.imwrite(filename, frame)
# 3. Gửi qua Telegram API
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto"
try:
with open(filename, "rb") as photo:
payload = {"chat_id": CHAT_ID, "caption": "⚠️ CẢNH BÁO: Có người xâm nhập!"}
files = {"photo": photo}
requests.post(url, data=payload, files=files, timeout=10)
print("✅ Đã gửi tin nhắn Telegram thành công.")
except Exception as e:
print(f"❌ Lỗi gửi tin: {e}")
def main():
cap = cv2.VideoCapture(0) # 0 là Webcam mặc định
# Thiết lập độ phân giải (giảm xuống để chạy nhanh hơn nếu máy yếu)
cap.set(3, 640)
cap.set(4, 480)
last_alert_time = 0
print("🎥 Camera AI đã sẵn sàng hoạt động!")
print("Nhấn 'q' để thoát chương trình.")
while True:
ret, frame = cap.read()
if not ret: break
# 1. AI Nhận diện
# classes=[0] nghĩa là chỉ tìm Người (Person), bỏ qua xe cộ, chó mèo
results = model(frame, stream=True, classes=[0], verbose=False)
person_detected = False
# 2. Vẽ khung & Xử lý
for r in results:
boxes = r.boxes
for box in boxes:
conf = box.conf[0]
if conf > CONFIDENCE_THRESHOLD:
person_detected = True
# Vẽ khung đỏ
x1, y1, x2, y2 = map(int, box.xyxy[0])
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.putText(frame, f"INTRUDER {conf:.2f}", (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
# 3. Logic Báo động (Chạy đa luồng)
current_time = time.time()
if person_detected and (current_time - last_alert_time > ALERT_COOLDOWN):
# Tạo luồng riêng để gửi tin nhắn, không làm đơ video
t = threading.Thread(target=send_alert_thread, args=(frame.copy(),))
t.start()
last_alert_time = current_time
# 4. Hiển thị
cv2.imshow("AI Security Camera - YOLOv8", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
4. Giải thích kỹ thuật
- YOLOv8 Nano (`yolov8n.pt`): Đây là phiên bản mô hình AI nhỏ nhất, được tối ưu hóa để chạy trên CPU. Ngay cả laptop bình thường cũng có thể đạt 10-30 FPS.
- Classes=[0]: Trong bộ dữ liệu COCO, số `0` đại diện cho con người. Nếu bạn muốn phát hiện cả chó (để xem nó có cắn phá đồ không), bạn có thể đổi thành `classes=[0, 16]` (16 là chó, 15 là mèo).
- Threading: Việc gửi ảnh qua mạng Internet có thể mất 1-2 giây. Nếu không dùng `threading`, camera sẽ bị "đơ" trong 2 giây đó, khiến trộm có thể chạy thoát khỏi khung hình. Code trên giải quyết triệt để vấn đề này.
5. Ứng dụng mở rộng
Bạn có thể phát triển thêm:
- Chế độ vắng nhà: Kết hợp với bài "Jarvis Home Assistant" hôm trước. Khi bạn nói "Jarvis, tôi đi làm đây", hệ thống camera mới bắt đầu kích hoạt.
- Lưu Video đám mây: Thay vì gửi ảnh, tự động upload đoạn video 10s lên Google Drive.
Chúc các bạn có một hệ thống an ninh "xịn sò" với chi phí 0 đồng!
Bài viết liên quan