Se zaměřením na výzkum detekce únavy při řízení je navržen plně automatizovaný algoritmus detekce stavu únavy řidiče využívající snímky řízení. V navrhovaném algoritmu je architektura multitaskové kaskádové konvoluční sítě (MTCNN) využita při detekci obličeje a umístění charakteristických bodů a oblast zájmu (ROI) je extrahována pomocí charakteristických bodů. Konvoluční neuronová síť nazvaná EM-CNN je navržena pro detekci stavu očí a úst ze snímků ROI. Procento uzavření očního víčka nad zornicí v průběhu času (PERCLOS) a stupeň otevření úst (POM) jsou dva parametry používané pro detekci únavy. Experimentální výsledky ukazují, že navrhovaný EM-CNN dokáže účinně detekovat stav únavy řidiče pomocí snímků řízení. Navrhovaný algoritmus EM-CNN překonává ostatní metody založené na CNN, tj. AlexNet, VGG-16, GoogLeNet a ResNet50, přičemž vykazuje míru přesnosti a citlivosti 93.623 % a 93.643 %.
1. Úvod
Průzkum Americké automobilové asociace’s Traffic Safety Foundation zjistil, že 16–21 % dopravních nehod bylo způsobeno únavou řidiče [1]. Podle Ammoura et al. je pravděpodobnost dopravní nehody způsobené únavou řidiče 46krát vyšší než u běžného řízení [2]. Podle „Zprávy o výzkumu zvláštního průzkumu a investiční strategie čínského průmyslu pro vyšetřování místa dopravních nehod a záchranného vybavení v letech 2019–2025“ došlo v roce 203,049 v Číně k 2017 63,372 dopravním nehodám (s počtem obětí 1,21,131,300 17,212,757.73 a přímými ztrátami na majetku XNUMX, XNUMX XNUMX XNUMX juanů, což je ekvivalent XNUMX XNUMX XNUMX amerických dolarů). Pro snížení výskytu takových dopravních nehod má velkou praktickou hodnotu prostudovat účinný a spolehlivý algoritmus pro detekci únavy řidiče.
V současnosti existují čtyři metody detekce únavy řidiče: (1) Na základě fyziologických ukazatelů [3–6] Rohit et al. [7] analyzovali charakteristiky elektroencefalogramu (EEG) pomocí lineární diskriminační analýzy a podpůrného vektorového stroje pro detekci únavy řidiče v reálném čase. Většina palubních fyziologických senzorů je však drahá a musí být připevněna k lidské pokožce, což může řidiči způsobit nepohodlí a ovlivnit chování řidiče. (2) Na základě jízdního stavu vozidla [8, 9] Ramesh et al. [10] pomocí senzoru zjišťoval stav pohybu volantu v reálném čase, aby určil míru únavy řidiče. Primární nevýhodou této metody však je, že detekce je velmi závislá na individuálních jízdních vlastnostech a prostředí vozovky. V důsledku toho existuje vysoký stupeň náhodnosti a kontingence mezi jízdním stavem vozidla a únavou řidiče, což snižuje přesnost detekce. (3) Na základě strojového vidění [11, 12] Grace změřila velikost a polohu zornice pomocí infračerveného světla různých vlnových délek [13]. Yan a kol. použil strojové vidění k extrakci geometrického tvaru tvaru úst [14]. Výhodou této metody je, že rysy obličeje jsou neinvazivní vizuální informací, která není ovlivněna jinými vnějšími faktory, tj. jízdním stavem vozidla, individuálními jízdními vlastnostmi a prostředím vozovky. (4) Na základě fúze informací Wang Fei et al. kombinované fyziologické indikátory a jízdní stav vozidla ke zjištění stavu únavy řidiče shromažďováním signálu EEG subjektu a odpovídajících údajů o manipulaci s volantem. Robustnost testu je však ovlivněna manipulačními návyky jednotlivce a prostředím řidiče.
2. Související práce
Abychom se vypořádali s výše uvedenými obtížemi, v této studii zvažujeme hluboké konvoluční neuronové sítě (CNN) [15–18]. CNN se rychle rozvíjely v oblasti strojového vidění, zejména pro detekci obličeje [19, 20]. Viola a Jones [21] a Yang a kol. [22] propagoval použití algoritmu AdaBoost s Haarovými funkcemi k trénování různých slabých klasifikátorů, kaskádových do silných klasifikátorů pro detekci tváří a nelidských tváří. V roce 2014 Facebook navrhl systém rozpoznávání obličeje DeepFace, který využívá zarovnání obličeje k fixaci obličejových rysů na určitých pixelech před síťovým tréninkem a získává rysy pomocí CNN. V roce 2015 Google navrhl FaceNet, který používá stejnou tvář pro vysokou soudržnost v různých pozicích, zatímco různé tváře mají nízké spojovací vlastnosti. Ve FaceNet je plocha mapována do příznakového vektoru euklidovského prostoru pomocí CNN a ternární ztrátové funkce [23]. V roce 2018 Čínská akademie věd a Baidu navrhly PyramidBox, což je kontextově asistovaný algoritmus detekce obličeje s jednou čočkou pro malé, neostré, částečně okludované obličeje. PyramidBox zlepšil výkon sítě pomocí polodozorovaných metod, nízkoúrovňových pyramid funkcí a kontextově citlivých prediktivních struktur [24]. Výkon detekce obličeje založený na CNN je výrazně vylepšen použitím výkonných metod hlubokého učení a optimalizace end-to-end. V této studii kombinujeme charakteristiky očí a úst a používáme CNN spíše než tradiční metodu zpracování obrazu k realizaci extrakce rysů a rozpoznávání stavu [25, 26] a je nastavena nezbytná prahová hodnota pro posouzení únavy.
Navrhovaný způsob zjišťování stavu únavy řidiče zahrnuje tři složky (obrázek 1). Nejprve se pomocí MTCNN získá ohraničující rámeček obličeje řidiče a pět hlavních bodů levého a pravého oka, nosu a levého a pravého koutku úst [27]. Za druhé jsou klasifikovány stavy očí a úst. Zde je oblast zájmu (ROI) extrahována body rysů a stavy očí a úst jsou identifikovány pomocí EM-CNN. Nakonec zkombinujeme procento zavření očních víček nad zornicí v průběhu času (PERCLOS) a stupeň otevření úst (POM), abychom identifikovali stav únavy řidiče.

![]()
Vývojový diagram navrhované metody pro detekci únavy řidiče.
Primární příspěvky této studie jsou shrnuty následovně: (1) EM-CNN, která je založena na síti rozpoznávání stavu, je navržena pro klasifikaci stavů očí a úst (tj. otevřené nebo zavřené). U detekce únavy při řízení na základě strojového vidění jsou frekvence mrkání a zívání důležitými indikátory pro posouzení únavy řidiče. Proto tento článek navrhl konvoluční neuronovou síť, která rozpoznává stav očí a úst, aby určila, zda jsou oči a ústa otevřené nebo zavřené. EM-CNN může snížit vliv faktorů, jako jsou změny osvětlení, sezení a okluze brýlí, aby vyhovovaly adaptabilitě na složitá prostředí. (2) Byla vyvinuta metoda pro zjištění stavu únavy řidiče. Tato metoda kombinuje více úrovní funkcí kaskádováním dvou jedinečných struktur CNN. Detekce obličeje a umístění charakteristických bodů jsou prováděny na základě MTCNN a stav očí a úst je určován pomocí EM-CNN. (3) Binokulární obrazy (spíše než monokulární obrazy) jsou detekovány pro získání bohatých očních rysů. V případě vícepolohové oblasti obličeje řidiče může detekce informací pouze z monokuláru snadno způsobit nesprávný úsudek. Pro získání bohatších informací o obličeji je navržena metoda rozpoznávání únavového řízení založená na kombinaci binokulárních a ústních obličejových rysů, která využívá komplementárních výhod různých funkcí ke zlepšení přesnosti rozpoznávání.
3. Navrhovaná metodika
3.1. Detekce obličeje a umístění funkčních bodů
Detekce obličeje je v reálných situacích náročná kvůli změnám v držení těla řidiče a neomezeným faktorům prostředí, jako je osvětlení a okluze. Pomocí hloubkového kaskádového multitaskingového rámce MTCNN lze detekci a zarovnání obličeje dokončit současně, vnitřní vztah mezi těmito dvěma je využit ke zlepšení výkonu a jsou extrahovány globální rysy obličeje; tak lze získat polohu obličeje, levého a pravého oka, nosu a levého a pravého koutku úst. Struktura MTCNN je znázorněna na obrázku 2. MTCNN se skládá ze tří kaskádových podsítí, tj. P-Net (síť návrhu), R-Net (vylepšená síť) a O-Net (výstupní síť), které jsou detekovány poloha hlavního bodu od hrubé po jemnou.


(B)

(C)
![]()
() ![]()
(B) ![]()
(C)
Architektura MTCNN: (a) P-Net, (b) R-Net a (c) O-Net.
P-Net: nejprve se zkonstruuje obrazová pyramida pro získání obrazů různých velikostí. Tyto obrázky jsou pak postupně přiváděny do sítě P-Net. Plně konvoluční síť se používá k určení, zda je plocha zahrnuta v oblasti 12 × 12 v každé poloze, čímž se získá ohraničující rámeček oblasti kandidátské plochy a její regresní vektor. Poté je okno kandidátské tváře kalibrováno pomocí rámcového regresního vektoru a je použito nepolární potlačení velkých hodnot k odstranění vysoce se překrývajících oblastí kandidátské tváře [28, 29].
R-Net: oblast kandidátské tváře získaná vstupem P-Net a velikost obrázku je upravena na 24 × 24. Okno kandidátské tváře je stíněno regresí hraničního rámečku a potlačením nemaximální hodnoty. Ve srovnání s P-Net struktura sítě přidává spojovací vrstvu pro získání přesnější polohy obličeje.
O-Net: podobně jako u R-Net je v O-Net velikost obrázku upravena na 48 × 48 a okno kandidátské tváře je promítáno, aby se získala konečná poloha tváře a pět bodů.
MTCNN provádí detekci obličejů prostřednictvím třívrstvé kaskádové sítě, která současně provádí klasifikaci obličejů, regresi ohraničujícího rámečku a umístění charakteristických bodů. Vykazuje dobrou robustnost a je vhodný pro skutečné jízdní prostředí. Výsledek je znázorněn na obrázku 3.

![]()
Detekce obličeje a umístění hlavních bodů pomocí MTCNN.
3.2. Stav rozpoznávání oka a úst
3.2.1. Extrakce ROI
Obecně platí, že většina metod detekce očí extrahuje pouze jedno oko k identifikaci stavu únavy. Když se však hlava řidiče posune, používání informací pouze z jednoho oka může snadno způsobit nesprávný úsudek. Proto, aby bylo možné získat více informací o očích a přesně rozpoznat stav oka, navrhovaná metoda extrahuje obraz dvou očí, aby se určilo, zda jsou oči otevřené nebo zavřené.
Poloha levého a pravého oka řidiče se získává pomocí sítě MTCNN. Zde je poloha levého oka a1
, poloha pravého oka je a2
, vzdálenost mezi levým a pravým okem je
a šířka obrazu oka je
, podle poměru obličeje „tři dvory a pět očí“ jsou binokulární obrazy zachyceny a korespondence mezi šířkou a výškou je vyjádřena takto:
Oblast úst řidiče se při mluvení a zívání výrazně mění. Zde se pozice levého a pravého koutku úst získávají pomocí sítě MTCNN. Poloha levého koutku úst je b1
, a poloha pravého koutku úst je
. Vzdálenost mezi levým a pravým rohem je , šířka obrazu úst je , a výška je , podobně jako u extrakce oblasti oka. Souvislost mezi šířkou a výškou je vyjádřena takto:
3.2.2. Architektura EM-CNN
Po extrakci oblastí očí a úst je nutné vyhodnotit stav očí a úst, aby bylo možné určit, zda jsou otevřené nebo zavřené. Navrhovaná metoda využívá EM-CNN pro rozpoznání stavu očí a úst. Struktura sítě je znázorněna na obrázku 4.

![]()
V reálném prostředí jízdy mají pořízené snímky očí a úst řidiče různé velikosti; velikost vstupního obrazu se tedy upraví na 175 × 175 a dvěma konvolučními fondy se získá mapa rysů 44 × 44 × 56. Zde je velikost konvolučního jádra v konvoluční vrstvě 3 × 3 a velikost kroku je 1. Velikost konvolučního jádra ve sdružené vrstvě je 3 × 3 a velikost kroku je 2. velikost výstupního obrazu a způsobující částečnou ztrátu informace na okrajích obrazu, je před operací konvoluce podél okraje obrazu vyplněna vrstva pixelů. Poté se použijí konvoluční vrstvy 1 × 1, 3 × 3, 5 × 5 a sdružovací vrstva 3 × 3 ke zvýšení adaptability sítě na velikost. Mapa prvků 44 × 44 × 256 se získá prostřednictvím jiného sdružování. Poté, po průchodu zbytkovým blokem, jsou ve zbytkovém bloku tři vrstvy konvoluce a vrstva je sloučena a je výstupem mapa prvků 11 × 11 × 72. Mapa prvků je poté převedena na jednorozměrný vektor v plně propojené vrstvě a počet parametrů je snížen náhodnou deaktivací, aby se zabránilo přeplnění sítě. Nakonec je výsledkem klasifikace (tj. oči jsou otevřené nebo zavřené a ústa jsou otevřená nebo zavřená) výstup softmax.
3.3. Detekce stavu únavy
Když se řidič dostane do stavu únavy, obvykle dochází k řadě fyziologických reakcí, jako je zívání a zavření očí. Podle EM-CNN se získá více stavů očí a úst a únavový stav řidiče se vyhodnotí výpočtem stupně zavření očí PERCLOS a stupně otevření úst POM.
3.3.1. PERCLOS
Parametr PERCLOS udává procento doby zavření oka za jednotku času [30]:
Zde představuje zavřený snímek oka, představuje počet snímků zavřených očí za jednotku času a je celkový počet snímků za jednotku času. Pro určení prahu únavy bylo shromážděno 13 sekvencí video snímků pro testování a výpočet jeho hodnoty. Výsledek ukázal, že když je větší než 0.25, je řidič po dlouhou dobu ve stavu zavřených očí, což lze použít jako indikátor únavy.
3.3.2. POM
představuje procento doby uzavření úst za jednotku času:
Zde označuje snímek s otevřenými ústy, označuje počet snímků otevřených úst za jednotku času a je celkovým počtem snímků za jednotku času. Když je větší než 0.5, lze usoudit, že řidič je ve stavu otevřených úst po dlouhou dobu, což lze také použít jako indikátor únavy. Vyšší hodnoty těchto dvou ukazatelů naznačují vyšší stupeň únavy.
3.3.3. Uznání stavu únavy
Po dokončení předtréninku neuronové sítě je stav únavy identifikován na základě prahu únavy a . Nejprve jsou pomocí MTCNN získány polohy obličeje a hlavních bodů snímku snímku řidiče a extrahována oblast ROI očí a úst. Poté je navrženým EM-CNN hodnocen stav očí a úst. Zde je vypočítán stupeň zavření očí a stupeň otevření úst nepřetržitého snímku a řidič je určen, že je ve stavu únavy, když je dosaženo prahu.
4. Experimentální výsledky
4.1. Popis datové sady
Snímky řidiče použité v této studii poskytla společnost v oblasti informačních technologií s názvem Biteda. Celkem bylo shromážděno 4000 snímků skutečného prostředí jízdy (obrázek 5). Tento dokument se zabývá experimentálními výsledky a rozděluje soubory dat přímo do poměru 3/7. Soubory dat byly rozděleny do čtyř kategorií, tj. otevřené oči (2226 snímků; 1558 tréninkových a 668 testovacích vzorků), zavřené oči (1774 snímků; 1242 tréninkových a 532 testovacích vzorků), otevřená ústa (1996 snímků; 1397 tréninkových a 599 testovacích vzorků ) a zavřená ústa (2004 snímků; 1,403 601 tréninkových a 6 testovacích vzorků). Příklady tréninkových sad jsou uvedeny na obrázku XNUMX. Testovací sady jsou podobné tréninkovým sadám, ale s jinými řidiči.
Tento článek byl publikován jako součást Data Science Blogathonu.
Úvod do systému detekce ospalosti
V dnešní době je ospalost řidičů jednou z hlavních příčin dopravních nehod. Je přirozené, že řidiči, kteří jezdí na dlouhé jízdy, podřimují za volantem. V tomto článku sestavíme systém detekce ospalosti, který řidiče upozorní, jakmile usne.
Ospalost je identifikována pomocí technik založených na vidění, jako je detekce očí, zívání a přikývnutí. Když dojde na zívání a přikyvování, někteří lidé mohou spát bez zívání a přikyvování.
Další metodou je použití fyziologických senzorů, jako jsou biosenzory. Zde jsou nevýhody, že řidič může váhat, zda je nosit, nebo je může zapomenout nosit. Detekce ospalosti pomocí detekce očí je nejlepší ve srovnání se zbývajícími technikami.
požadavky
●Python
●OpenCV: OpenCV je skvělý nástroj pro zpracování obrazu a provádění mnoha úloh počítačového vidění. Jedná se o open-source knihovnu, kterou lze použít k provádění úkolů, jako je detekce obličeje, sledování objektů a mnoho dalších úkolů.
●TensorFlow: Tensorflow je bezplatná knihovna s otevřeným zdrojovým kódem vyvinutá týmem Google Brain pro strojové učení a umělou inteligenci. Tensorflow se zaměřuje zejména na trénink a odvození hlubokých neuronových sítí.
●Keras: Keras je softwarová knihovna s otevřeným zdrojovým kódem a poskytuje rozhraní Pythonu pro umělé neuronové sítě. Keras je uživatelsky přívětivější, protože je to vestavěná python knihovna.
Přenos učení
V tomto projektu použijeme přenosové učení k sestavení modelu. Transfer Learning je metoda strojového učení, kde používáme předem trénovaný model pro nový model se souvisejícím prohlášením o problému.
Například, model, který se používá pro rozpoznávání automobilů, lze použít pro rozpoznávání nákladních vozidel.

Zde se zaměřuje především na poznatky získané při řešení jednoho problému a vztahuje se na jiný, ale související problém.
Metodologie
Metodika tohoto projektu spočívá v tom, že první video je pořízeno webovou kamerou az videa je nejprve detekována tvář pomocí algoritmu Harcascade a poté jsou detekovány oči. Poté použijeme náš model hlubokého učení, který je postaven pomocí přenosového učení, abychom poznali stav oka. Pokud je to otevřené oko, řekne Aktivní a pokud je to zavřené oko, bude to několik sekund kontrolovat a pak řekne, že řidič je ospalý a pípne alarm.
Použijeme Python, OpenCV, TensorFlow a Keras k vybudování systému, který dokáže detekovat zavřené oči řidičů a upozornit je, pokud někdy během jízdy usnou. Pokud má řidič zavřené oči, tento systém okamžitě informuje řidiče. OpenCV, který nyní použijeme, bude monitorovat a shromažďovat snímky řidiče prostřednictvím připojené webové kamery a vkládat je do modelu hlubokého učení a poté model klasifikuje oči řidiče jako ‚otevřené‘ nebo ‚zavřené‘.
Dataset
Pro tento projekt budeme používat datovou sadu MRL Eye. Datový soubor MRL Eye je rozsáhlý soubor dat, který obsahuje snímky lidského oka. Stáhněte si datovou sadu pomocí tohoto odkazu. http://mrl.cs.vsb.cz/eyedataset
Tento datový soubor obsahuje 84898 snímků očí 37 různých osob, z nichž 33 jsou muži a 4 ženy. Obsahuje všechny typy obrázků jako otevřené, zavřené, s brýlemi, bez brýlí a za různých světelných podmínek.
Po stažení rozdělte všechny obrázky na zavřené a otevřené oči do dvou samostatných složek.
Implementace
Nejprve importujte požadované knihovny.
import tensorflow as tf import cv2 import os import matplotlib.pyplot as plt import numpy as np
Čtení všech obrázků v datové sadě
Datadirectory = "mrlEyeDataset2/" Classes = ["Closed_Eyes", "Open_Eyes"] pro kategorii v Classes: cesta = os.path.join(Datadirectory, category) pro img v os.listdir(cesta): img_array = cv2.imread( os.path.join(cesta,img), cv2.IMREAD_GRAYSCALE) backtorgb = cv2.cvtColor(img_array, cv2.COLOR_GRAY2RGB) plt.imshow(img_array, cmap="šedá") plt.show() přerušení přerušení
Změna velikosti obrázku
Změňte velikost všech obrázků na 224 x 224 pro lepší extrakci funkcí.
img_size = 224 new_array = cv2.resize(backtorgb, (img_size, img_size)) plt.imshow(new_array, cmap="gray") plt.show()
Vytváření tréninkových dat
training_Data = [] def create_training_Data(): pro kategorii v Classes: path = os.path.join(Datadirectory, category) class_num = Classes.index(category) # 0 1, pro img v os.listdir(cesta): zkuste: img_array = cv2.imread(os.path.join(cesta, img), cv2.IMREAD_GRAYSCALE) backtorgb = cv2.cvtColor(img_array,cv2.COLOR_GRAY2RGB) new_array = cv2.resize(backtorgb,) trénink_img_Data ([nové_pole,číslo_třídy]) kromě výjimky jako e: předat create_training_Data()
Náhodné promíchání, aby nedošlo k přemontování.
import random random.shuffle(training_Data)
Vytváření polí pro ukládání funkcí a štítků
X = [] y = [] pro funkce,label v training_Data: X.append(features) y.append(label) X = np.array(X).reshape(-1, img_size, img_size, 3)
Importujte knihovny, které jsou nutné k sestavení modelu. Importujte model a změňte poslední plně připojené (fc) vrstvy a vytvořte nový model. Poté zkompilujte model pomocí funkce ztráty binární křížové entropie a adamova optimalizátoru a poté model trénujte na 5 epoch a poté model uložte, abyste nemuseli trénovat znovu a znovu.
importovat tensorflow jako tf z tensorflow importovat keras z importních vrstev tensorflow.keras
model = tf.keras.applications.mobilenet.MobileNet() base_input = model.layers[0].input ##input base_output = model.layers[-4].output Flat_layers = layers.Flatten()(base_output) final_output = vrstvy .Dense(1)(Flat_layers) final_output = layers.Activation('sigmoid')(final_output) new_model = keras.Model(inputs = base_input, outputs = final_output) new_model.compile(loss="binary_crossentropy", optimizer= "adam" , metrics=["accuracy"]) new_model.fit(X,Y, epochs = 5, validation_split = 0.2) ##training new_model.save('my_model.h5') img_array = cv2.imread('mrlEyeDataset/Closed_Eyes/s0001_00080_0_0_0_0_0_01.png', cv2.IMREAD_GRAYSCALE) backtorgb = cv2.cvtColor(img)2CRAGRAY2RYBACK, cvGB_array orgb, (velikost_img, velikost_img)) X_input = np. array(new_array).reshape(2, img_size, img_size, 1) X_input = X_input/3 #normalizing data forecast = new_model.predict(X_input) Detekce a upozornění
Nyní se podívejme na implementaci pro detekci a upozornění. Zde nastavíme časovač na 2 sekundy a 5 snímků za sekundu. Pokud byly oči nepřetržitě zavřené po dobu 2 sekund, znamená to, že pokud model zaznamená nepřetržitě 10 snímků zavřených očí, upozorní řidiče pípnutím zvukového alarmu.
import winsound frekvence = 2500 # Nastavit frekvenci na 2500 trvání = 1500 # Nastavit trvání na 1500 ms == 1.5 s import numpy jako np import cv2 path = "haarcascade_frontalface_default.xml" faceCascade = cv2.CascadeClasscadefrontcassifier.havfacearcadear .xml") cap = cv2.VideoCapture(2) #kontrola, zda je webová kamera otevřena správně, pokud ne cap.isOpened(): cap = cv1.VideoCapture(2) cap.set(cv0.CAP_PROP_FPS, 2) counter = 5 zatímco True : ret,frame = cap.read() eye_cascade = cv0.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml') šedá = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY, eyes = eye_Mult2cascade.detect.detect. 1.1) pro x,y,š,h v očích: roi_grey = šedá[y:y+h, x:x+š] roi_color = rám[y:y+h, x:x+š] cv4.rectangle(snímek , (x,y), (x+š,y+h), (2, 0, 255), 0) oči = eye_cascade.detectMultiScale(roi_gray) if len(eyess) == 2: print("Oči nejsou zjištěno") else: for (ex, ey, ew, eh) in eyes: eyes_roi = roi_color[ey: ey+eh, ex: ex+ew] gray = cv0.cvtColor(frame, cv2.COLOR_BGR2GRAY) if(faceCascade. empty()==False): print("detected") faces = faceCascade.detectMultiScale(grey, 2, 1.1) # Nakreslete obdélník kolem očí pro (x,y,š,v) v obličejích: cv4.rectangle(frame , (x, y), (x+š, y+h), (2, 0, 255), 0) font = cv2.FONT_HERSHEY_SIMPLEX final_image = cv2.resize(eyes_roi, (2)) final_image = np.expand_dims( final_image, axis=224,224) final_image = final_image/0 Predictions = new_model.predict(final_image) if (Predictions>=255.0): status = "Open Eyes" cv0.3.putText(frame, status, (2), font, 150,150, ( 3, 0, 255), 0, cv2.LINE_2) x4,y1,w1,h1 = 1 cv0,0,175,75.rectangle(frame, (x2, y1), (x1 + w1, y1 + h1), (1 ,0,0,0), -1) #Add text cv2.putText(frame, 'Active', (x1 + int(w1/10),y1 + int(h1/2)), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0,255,0 ,2), 10) elif Predpovědi 1: x1,y1,š1,h0,0,175,75 = 2 #Nakreslete obdélník černého pozadí cv1.rectangle(snímek, (x1, y1), (x1 + š1, y1 + h0,0,0), (1), -2) #Přidat text cv1.putText(frame, "Upozornění na spánek . ", (x1 + int(w10/1), y1 + int(h2/2)), cv0.7.FONT_HERSHEY_SIMPLEX, 0,0,255, (2), 0) winsound.Beep(frekvence, trvání) čítač = 2 cv2.imshow ("Detekce ospalosti", snímek) if cv2.waitKey(0) & 2xFF == ord('q'): break cap.release() cvXNUMX.destroyAllWindows() Proč investovat do čističky vzduchu?
Když kód spustíte, otevře webovou kameru a zachytí video a poskytne výstup na základě vašeho zavřeného víčka. Tento systém detekce ospalosti řidičům velmi pomáhá a zabraňuje mnoha dopravním nehodám způsobeným ospalostí. Zatím jsme viděli,
–> Jak používat přenosové učení?
–> Jak postavit model, trénovat model?
–> Jak změnit vrstvy podle našeho prohlášení o problému?
–> Konečně implementace systému detekce ospalosti.
Doufám, že vám to bylo užitečné.
Média uvedená v tomto článku nejsou ve vlastnictví Analytics Vidhya a jsou používána podle uvážení autora.













