Heim >Technologie-Peripheriegeräte >KI >KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

WBOY
WBOYnach vorne
2023-04-14 12:49:022102Durchsuche

Hallo zusammen.

Heute werde ich ein Rauchererkennungs- und Gesichtserkennungsprojekt mit Ihnen teilen. An vielen öffentlichen Orten, in Produktionsstätten und in Schulen gibt es Rauchverbote. Es ist weiterhin notwendig, eine Rauchverbotsüberwachung durchzuführen und die KI das Rauchverhalten automatisch erkennen zu lassen und zu erkennen, wer raucht.

Verwenden Sie den Zielerkennungsalgorithmus, um das Rauchverhalten zu bestimmen, das Gesicht des Rauchers zu extrahieren und mithilfe des Gesichtserkennungsalgorithmus festzustellen, wer raucht. Die Idee ist relativ einfach, aber die Details sind immer noch etwas mühsam.

Die im Projekt verwendeten Trainingsdaten und Quellcode wurden gepackt. Es ist immer noch dasselbe wie zuvor, lesen Sie es im Kommentarbereich.

1. Um Zigaretten zu erkennen

Ich habe 5.000 markierte Rauchdaten als Trainingsdaten verwendet

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

und sie im Datensatzverzeichnis abgelegt.

Trainieren Sie das YOLOv5-Zielerkennungsmodell.

Der erste Schritt besteht darin, data/coco128.yaml nach Smoke.yaml zu kopieren und das Datensatzverzeichnis und die Kategoriekonfigurationsinformationen zu ändern.

path: ../dataset/smoke # dataset root dir
train: images/train# train images (relative to 'path') 128 images
val: images/test# val images (relative to 'path') 128 images
test:# test images (optional)

# Classes
names:
0: smoke

Der zweite Schritt besteht darin, ./models/yolov5s.yaml nach Smoke.yaml zu kopieren und nc zu ändern

nc: 1# number of classes

Der dritte Schritt besteht darin, das vorab trainierte Modell yolov5s.pt herunterzuladen und im Verzeichnis {yolov5-Verzeichnis}/weights abzulegen

Führen Sie den folgenden Befehl aus, um zu trainieren

python ./train.py --data ./data/smoke.yaml --cfg ./models/smoke.yaml --weights ./weights/yolov5s.pt --batch-size 30 --epochs 120 --workers 8 --name smoke --project smoke_s

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Nachdem das Training abgeschlossen ist, werden Sie kann die folgende Ausgabe sehen:

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Es ist in Ordnung, es richtig zu nennen.

Nach Abschluss des Trainings kann die best.pt-Position gefunden und später zur Zigarettenerkennung verwendet werden.

model = torch.hub.load('../28_people_counting/yolov5', 'custom', './weights/ciga.pt', source='local')

results = self.model(img[:, :, ::-1])
pd = results.pandas().xyxy[0]
ciga_pd = pd[pd['class'] == 0]

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Nachdem wir Zigaretten identifizieren konnten, müssen wir noch feststellen, ob wir derzeit rauchen.

Sie können den IOU mithilfe des Zigarettenerkennungsrahmens und des Munderkennungsrahmens berechnen, um festzustellen, ob sich die beiden Rahmen überschneiden.

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Munderkennungsrahmen, der Gesichtsschlüsselpunkte zur Identifizierung verwendet.

2. Gesichtserkennung

Es gibt viele ausgereifte Modelle für Gesichtserkennungsalgorithmen. Wir müssen sie nicht selbst trainieren, wir können die Datenbank einfach direkt anpassen.

Ich verwende hier die dlib-Bibliothek, die 68 Schlüsselpunkte auf einem Gesicht identifizieren und Gesichtsmerkmale basierend auf diesen 68 Schlüsselpunkten extrahieren kann.

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

face_detector = dlib.get_frontal_face_detector()
face_sp = dlib.shape_predictor('./weights/shape_predictor_68_face_landmarks.dat')

dets = face_detector(img, 1)

face_list = []
for face in dets:
l, t, r, b = face.left(), face.top(), face.right(), face.bottom()

face_shape = face_sp(img, face)

face_detector​ kann Gesichter erkennen und den Gesichtserkennungsrahmen zurückgeben. face_sp basiert auf dem Gesichtserkennungsrahmen und identifiziert 68 Schlüsselpunkte des Gesichts.

Anhand dieser 68 Schlüsselpunkte können wir den Munderkennungsrahmen erhalten, um festzustellen, ob Sie rauchen.

Abschließend hoffen wir immer noch, Gesichtserkennungsalgorithmen nutzen zu können, um zu erkennen, wer raucht.

Der erste Schritt besteht darin, Gesichtsmerkmale zu extrahieren

face_feature_model = dlib.face_recognition_model_v1('./weights/dlib_face_recognition_resnet_model_v1.dat')

face_descriptor = face_feature_model.compute_face_descriptor(img, face_shape)

face_descriptor​Berechnen Sie einen Merkmalsvektor für jedes Gesicht basierend auf der Position und dem Abstand zwischen den 68 Schlüsselpunkten des Gesichts. Dieses Prinzip ähnelt dem zuvor geteilten word2vec oder dem Zuordnen von Videos zu N-dimensionalen Vektoren.

Der zweite Schritt besteht darin, die vorhandenen Gesichter in die Gesichtsdatenbank einzutragen. Ich habe 3 Rauchverhaltensweisen in Filmen und Fernsehserien vorbereitet

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Schneiden Sie Gesichter aus den Videos aus, vektorisieren Sie sie und schreiben Sie sie in die Gesichtsdatenbank (ersetzt durch Dateien)

KI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung

Der dritte Schritt, das Rauchverhalten, erfolgt schließlich. Wir können das Gesicht des Rauchers ausschneiden, den Gesichtsvektor berechnen, ihn mit den Merkmalen der Gesichtsdatenbank vergleichen, das ähnlichste Gesicht finden und den entsprechenden Namen zurückgeben erweitert werden, zum Beispiel: Das von mir bereitgestellte Video hat nur ein einziges Gesicht, aber in der tatsächlichen Überwachung müssen mehrere Gesichter vorhanden sein. Zu diesem Zeitpunkt können Sie den MOT-Algorithmus verwenden, um Fußgänger zu verfolgen und dann jede Person einzeln für das Rauchen zu identifizieren. Außerdem können Sie einen separaten Statistikbereich erstellen, um das identifizierte Rauchverhalten zu speichern und es als Beweis für Warnungen und Strafen zu verwenden.

Das obige ist der detaillierte Inhalt vonKI-Rauchverbot ist okay! Rauchererkennung + Gesichtserkennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen