m基于Yolov2深度学习网络的驾驶员打电话行为预警系统matlab仿真,带GUI界面

发布时间 2023-12-25 14:54:09作者: 我爱C编程

1.算法仿真效果

matlab2022a仿真结果如下:

 

2.算法涉及理论知识概要

       随着汽车数量的不断增加,交通安全问题日益突出。其中,驾驶员手持电话行为是导致交通事故的一个重要原因。为了降低这类事故的发生率,本文提出了一种基于Yolov2深度学习网络的驾驶员手持电话行为预警系统。该系统能够实时监测驾驶员的驾驶行为,并在发现驾驶员手持电话时发出预警信号,提醒驾驶员集中注意力,确保行车安全。

 

2.1Yolov2

 

      Yolov2是一种目标检测算法,它采用了一种称为卷积神经网络(CNN)的深度学习模型。该模型可以自动学习和提取图像特征,从而实现对图像中目标物体的检测。在人脸检测方面,Yolov2可以自动学习和提取人脸特征,从而在图像中准确检测出人脸位置。

 

       Yolov2算法的核心思想是采用一种称为“锚点”(anchor)的方法,通过对不同大小和宽高比的人脸进行建模,从而实现对人脸的检测。算法首先在图像中预设一些锚点,然后通过计算锚点与真实人脸的相似度,确定是否存在人脸以及人脸的位置。

 

Yolov2模型的数学公式主要包括以下几个部分:

 

1)锚点计算:对于每个锚点,计算其与真实人脸的相似度,通常采用基于卷积神经网络的深度学习方法进行计算。公式如下:

 

         A(i,j) = f(I,i,j) 1

 

       其中,A(i,j)表示锚点(i,j)与真实人脸的相似度,f(I,i,j)表示锚点(i,j)与图像I中的人脸进行比较的计算结果。

 

2)人脸位置回归:根据锚点的相似度,采用非极大值抑制(NMS)等方法回归出人脸位置。公式如下:

 

         B = argmax A * I 2

 

其中,B表示回归出的人脸位置,A表示锚点与真实人脸的相似度矩阵,I表示图像。

 

2.2 系统架构与工作原理

         本系统主要由三部分组成:图像采集模块、Yolov2深度学习网络模块和预警输出模块。具体工作原理如下:

 

       图像采集模块:通过车载摄像头实时采集驾驶员的面部图像,并将图像传输给Yolov2深度学习网络模块进行处理。仿真过程中,我们拍摄测试图片进行测试。

       Yolov2深度学习网络模块:该模块是本系统的核心部分,主要负责对输入的面部图像进行特征提取和目标检测。具体而言,该模块首先使用卷积神经网络(CNN)对输入的面部图像进行特征提取,然后使用Yolov2算法对提取的特征进行目标检测,判断是否存在驾驶员手持电话的行为。

        预警输出模块:当Yolov2深度学习网络模块检测到驾驶员手持电话的行为时,该模块会发出预警信号,提醒驾驶员集中注意力。预警信号可以通过多种方式输出,例如文字提示,声音、灯光等。在GUI界面上,通过文字提示。

 

3.MATLAB核心程序

 

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global im;
global Predicted_Label;
cla (handles.axes1,'reset')
 
axes(handles.axes1);
set(handles.edit2,'string',num2str(0));
 
 
[filename,pathname]=uigetfile({'*.bmp;*.jpg;*.png;*.jpeg;*.tif'},'选择一个图片','F:\test');
str=[pathname filename];
% 判断文件是否为空,也可以不用这个操作!直接读入图片也可以的
% im = imread(str);
% imshow(im)
if isequal(filename,0)||isequal(pathname,0)
    warndlg('please select a picture first!','warning');
    return;
else
    im = imread(str);
    imshow(im);
end
 
 
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% global im;
%  
% 
% 
% [Predicted_Label, Probability] = classify(net, II);
% imshow(im);
global im;
global Predicted_Label;
 
 
load model.mat
img_size= [224,224];
 
 
axes(handles.axes1);
 
I               = imresize(im,img_size(1:2));
[bboxes,scores] = detect(detector,I,'Threshold',0.15);
flag=0;
if ~isempty(bboxes) % 如果检测到目标
    [Vs,Is] = max(scores);
    flag    = 1;
    I       = insertObjectAnnotation(I,'rectangle',bboxes(Is,:),Vs,LineWidth=2);% 在图像上绘制检测结果
end
imshow(I)