Ultralytics YOLO11 を使用したセキュリティ警報システム・プロジェクト
Ultralytics YOLO11を活用したセキュリティ警報システム・プロジェクトは、高度なコンピュータ・ビジョン機能を統合し、セキュリティ対策を強化する。Ultralytics によって開発されたYOLO11は、リアルタイムの物体検出を提供し、システムが潜在的なセキュリティ脅威を迅速に特定し、対応することを可能にする。このプロジェクトにはいくつかの利点がある:
- リアルタイム検知:YOLO11の効率性により、セキュリティーアラームシステムは、セキュリティーインシデントをリアルタイムで検知し、対応することができます。
- 精度:YOLO11は、物体検知の精度の高さで知られ、誤検知を減らし、セキュリティアラームシステムの信頼性を高めています。
- 統合能力:このプロジェクトは、既存のセキュリティ・インフラとシームレスに統合することができ、インテリジェントな監視のアップグレード層を提供します。
見るんだ: セキュリティ警報システム・プロジェクトUltralytics YOLO11 物体検出
コード
メッセージのパラメータを設定する
注
アプリのパスワード生成が必要
- App Password Generatorに移動し、"security project "などのアプリ名を指定し、16桁のパスワードを取得する。このパスワードをコピーし、指定されたパスワード・フィールドに指示通りに貼り付ける。
password = ""
from_email = "" # must match the email used to generate the password
to_email = "" # receiver email
サーバーの作成と認証
import smtplib
server = smtplib.SMTP("smtp.gmail.com: 587")
server.starttls()
server.login(from_email, password)
メール送信機能
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_email(to_email, from_email, object_detected=1):
"""Sends an email notification indicating the number of objects detected; defaults to 1 object."""
message = MIMEMultipart()
message["From"] = from_email
message["To"] = to_email
message["Subject"] = "Security Alert"
# Add in the message body
message_body = f"ALERT - {object_detected} objects has been detected!!"
message.attach(MIMEText(message_body, "plain"))
server.sendmail(from_email, to_email, message.as_string())
オブジェクト検出とアラート送信
from time import time
import cv2
import torch
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
class ObjectDetection:
def __init__(self, capture_index):
"""Initializes an ObjectDetection instance with a given camera index."""
self.capture_index = capture_index
self.email_sent = False
# model information
self.model = YOLO("yolo11n.pt")
# visual information
self.annotator = None
self.start_time = 0
self.end_time = 0
# device information
self.device = "cuda" if torch.cuda.is_available() else "cpu"
def predict(self, im0):
"""Run prediction using a YOLO model for the input image `im0`."""
results = self.model(im0)
return results
def display_fps(self, im0):
"""Displays the FPS on an image `im0` by calculating and overlaying as white text on a black rectangle."""
self.end_time = time()
fps = 1 / round(self.end_time - self.start_time, 2)
text = f"FPS: {int(fps)}"
text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 1.0, 2)[0]
gap = 10
cv2.rectangle(
im0,
(20 - gap, 70 - text_size[1] - gap),
(20 + text_size[0] + gap, 70 + gap),
(255, 255, 255),
-1,
)
cv2.putText(im0, text, (20, 70), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 0), 2)
def plot_bboxes(self, results, im0):
"""Plots bounding boxes on an image given detection results; returns annotated image and class IDs."""
class_ids = []
self.annotator = Annotator(im0, 3, results[0].names)
boxes = results[0].boxes.xyxy.cpu()
clss = results[0].boxes.cls.cpu().tolist()
names = results[0].names
for box, cls in zip(boxes, clss):
class_ids.append(cls)
self.annotator.box_label(box, label=names[int(cls)], color=colors(int(cls), True))
return im0, class_ids
def __call__(self):
"""Run object detection on video frames from a camera stream, plotting and showing the results."""
cap = cv2.VideoCapture(self.capture_index)
assert cap.isOpened()
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
frame_count = 0
while True:
self.start_time = time()
ret, im0 = cap.read()
assert ret
results = self.predict(im0)
im0, class_ids = self.plot_bboxes(results, im0)
if len(class_ids) > 0: # Only send email If not sent before
if not self.email_sent:
send_email(to_email, from_email, len(class_ids))
self.email_sent = True
else:
self.email_sent = False
self.display_fps(im0)
cv2.imshow("YOLO11 Detection", im0)
frame_count += 1
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
server.quit()
オブジェクト検出クラスの呼び出しと推論の実行
それだけだ!コードを実行すると、何らかのオブジェクトが検出された場合、メールに1回通知が届きます。通知は繰り返し送信されるのではなく、即座に送信されます。しかし、あなたのプロジェクトの要件に合わせてコードを自由にカスタマイズしてください。
受信メールサンプル
よくあるご質問
Ultralytics YOLO11は、セキュリティアラームシステムの精度をどのように向上させるのですか?
Ultralytics YOLO11は、高精度のリアルタイム物体検知を実現することで、セキュリティアラームシステムを強化します。その高度なアルゴリズムは誤検知を大幅に減らし、システムが本物の脅威にのみ反応することを保証します。この信頼性の向上は、既存のセキュリティ・インフラとシームレスに統合でき、全体的な監視品質をアップグレードします。
Ultralytics YOLO11を既存のセキュリティ・インフラと統合できますか?
はい、Ultralytics YOLO11は、既存のセキュリティ・インフラとシームレスに統合できます。YOLO11は、様々なモードをサポートし、柔軟なカスタマイズが可能です。YOLO11をプロジェクトに統合するための詳しい説明は、統合セクションをご覧ください。
Ultralytics YOLO11を実行するために必要なストレージは?
Ultralytics YOLO11を標準的なセットアップで実行するには、通常約5GBのディスク空き容量が必要です。これには、YOLO11モデルと追加の依存関係を保存するためのスペースも含まれます。クラウドベースのソリューションでは、Ultralytics HUBが効率的なプロジェクト管理とデータセットの取り扱いを提供し、ストレージのニーズを最適化することができます。拡張ストレージを含む拡張機能のプロプランについては、こちらをご覧ください。
Ultralytics YOLO11は、Faster R-CNNやSSDのような他の物体検出モデルと何が違うのですか?
Ultralytics YOLO11は、Faster R-CNNやSSDのようなモデルよりも、リアルタイム検出能力と高い精度で優位性を発揮します。そのユニークなアーキテクチャにより、精度を損なうことなく、より高速に画像を処理できるため、セキュリティアラームシステムのような時間に敏感なアプリケーションに最適です。物体検出モデルの包括的な比較については、ガイドをご覧ください。
Ultralytics YOLO11を使用したセキュリティシステムで、誤検知の頻度を減らすにはどうすればよいですか?
誤検出を減らすには、Ultralytics YOLO11モデルが、多様でよく注釈されたデータセットで適切にトレーニングされていることを確認してください。ハイパーパラメータを微調整し、新しいデータでモデルを定期的に更新することで、検出精度を大幅に向上させることができます。詳細なハイパーパラメータ・チューニング技術は、ハイパーパラメータ・チューニング・ガイドに記載されています。