mMatlab-Simulation des Katzengesichtserkennungs- und Katzenaugenpositionierungssystems basierend auf dem Faster-RCNN-Netzwerk mit GUI-Schnittstelle

Inhaltsverzeichnis

1. Algorithmussimulationseffekt

2. Zusammenfassung des theoretischen Wissens über Algorithmen

2.1. Faster-RCNN-Netzwerkprinzip

2.1.1 RPN-Netzwerk

2.1.2 Schnelles R-CNN-Netzwerk

2.1.3 NMS

2.2. Implementierungsmethode zur Katzengesichtserkennung und Katzenaugenpositionierung

3. MATLAB-Kernprogramm

4. Besorgen Sie sich die vollständige Algorithmuscodedatei


1. Algorithmussimulationseffekt

Die Ergebnisse der Matlab2022a-Simulation lauten wie folgt:

2. Zusammenfassung des theoretischen Wissens über Algorithmen

       Als beliebtes Haustier gibt es im Internet zahlreiche Bilder von Katzen. Die genaue Erkennung und Positionierung von Katzengesichtern und -augen hat einen breiten Anwendungswert bei der Erkennung von Haustieren, der Emotionsanalyse und anderen Bereichen. Aufgrund der Vielfalt der Gesichter und Augen von Katzen und der Interferenz komplexer Hintergründe ist es jedoch mit herkömmlichen Bildverarbeitungsmethoden oft schwierig, optimale Ergebnisse zu erzielen. Daher schlägt dieser Artikel ein Katzengesichtserkennungs- und Katzenaugenpositionierungssystem vor, das auf dem Faster-RCNN-Netzwerk basiert, um die Genauigkeit und Robustheit der Katzengesichts- und Katzenaugenerkennung zu verbessern.

2.1. Faster-RCNN-Netzwerkprinzip

       Faster R-CNN ist ein auf Deep Learning basierender Zielerkennungsalgorithmus mit hoher Genauigkeit und Effizienz, der häufig bei Zielerkennungsaufgaben in verschiedenen Szenarien eingesetzt wird. Im Folgenden stellen wir die Prinzipien und mathematischen Formeln des Branderkennungssystems basierend auf dem Faster R-CNN-Netzwerk im Detail vor. Faster R-CNN ist ein Deep-Learning-Zielerkennungsalgorithmus, der auf dem Region Proposal Network (RPN) und Fast R-CNN basiert. Der Algorithmus besteht hauptsächlich aus zwei Teilen: dem RPN-Netzwerk und dem Fast R-CNN-Netzwerk.

2.1.1 RPN-Netzwerk


       Das RPN-Netzwerk ist ein End-to-End-Zielerkennungsalgorithmus, der auf einem Faltungs-Neuronalen Netzwerk basiert. Es kann Kandidatenregionen (Regionsvorschläge) generieren und das Faltungs-Neuronale Netzwerk verwenden, um Merkmale aus den Kandidatenregionen zu extrahieren. Das RPN-Netzwerk generiert über ein Schiebefenster Kandidatenregionen unterschiedlicher Größe und klassifiziert und regressiert jede Kandidatenregion, um zu bestimmen, ob sie das Ziel enthält, sowie den spezifischen Standort und die Größe des Ziels.

Die mathematische Formel des RPN-Netzwerks kann wie folgt ausgedrückt werden:

RPN(x, y, w, h, cls) = [max(0, B1 + exp(B2 × (x – B3) × (y – B4)))] × w × h × cls

Unter diesen repräsentiert (x, y, w, h) die Position und Größe des Kandidatenbereichs und cls die Kategoriebewertung des Kandidatenbereichs. B1, B2, B3 und B4 sind die Parameter des RPN-Netzwerks und können durch Training erhalten werden.

2.1.2 Schnelles R-CNN-Netzwerk


       Das Fast R-CNN-Netzwerk ist ein Zielerkennungsalgorithmus, der auf einem Faltungs-Neuronalen Netzwerk basiert. Es kann Merkmale aus jedem Bereich im Eingabebild extrahieren und die Zielerkennungsergebnisse ausgeben. Das Fast R-CNN-Netzwerk besteht hauptsächlich aus einem Faltungs-Neuronalen Netzwerk, einem Region-Proposal-Netzwerk und einer vollständig verbundenen Schicht. Das Faltungs-Neuronale Netzwerk wird zum Extrahieren von Merkmalen des Eingabebildes verwendet, das Regionsvorschlagsnetzwerk wird zum Generieren von Kandidatenregionen verwendet und die vollständig verbundene Schicht wird zum Klassifizieren und Regressieren der Kandidatenregionen verwendet, um den spezifischen Standort und die Größe des Ziels zu bestimmen.

Die mathematische Formel von Faster R-CNN kann wie folgt ausgedrückt werden:

Schnelleres R-CNN = (RPN + Schnelles R-CNN) + NMS

        Unter diesen sind RPN und Fast R-CNN die beiden Hauptkomponenten. NMS (Non-Maximum Suppression) ist eine Nachverarbeitungsmethode zum Entfernen redundanter Erkennungsrahmen.

Die mathematische Formel des Fast R-CNN-Netzwerks kann wie folgt ausgedrückt werden:

Schnelles R-CNN(x, y, w, h, cls) = [max(0, B1 + exp(B2 × (x – B3) × (y – B4)))] × w × h × cls + B5

Unter diesen repräsentiert (x, y, w, h) die Position und Größe des Ziels und cls repräsentiert die Kategoriebewertung des Ziels. B1, B2, B3, B4 und B5 sind die Parameter des Fast R-CNN-Netzwerks und können durch Training erhalten werden.

2.1.3 NMS


Die mathematische Formel von NMS kann wie folgt ausgedrückt werden:

NMS(IoU) = argmax{cls} (IoU < Schwellenwert)

     ​ Unter diesen stellt IoU das Schnittverhältnis des Erkennungsrahmens und des realen Rahmens dar, cls stellt die Kategoriebewertung des Erkennungsrahmens dar und Threshold ist der Schwellenwert des Schnittverhältniss. Der NMS-Algorithmus sortiert die Erkennungsrahmen nach der Größe der IoU und wählt den Erkennungsrahmen mit der kleinsten IoU als endgültiges Erkennungsergebnis aus.

        Das auf dem Faster R-CNN-Netzwerk basierende Branderkennungssystem ist eine Methode, die Deep-Learning-Algorithmen zur Branderkennung verwendet und eine hohe Genauigkeit und Effizienz aufweist. Der Kern des Systems ist der Faster R-CNN-Algorithmus, der hauptsächlich aus dem RPN-Netzwerk und dem Fast R-CNN-Netzwerk besteht. Er kann Merkmale aus jedem Bereich im Eingabebild extrahieren und Zielerkennungsergebnisse ausgeben.
 

2.2. Implementierungsmethode zur Katzengesichtserkennung und Katzenaugenpositionierung

      Um eine Katzengesichtserkennung und Katzenaugenpositionierung zu erreichen, verwenden Sie zunächst eine große Anzahl von Katzengesichts- und Katzenaugenbildern, um Faster-RCNN vorab zu trainieren, damit es die Merkmalsdarstellung von Katzengesichtern und Katzenaugen lernen kann. Basierend auf den Eigenschaften von Katzengesichtern und Katzenaugen werden dann spezifische Ankerkastengrößen und -proportionen entworfen, um Katzengesichter und Katzenaugen unterschiedlicher Größe und Form aufzunehmen.

       In der Phase der Katzengesichtserkennung wird das zu erkennende Bild in das vorab trainierte Faster-RCNN-Netzwerk eingegeben und durch die Vorwärtsausbreitung des Netzwerks wird die Merkmalsdarstellung des Kandidatenbereichs erhalten. Anschließend wird RPN verwendet, um Zielkandidatenbereiche zu generieren. Die Kandidatenbereiche werden klassifiziert und einer Regression unterzogen, um die Position und Größe des Katzengesichts zu bestimmen.

       In der Katzenaugen-Positionierungsphase wird für jeden erkannten Katzengesichtsbereich die Merkmalsdarstellung des Faster-RCNN-Netzwerks weiter verwendet, um die Katzenaugen zu lokalisieren. Zunächst wird entsprechend der Position und Größe des Katzengesichtsbereichs ein Unterbild mit den Augen der Katze zugeschnitten. Anschließend wird das Teilbild in den vorab trainierten Katzenaugen-Locator eingegeben und die Position des Katzenauges durch Regression bestimmt.

3. MATLAB-Kernprogramm

% --- 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;
load mat\net1.mat
In_layer_Size   = [224 224 3];
I               = im;
I               = imresize(I,In_layer_Size(1:2));
[bboxes,scores] = detect(detector1,I);
[Vs,Is] = max(scores);

if isempty(bboxes)==0
I1              = insertObjectAnnotation(I,'rectangle',bboxes(Is,:),Vs);
axes(handles.axes2);
imshow(I1)
text(160,20,'检测到猫脸');
set(handles.edit2,'string','有猫脸');
set(handles.edit5,'string',num2str(Vs));
else

I1              = I;
axes(handles.axes2);
imshow(I1)
text(160,20,'未检到猫脸');
set(handles.edit2,'string','无猫脸');
set(handles.edit5,'string',num2str(0));
end
 

load mat\net2.mat
In_layer_Size   = [224 224 3];
I               = im;
I               = imresize(I,In_layer_Size(1:2));
[bboxes2,scores] = detect(detector2,I);
[Vs,Is] = max(bboxes2);

N = length(bboxes2);

bboxes2
if isempty(bboxes2)==0

  [index_km,center_km]=kmeans(bboxes2(:,1:2),2);

 

bboxes3(1,:) = [center_km(1,:),bboxes2(1,3:end)];
bboxes3(2,:) = [center_km(2,:),bboxes2(2,3:end)];


I2              = insertObjectAnnotation(I1,'rectangle',bboxes3,scores(1:2),'color','cyan');
axes(handles.axes2);
imshow(I2)
else

I2              = I1;
axes(handles.axes2);
imshow(I2)
end
0Y_009m

4. Besorgen Sie sich die vollständige Algorithmuscodedatei

IN

おすすめ

転載: blog.csdn.net/hlayumi1234567/article/details/134544544
おすすめ