Inhaltsverzeichnis
Erstellen Sie Computer Vision-Anwendungen
Pipeless Framework
Erstellen einer Objekterkennungsanwendung
Fazit
Heim Technologie-Peripheriegeräte KI So erstellen Sie in wenigen Minuten eine vollständige Computer-Vision-Anwendung mit nur zwei Python-Funktionen

So erstellen Sie in wenigen Minuten eine vollständige Computer-Vision-Anwendung mit nur zwei Python-Funktionen

Mar 12, 2024 pm 05:07 PM
python 计算机视觉

So erstellen Sie in wenigen Minuten eine vollständige Computer-Vision-Anwendung mit nur zwei Python-Funktionen

Übersetzer |. Li Rui

Rezensent |. Chonglou

In diesem Artikel werden zunächst kurz die grundlegenden Anforderungen von Computer-Vision-Anwendungen vorgestellt. Anschließend wird Pipeless, ein Open-Source-Framework, ausführlich vorgestellt, das eine serverlose Entwicklungserfahrung für Embedded Computer Vision bietet. Abschließend wird eine detaillierte Schritt-für-Schritt-Anleitung bereitgestellt, die zeigt, wie Sie mithilfe einiger Python-Funktionen und eines Modells eine einfache Objekterkennungsanwendung erstellen und ausführen.

Erstellen Sie Computer Vision-Anwendungen

Eine Möglichkeit, „Computer Vision“ zu beschreiben, besteht darin, es als „den Bereich der Bilderkennung und -verarbeitung, der Kameras und algorithmische Techniken nutzt“ zu definieren. Diese einfache Definition befriedigt jedoch möglicherweise nicht vollständig das Verständnis der Menschen für das Konzept. Um ein tieferes Verständnis des Prozesses der Erstellung von Computer-Vision-Anwendungen zu erlangen, müssen wir daher die Funktionalität berücksichtigen, die jedes Subsystem implementieren muss. Der Prozess der Erstellung von Computer-Vision-Anwendungen umfasst mehrere wichtige Schritte, darunter Bilderfassung, Bildverarbeitung, Merkmalsextraktion, Objekterkennung und Entscheidungsfindung. Zunächst werden Bilddaten über eine Kamera oder ein anderes Bilderfassungsgerät erfasst. Die Bilder werden dann mithilfe von Algorithmen verarbeitet, einschließlich Vorgängen wie Rauschunterdrückung, Verbesserung und Segmentierung zur weiteren Analyse. Während der Merkmalsextraktionsphase identifiziert das System wichtige Merkmale im Bild, wie z. B.

Um einen 60-fps-Videostream in Echtzeit zu verarbeiten, muss jedes Bild innerhalb von 16 Millisekunden verarbeitet werden. Dies wird normalerweise durch Multithreading und Multi-Processing erreicht. Manchmal ist es sogar notwendig, mit der Verarbeitung des nächsten Frames zu beginnen, bevor der vorherige abgeschlossen ist, um eine wirklich schnelle Frame-Verarbeitung zu gewährleisten.

Für Modelle der künstlichen Intelligenz stehen mittlerweile glücklicherweise viele hervorragende Open-Source-Modelle zur Verfügung, so dass es in den meisten Fällen nicht nötig ist, ein eigenes Modell von Grund auf zu entwickeln, sondern lediglich die Parameter fein abzustimmen, um den spezifischen Anwendungsfall zu erfüllen. Diese Modelle führen in jedem Frame eine Inferenz durch und führen Aufgaben wie Objekterkennung, Segmentierung, Posenschätzung und mehr aus.

• Inferenzlaufzeit: Die Inferenzlaufzeit ist dafür verantwortlich, das Modell zu laden und effizient auf verschiedenen verfügbaren Geräten (GPU oder CPU) auszuführen.

Um sicherzustellen, dass das Modell während des Inferenzprozesses schnell ausgeführt werden kann, ist die Verwendung einer GPU unerlässlich. GPUs können um Größenordnungen mehr parallele Operationen verarbeiten als CPUs, insbesondere wenn sie große Mengen mathematischer Operationen verarbeiten. Bei der Verarbeitung von Frames müssen Sie den Speicherort berücksichtigen, an dem sich der Frame befindet. Sie können ihn im GPU-Speicher oder im CPU-Speicher (RAM) speichern. Das Kopieren von Bildern zwischen diesen beiden Speichern kann jedoch zu langsameren Vorgängen führen, insbesondere wenn die Bildgröße groß ist. Dies bedeutet auch, dass Speicherauswahl und Datenübertragungsaufwand abgewogen werden müssen, um einen effizienteren Modellinferenzprozess zu erreichen.

Die Multimedia-Pipeline besteht aus einer Reihe von Komponenten, die einen Videostream von einer Datenquelle aufnehmen, ihn in Frames aufteilen und ihn dann als Eingabe für das Modell verwenden. Manchmal können diese Komponenten auch den Videostream für die Weiterleitung modifizieren und rekonstruieren. Diese Komponenten spielen eine Schlüsselrolle bei der Verarbeitung von Videodaten und stellen sicher, dass der Videostream effizient übertragen und verarbeitet werden kann.

• Videostream-Verwaltung: Entwickler möchten möglicherweise, dass Anwendungen Unterbrechungen von Videostreams und Wiederverbindungen widerstehen, Videostreams dynamisch hinzufügen und entfernen, mehrere Videostreams gleichzeitig verarbeiten und vieles mehr können.

Alle diese Systeme müssen erstellt oder in das Projekt integriert werden, und daher muss der Code gepflegt werden. Das Problem besteht jedoch darin, dass Sie am Ende eine große Menge an Code verwalten, der nicht anwendungsspezifisch ist, sondern Subsysteme, die den eigentlichen fallspezifischen Code umgeben.

Pipeless Framework

Um nicht alles von Grund auf neu erstellen zu müssen, können Sie stattdessen das Pipeless-Framework verwenden. Hierbei handelt es sich um ein Open-Source-Framework für Computer Vision, das einige fallspezifische Funktionen ermöglicht und andere Dinge bewältigen kann.

Pipeless Framework unterteilt die Logik der Anwendung in „Stufen“, von denen eine wie eine Mikroanwendung eines einzelnen Modells ist. Eine Phase kann die Vorverarbeitung, das Ausführen von Inferenzen mithilfe der vorverarbeiteten Eingabe und die Nachverarbeitung der Modellausgabe für Maßnahmen umfassen. Sie können dann beliebig viele Schritte zu einer vollständigen Anwendung verketten, auch wenn Sie mehrere Modelle verwenden.

Um die Logik für jede Stufe bereitzustellen, fügen Sie einfach eine anwendungsspezifische Codefunktion hinzu und Pipeless kümmert sich bei Bedarf um den Aufruf. Aus diesem Grund kann Pipeless als Framework betrachtet werden, das eine serverähnliche Entwicklungserfahrung für eingebettetes Computer Vision bietet und einige Funktionen bereitstellt, ohne sich Gedanken über die Notwendigkeit zusätzlicher Subsysteme machen zu müssen.

Eine weitere großartige Funktion von Pipeless ist die Möglichkeit, die Videostream-Verarbeitung durch dynamisches Hinzufügen, Löschen und Aktualisieren von Videostreams über CLI oder REST API zu automatisieren. Sie können sogar eine Neustartrichtlinie festlegen, die angibt, wann die Verarbeitung des Videostreams neu gestartet werden soll, ob er nach einem Fehler neu gestartet werden soll usw.

Um das Pipeless-Framework schließlich bereitzustellen, installieren Sie es einfach auf einem beliebigen Gerät und führen Sie es mit Ihren Codefunktionen aus, sei es in einer virtuellen Cloud-Computing-Maschine oder im Containermodus oder direkt in einem Edge-Gerät wie Nvidia Jetson, Raspberry usw.

Erstellen einer Objekterkennungsanwendung

Hier erfahren Sie ausführlich, wie Sie mit dem Pipeless-Framework eine einfache Objekterkennungsanwendung erstellen.

Der erste Schritt ist die Installation. Das Installationsskript macht die Installation sehr einfach:

Curl https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh | bash
Nach dem Login kopieren

Jetzt muss ein Projekt erstellt werden. Ein Pipeless-Projekt ist ein Verzeichnis, das Phasen enthält. Jede Stufe befindet sich in einem Unterverzeichnis und in jedem Unterverzeichnis wird eine Datei mit Hooks (spezifische Codefunktionen) erstellt. Der für jeden Bühnenordner angegebene Name ist der Bühnenname, der später im Pipeless-Feld angegeben werden muss, wenn Sie diese Bühne für den Videostream ausführen möchten.

pipeless init my-project --template emptycd my-project
Nach dem Login kopieren

Hier weist die leere Vorlage die CLI an, nur das Verzeichnis zu erstellen. Wenn keine Vorlage bereitgestellt wird, fordert die CLI einige Fragen auf, um die Bühne interaktiv zu erstellen.

Wie oben erwähnt, ist es nun notwendig, dem Projekt eine Phase hinzuzufügen. Laden Sie ein Stage-Beispiel von GitHub mit dem folgenden Befehl herunter:

wget -O - https://github.com/pipeless-ai/pipeless/archive/main.tar.gz | tar -xz --strip=2 "pipeless-main/examples/onnx-yolo"
Nach dem Login kopieren


Dadurch wird ein Stage-Verzeichnis onnx-yolo erstellt, das die Anwendungsfunktionen enthält.

Überprüfen Sie dann den Inhalt jeder Stage-Datei, bei der es sich um Anwendungs-Hooks handelt.

Hier ist eine pre-process.py-Datei, die eine Funktion (Hooks) definiert, die einen Frame und eine Szene akzeptiert. Diese Funktion führt einige Vorgänge aus, um die Eingabedaten, die RGB-Frames empfangen, so vorzubereiten, dass sie dem vom Modell erwarteten Format entsprechen. Diese Daten werden zu „frame_data['interence_input']“ hinzugefügt, den Daten, die Pipeless an das Modell übergibt.

def hook(frame_data, context):frame = frame_data["original"].view()yolo_input_shape = (640, 640, 3) # h,w,cframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)frame = resize_rgb_frame(frame, yolo_input_shape)frame = cv2.normalize(frame, None, 0.0, 1.0, cv2.NORM_MINMAX)frame = np.transpose(frame, axes=(2,0,1)) # Convert to c,h,winference_inputs = frame.astype("float32")frame_data['inference_input'] = inference_inputs... (some other auxiliar functions that we call from the hook function)
Nach dem Login kopieren

Es gibt auch die Datei „process.json“, die angibt, welche Pipeless-Inferenzlaufzeit (in diesem Fall ONNX-Laufzeit) verwendet werden soll, wo sich das zu ladende Modell befindet und einige seiner optionalen Parameter, wie z als zu verwendender Ausführungsanbieter, d. h. CPU, CUDA, TensorRT usw.

{ "runtime": "onnx","model_uri": "https://pipeless-public.s3.eu-west-3.amazonaws.com/yolov8n.onnx","inference_params": { "execution_provider": "tensorrt" }}
Nach dem Login kopieren

Schließlich definiert die Datei post-process.py eine Funktion ähnlich der in pre-process.py. Dieses Mal akzeptiert es die Inferenzausgabe, die Pipeless in frame_data["inference_output"] speichert, und führt den Vorgang des Parsens dieser Ausgabe in einen Begrenzungsrahmen durch. Später zeichnet es den Begrenzungsrahmen auf den Rahmen und weist schließlich den geänderten Rahmen Frame_data['modified'] zu. Auf diese Weise leitet Pipeless den bereitgestellten Videostream weiter, jedoch mit geänderten Frames, einschließlich Begrenzungsrahmen.

def hook(frame_data, _):frame = frame_data['original']model_output = frame_data['inference_output']yolo_input_shape = (640, 640, 3) # h,w,cboxes, scores, class_ids =  parse_yolo_output(model_output, frame.shape, yolo_input_shape)class_labels = [yolo_classes[id] for id in class_ids]for i in range(len(boxes)):draw_bbox(frame, boxes[i], class_labels[i], scores[i])frame_data['modified'] = frame... (some other auxiliar functions that we call from the hook function)
Nach dem Login kopieren

Der letzte Schritt besteht darin, Pipeless zu starten und einen Videostream bereitzustellen. Um Pipeless zu starten, führen Sie einfach den folgenden Befehl im Verzeichnis „my-project“ aus:

pipeless start --stages-dir .
Nach dem Login kopieren

Nach der Ausführung wird der Videostream von der Webcam (v4l2) bereitgestellt und die Ausgabe direkt auf dem Bildschirm angezeigt. Es ist zu beachten, dass eine Liste der Phasen bereitgestellt werden muss, die der Videostream nacheinander ausführt. In diesem Fall ist es nur die Onnx-Yolo-Phase:

pipeless add stream --input-uri "v4l2" --output-uri "screen" --frame-path "onnx-yolo"
Nach dem Login kopieren

Fazit

Das Erstellen einer Computer-Vision-Anwendung ist eine komplexe Aufgabe, da viele Faktoren und Subsysteme um sie herum implementiert werden müssen. Mit einem Framework wie Pipeless dauert die Inbetriebnahme nur wenige Minuten, sodass Sie sich auf das Schreiben von Code für bestimmte Anwendungsfälle konzentrieren können. Darüber hinaus sind Pipeless-„Stufen“ in hohem Maße wiederverwendbar und leicht zu warten, sodass die Wartung einfach ist und sehr schnell wiederholt werden kann.

Wenn Sie an der Entwicklung von Pipeless teilnehmen möchten, können Sie dies über das GitHub-Repository tun.

Original -Titel: Erstellen Sie eine komplette Computer -Vision -App in wenigen Minuten mit nur zwei Python -Funktionen, Autor: Miguel Angel Cabrera

link: https: //www.php.cn/link/E26DBB5B1843BF566EA7EC7F3333333333333333325C4

🎜 🎜 🎜🎜🎜

Das obige ist der detaillierte Inhalt vonSo erstellen Sie in wenigen Minuten eine vollständige Computer-Vision-Anwendung mit nur zwei Python-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

MySQL kann nach dem Herunterladen nicht installiert werden MySQL kann nach dem Herunterladen nicht installiert werden Apr 08, 2025 am 11:24 AM

Die Hauptgründe für den Fehler bei MySQL -Installationsfehlern sind: 1. Erlaubnisprobleme, Sie müssen als Administrator ausgeführt oder den Sudo -Befehl verwenden. 2. Die Abhängigkeiten fehlen, und Sie müssen relevante Entwicklungspakete installieren. 3. Portkonflikte müssen Sie das Programm schließen, das Port 3306 einnimmt, oder die Konfigurationsdatei ändern. 4. Das Installationspaket ist beschädigt. Sie müssen die Integrität herunterladen und überprüfen. 5. Die Umgebungsvariable ist falsch konfiguriert und die Umgebungsvariablen müssen korrekt entsprechend dem Betriebssystem konfiguriert werden. Lösen Sie diese Probleme und überprüfen Sie jeden Schritt sorgfältig, um MySQL erfolgreich zu installieren.

Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Die MySQL -Download -Datei ist beschädigt und kann nicht installiert werden. Reparaturlösung Apr 08, 2025 am 11:21 AM

Die MySQL -Download -Datei ist beschädigt. Was soll ich tun? Wenn Sie MySQL herunterladen, können Sie die Korruption der Datei begegnen. Es ist heutzutage wirklich nicht einfach! In diesem Artikel wird darüber gesprochen, wie dieses Problem gelöst werden kann, damit jeder Umwege vermeiden kann. Nach dem Lesen können Sie nicht nur das beschädigte MySQL -Installationspaket reparieren, sondern auch ein tieferes Verständnis des Download- und Installationsprozesses haben, um zu vermeiden, dass Sie in Zukunft stecken bleiben. Lassen Sie uns zunächst darüber sprechen, warum das Herunterladen von Dateien beschädigt wird. Dafür gibt es viele Gründe. Netzwerkprobleme sind der Schuldige. Unterbrechung des Download -Prozesses und der Instabilität im Netzwerk kann zu einer Korruption von Dateien führen. Es gibt auch das Problem mit der Download -Quelle selbst. Die Serverdatei selbst ist gebrochen und natürlich auch unterbrochen, wenn Sie sie herunterladen. Darüber hinaus kann das übermäßige "leidenschaftliche" Scannen einer Antiviren -Software auch zu einer Beschädigung von Dateien führen. Diagnoseproblem: Stellen Sie fest, ob die Datei wirklich beschädigt ist

Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Apr 08, 2025 pm 06:03 PM

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

So optimieren Sie die Datenbankleistung nach der MySQL -Installation So optimieren Sie die Datenbankleistung nach der MySQL -Installation Apr 08, 2025 am 11:36 AM

Die MySQL -Leistungsoptimierung muss von drei Aspekten beginnen: Installationskonfiguration, Indexierung und Abfrageoptimierung, Überwachung und Abstimmung. 1. Nach der Installation müssen Sie die my.cnf -Datei entsprechend der Serverkonfiguration anpassen, z. 2. Erstellen Sie einen geeigneten Index, um übermäßige Indizes zu vermeiden und Abfrageanweisungen zu optimieren, z. B. den Befehl Erklärung zur Analyse des Ausführungsplans; 3. Verwenden Sie das eigene Überwachungstool von MySQL (ShowProcessList, Showstatus), um die Datenbankgesundheit zu überwachen und die Datenbank regelmäßig zu sichern und zu organisieren. Nur durch kontinuierliche Optimierung dieser Schritte kann die Leistung der MySQL -Datenbank verbessert werden.

Braucht MySQL das Internet? Braucht MySQL das Internet? Apr 08, 2025 pm 02:18 PM

MySQL kann ohne Netzwerkverbindungen für die grundlegende Datenspeicherung und -verwaltung ausgeführt werden. Für die Interaktion mit anderen Systemen, Remotezugriff oder Verwendung erweiterte Funktionen wie Replikation und Clustering ist jedoch eine Netzwerkverbindung erforderlich. Darüber hinaus sind Sicherheitsmaßnahmen (wie Firewalls), Leistungsoptimierung (Wählen Sie die richtige Netzwerkverbindung) und die Datensicherung für die Verbindung zum Internet von entscheidender Bedeutung.

Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Apr 08, 2025 pm 09:39 PM

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

See all articles