横浜国立大学理工学部建築都市環境系学科卒
一級鉄筋技能士
近年、AI技術は私たちの生活のさまざまな側面でその効果を発揮しています。
特に、物体検知AIの進化は、セキュリティ、製造、小売業界など多くの分野に革新をもたらしています。
この記事では、物体検知AIを利用して異常を検知し、その情報を自動的にメールで通知するシステムの実装方法について解説します。
目次
検出されたオブジェクトの名前とその数を画像にテキストとして追加
物体検知AIとは、ビデオフィードや画像内の特定の物体や人物を自動で識別し、その位置を特定する技術です。
この技術を用いて異常を検知するシステムは、たとえば工場の製造ラインでの異常品の検出、公共の場での不審行動の識別、店舗での商品の在庫管理など、多岐にわたる用途で活用することができます。
add_result(image, results, x, y) 関数
検出されたオブジェクトの名前とその数を画像にテキストとして追加する関数を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def add_result(image, results, x, y): # 結果から検出された物体の名前pandasのデータフレーム形式で取得する results_name = [row["name"] for ind, row in results.pandas().xyxy[0].iterrows()] # リストにある重複をカウントする results_count = {i: results_name.count(i) for i in results_name} str = "" offset = 0 for key in results_count.keys(): str = f"{key}:{results_count[key]}" # 文字を追加する image = cv2.putText(image, str, (x, y+offset), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) offset+=30 return image |
forループ(for key in results_count.keys():)では、各検出されたオブジェクトの名前とその数を画像にテキストとして追加するコードです。
cv2.putText()関数は、指定された位置(x, y+offset)にテキストを描画します。
メールの送信
ただ異常を検知するだけでは不十分です。
重要なのは、その異常を迅速に適切な人物に知らせることです。
ここで登場するのが、メール通知システムです。
このシステムは、AIによる異常検知が行われた際に、即座に関係者に警告を送信します。
これにより、迅速な対応が可能となり、問題の拡大を防ぐことができます。
異常が生じた際にメールを送信させる
使用可能な事例としては、『人が検出された際にアラートメールを送信する』や『物体が検出されなくなった場合に異常アラートを送信する』などが挙げられます。
無人で管理をされている方は、このような機能を搭載したカメラを設置すればコスト削減になるかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
from email.mime.text import MIMEText import smtplib # メール送信処理 def send_mail(send_message, to_email, from_email, account, password, smtp_server, smtp_port): """ メール送信処理 :param send_message: 送信メッセージ :param to_email: 送信先メールアドレス :param from_email: 送信元メールアドレス :param account: メールのアカウント メールアドレスと同じ場合が多い :param password: メールのパスワード :param smtp_server: メールサーバー :param smtp_port: メールサーバーのポート番号 :return: """ # メール情報設定 subject = "物体検出で閾値を下回りました" msg = MIMEText(send_message, "html") msg["Subject"] = subject msg["To"] = to_email msg["From"] = from_email # SMTPサーバーへ接続 # server = smtplib.SMTP(smtp_server, smtp_port, timeout=5) # SMTPサーバーへ接続(SSL) server = smtplib.SMTP_SSL(smtp_server, smtp_port, timeout=5) # ログイン認証 server.login(account, password) # メール送信 server.send_message(msg) # SMTPサーバー切断 server.quit() |
メールサーバーに関しては、契約しているサーバーで確認する必要があります。
エックスサーバーの場合は、こちらの手順で各項目を確認できます。
まとめ
「物体検知AI」に興味を持たれたなら「AI開発のナビゲーター物体検知AI編」を是非チェックしてみてください!
このコースは、物体検知AIの基礎から応用までを幅広くカバーし、実際のプロジェクトへの応用方法を学ぶことができます。