Objekterkennung und Raspberry Pi Zero W

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Guten Morgen an alle,


    ich bin ehrlich gesagt aktuell ein wenig verzweifelt, da ich bei meinem Problem nicht weiter komme.


    ich möchte gerne mit dem Raspberry Pi Zero W (ARMv6) und dem zugehörigen Kamera Modul einen Versuchsaufbau machen, bei dem ich Schrauben einmal auf Vollständig kein prüfe ( Anzahl Schrauben) und dann ob Schrauben an den richtigen Postionen angebracht sind. Die Position der Schrauben soll anhand von Deep learning (google ki) erlernt werden. Also geht es hier um eine Nominale und Ordinalen Darstellung. Ich hab mit Hilfe etlicher Skripts und Vorlagen bzw. Anleitungen versucht das zum laufen zu bringen, habe aber seit 4 tagen und über 35 Stunden Arbeit das Problem, dass Opencv, Python, Tensorflow oder numpy immer Probleme machen und ich Fehlermeldungen bekomme, so dass diese nicht ausführbar sind. In einigen Foren steht, dass solche Projekte mit dem Zero W nicht realisierbar sind.


    Meine Fragen:

    1. Ist aufgrund dem ARMv6 (oder andere Gründe) so ein Projekt nicht realisierbar?

    2.Wenn es doch realisierbar wäre, wie würdet ihr vorgehen. Ich kann auch die Fehler die mir jedes mal angezeigt werden zeigen, wenn es doch realisierbar wäre.


    Seit mir nicht böse, ich beschäftige mich seit 1 Monat erst mit dem Raspberry Pi und der Umgebung. Falls ich etwas falsch ausgedrückt habe, korrigiert mich.


    Ich bedanke mich bei euch :danke_ATDE:

  • Moinsen,

    Mit der Single Core CPU und dem 512 MB RAM, abzüglich GPU MEM der auch für das Kameramodul benötigt wird, sind die technischen Grenzen sehr eng.
    Dabei hängt es nicht nur davon ab, mit welcher Auflösung das Basisfoto entsteht, sondern auch wie auf Grund der Konstrastwerte ( Beleuchtungsfrage ) eine solche Erkennung überhaupt sicher möglich ist. Silberne Schraubenköpfe auf einer metallisch blanken Oberfläche sind eher schwer auszumachen. Dann lieber, wenn es auf Grund der Materialstruktur möglich ist, und die Schraubenlöcher keine Sack- sondern Durchgangsbohrungen sind, nach dem Prinzip einer Durchlichteinheit das Prüfobjekt mit einer kontrastreichen Hintergrundfarbe als solches selber von unten Durchleuchten.
    Vielleicht kannst du mal paar Bilder von den Testobjekten Hochladen, dass man von diesen Prozess einen besseren Eindruck bekommt. Danke.

  • Franky07 Danke für deine sehr schnelle Antwort!

    Die Schrauben sind relativ egal, es müssen einfach nur Schrauben sein, um das demonstrieren zu können.

    Mein Problem liegt jedoch bei der Realisierung des Projektes.

  • Hallo,


    welche Fehlermelfungen bekommst du dann? Kannst du die hier posten? Wenn ja bitte den vollen Stack Trace der Fehlermeldung, nicht nur die letzte Zeile.


    Muss du zwingend eine Raspi Zero benutzen? Wie Franky07 ja schon sehr gut erklärt ist, ist das nicht unmöglich, aber hart am Limit. Den Prozessor sehe ich weniger als Problem (sofern du nicht ultraschnell messen musst), aber im RAM.


    Tensorflow Lite läuft jedenfalls auf dem Raspi.


    Gruß, noisefloor

  • Moinsen,


    Vereinfacht gesagt ist es einfacher ein durchgehendes Loch was von unten beleuchtet und durchgestrahlt wird zu finden, als ein Objekt zu erkennen, was in einem nicht durchgehenden Loch steckt, und wo der Kontrastunterschied zwischen "Nicht durchgängigen Loch" mit ähnlichem Grund und dem selben Loch mit einem Deckel ( Schraube ) versehen ist.

    Das Durchlichtprinzip zB grüne LEDs unten, um die offenen Löcher sichtbar zu machen geht einfacher auszuwerten als eine bestimmt Objektstruktur erkennen und zählen zu wollen.

    Franky

  • Hi Franky, leider muss es eine Objektstruktur sein, um das Verhältnis zur Industrie beizubehalten, da es ein Projekt für eine Arbeit ist.

  • Hallo,


    bitte Fehlermeldungen _nicht_ als Screenshot hier reinstellen, weil das echt mühsam und schlecht lesbar ist. Bitte die Fehlermeldung in einen Codeblock kopieren und posten.


    Gruß, noisefloor

  • Hi noisefloor


    Code
    raspberrypi:~ $ sudo apt-get install -y libatlas-base-dev libhdf5-dev libc-ares-dev libeigen3-dev build-essential libsdl-ttf2.0-0 python-pygame festival python3-h5py
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    Package python-pygame is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    E: Package 'python-pygame' has no installation candidate



    das ist die erste. Python ist schon installiert.

  • Hallo,


    `python-pygame`würde das Python 2 Modul von pygame installieren. Python 2 ist aber seit dem 1.1.2020 ohne Support und du wirst ziemlich sicher Python 3 einsetzen. Ersetzt das mal durch `python3-pygame`.


    Gruß, noisefloor

  • Hi noisefloor ,

    hat super geklappt.


    Jetzt kommt das hier :

    Code
    raspberrypi:~ $ cd ~
    git clone --depth 1 https://github.com/adafruit/rpi-vision.git
    cd rpi-vision
    python3 -m virtualenv -p $(which python3) .venv
    source .venv/bin/activate
    fatal: destination path 'rpi-vision' already exists and is not an empty directory.
    /home/raspberry/miniconda3/bin/python3: No module named virtualenv
    bash: .venv/bin/activate: No such file or directory

    und in den nächsten Schritten fällt mir schon auf, dass die Codes auch Fehlerhaft sein werden :


    Code
    wget https://raw.githubusercontent.com/PINTO0309/Tensorflow-bin/master/tensorflow-2.3.1-cp37-none-linux_armv7l_download.sh
    chmod a+x ./tensorflow-2.3.1-cp37-none-linux_armv7l_download.sh
    ./tensorflow-2.3.1-cp37-none-linux_armv7l_download.sh
    pip3 install --upgrade setuptools
    pip3 install tensorflow-*-linux_armv7l.whl
    pip3 install -e .

    da ich armv6l habe, kann er das nicht runterladen, nach einer mit armv6l bin ich leider nicht fündig geworden.

    Edited once, last by F.Om21 ().

  • Hallo,


    hat das einen Grund, dass du Miniconda bzw. Anaconda als Python Distribution statt das Python, was der Raspi an Bord hat, nutzt? Normalerweise gibt es unter Linux ziemlich wenig Gründe, Anaconda / Miniconda zu nutzen. Zumal es die Hilfe von extern ziemlich erschwert.


    Hast du Miniconda so installiert, dass es das Python 3, was der Raspi an Bord hat, ersetzt? Das wäre... nicht so gut.


    Um ein Virtual Environment mit Bordmitteln (=ohne Anaconda) anzulegen musst du das Paket `python3-venv` installieren.


    Tensorflow lite ist soweit ich weiß bei Raspberry Pi OS auch aus den Paketquellen installierbar.


    Generelle Frage: verstehst du, was du da installierst? Also weißt du z.B., was ein virtual environment für Python ist und wie man es nutzt? Das ganze ist auf einem Level, der nicht wirklich schwierig ist, aber ohne Verständnis und nur mir Copy & Paste kommst du da nicht wirklich weit. Gleiches gilt für Anaconda / Miniconda.


    Gruß, noisefloor

  • Habs mal mit dem Pi4 probiert, der in der Anleitung gefordert wird, und komme bis:

    Code
    wget https://raw.githubusercontent.com/PINTO0309/Tensorflow-bin/master/tensorflow-2.3.1-cp37-none-linux_armv7l_download.sh
    --2022-12-01 10:55:13--  https://raw.githubusercontent.com/PINTO0309/Tensorflow-bin/master/tensorflow-2.3.1-cp37-none-linux_armv7l_download.sh
    Auflösen des Hostnamens raw.githubusercontent.com (raw.githubusercontent.com)… 185.199.110.133, 185.199.108.133, 185.199.111.133, ...
    Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443 … verbunden.
    HTTP-Anforderung gesendet, auf Antwort wird gewartet … 404 Not Found
  • Hi noisefloor ,


    wie gesagt, befass ich mich damit erst seit ungefähr einem Monat.

    Und Ich nutze die Anleitung, die ich oben angeben habe

    Hallo noisefloor, nein nicht zwingend, aber eilig, müsste mir dann schnell ein anderes Modell beschaffen. Ich geh mal kurz alles nochmal durch und mache einfach mal screenshoots. Ich nutze als Anleitung : https://github.com/MKS84/Objek…ng-TensorFlow-RaspberryPi , vielleicht hilft das ein wenig weiter.


    Danke für deine Hilfe


    Gruß

  • hi fred0815 , das heisst die Anleitung ist für die Katz?


    Gibt es denn eine für das Projekt, was ich beschrieben habe ? Eine die auch funktioniert

  • Hallo,

    Und Ich nutze die Anleitung, die ich oben angeben habe

    Ja, aber in der Anleitung kommt die Installation von Anaconda / Miniconda nicht vor...


    Die Zeile /home/raspberry/miniconda3/bin/python3 in der Ausgabe oben lässt aber stark vermuten, dass Miniconda im Spiel ist und genutzt wird. Per se nicht schlimm im Sinne von kein No Go. Aber es ist essentiell wichtig zu wissen, ob du nun das Python, was Raspberry Pi OS an Bord hat, nutzt oder das aus Anaconda / Miniconda oder sogar das Python aus Anaconda / Miniconda zum Default Python gemacht hast. Weil davon abhängt, auf welchem Weg welches Paket zu installieren ist.


    Bzgl. Tensorflow: nach meinem Verständnis läuft "nur" Tensorflow Lite auf dem Pi Zero, Tensorflow nicht. Was auch immer der Unterschied ist, auf dem Sektor habe ich auch wenig Ahnung.


    Gruß, noisefloor

  • noisefloor danke für deine Hilfe. Welche Möglichkeit würde sich denn unabhängig davon noch bieten ?

    Ich möchte einmal die Anzahl an Schrauben mit Hilfe der Kamera ermitteln, dann möchte ich auch die Position der Schrauben auf Richtigkeit prüfen mit Hilfe von Deep/Machinelearning

  • Hallo,


    vergiß mal für den Moment dein eigentliches Problem. Solang dein Raspberry Pi Zero in einem dir nicht näher bekannten Zustand ist, was Python angeht, brauchst du über das eigentliche Problem gar nicht erst nachdenken.


    Wäre es für die eine Möglichkeit, mit einem frisch installiertem Betriebssystem zu starten? Also neue SD Karte mit dem aktuellen Raspberry Pi OS für den Pi Zero vorbereiten und davon booten.


    Und _musst_ du Tensorflow nehmen oder geht auch Tensorflow Lite?


    Gruß, noisefloor

  • noisefloor , das ist alles kein Problem, ich hab in den letzen tagen 10 mal das Betriebssystem aufgesetzt . Ich muss nichts davon nehmen, ich bin nur darauf gestoßen, da diese auch Objekte erkennt und angelernt werden kann. Wenn es andere Möglichkeiten und opensource gibt, bin ich sehr offen dafür.