Computer-Vision-Lab: Pixel, Schwellenwerte und Objekte zählen in JupyterLab

Dieses Lab gibt jeder lernenden Person ein eigenes JupyterLab, in dem die Python-Bibliotheken für Bilder schon installiert sind: Pillow zum Öffnen und Verändern von Bildern, NumPy für die Zahlen und scikit-image für Kanten, Beschriften und Mustersuche. Der Arbeitsordner enthält fünf Bilder, die das Lab selbst zeichnet, Münzen, Formen, eine Straße, einen Seitenscan und einen Grauverlauf, dazu ein Start-Notebook und kurze Skripte, jeweils mit einer Idee.

Es ist kein Angriffs-Lab. Keine Kopie hat einen Weg ins Internet oder zu anderen Lernenden, also kann nichts hineingeladen werden und nichts darin jemand anderen erreichen. Es lehrt die Ideen unter der Computer Vision mit einfachen Pixeln, ohne neuronale Netze, und es hat kein OpenCV.

Was die Lernenden lernen

Dass ein Bild ein Raster aus Zahlen ist: seine Größe, sein Modus und die Werte einzelner Pixel. Dann Farbe in Grau umwandeln und zählen, wie viele Pixel in jeden Bereich fallen, einen Schwellenwert wählen, der Dunkel von Hell trennt, und sehen, dass eine Stufe neun Münzen von einem verrauschten Hintergrund trennt und eine andere nicht, einen Seitenscan weichzeichnen, um sein Sprenkeln zu beruhigen, Kanten finden, Objekte durch Beschriften zählen, die Größe ändern und zuschneiden und sehen, was das an Dateigröße kostet, und ein Stück eines Bildes darin per Mustersuche wiederfinden. Es passt zu Einführungen in Computer Vision, Bildverarbeitung und angewandte Mathematik; prüfen Sie den genauen Wortlaut in der Einheit Ihrer eigenen Prüfungsstelle, hier wird keiner zitiert.

Im Browser ausführen

Das Lab startet einen einzigen Dienst, jupyter, der die Bilder zeichnet, das Notebook und die kurzen Skripte in seinen Arbeitsordner schreibt und nach wenigen Sekunden bereit ist, innerhalb der 512 MB, die ein Dienst haben darf. JupyterLab verlangt kein Token, weil die Tür der Plattform schon weiß, wer es öffnet. Das Terminal neben dem Lab hat kein eigenes Python, es erreicht das des Labs mit docker exec jupyter, gefolgt vom Befehl, der darin ausgeführt wird. Jedes Skript gibt jedes Mal dasselbe aus und speichert ein Bild, wo es hilft, das die lernende Person in JupyterLab öffnet.

  1. Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
  2. Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie JupyterLab: Computer Vision mit Pillow und scikit-image.
  3. Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
  4. Öffnen. Auf der Seite des Labs hat die Lab-Leiste einen Link namens JupyterLab: Klicken Sie darauf, um JupyterLab im Browser zu öffnen, öffnen Sie den Ordner images und doppelklicken Sie auf start.ipynb. Klicken Sie dann auf „Terminal öffnen“ und tippen Sie docker exec jupyter python3 steps/count.py, um die Münzen zu zählen: Die Antwort ist 9 Objekte, die neun Münzen, die das Lab gezeichnet hat, in drei Größen.

Was die Lernenden abgeben sollen

Ein eigenes Notebook zu einem der Bilder, das eine selbst gewählte Frage beantwortet, zum Beispiel wie viele Pixel einen Schwellenwert überschreiten und warum die Stufe so gewählt wurde, wie stark ein Weichzeichner das Sprenkeln des Seitenscans senkt oder ob ein einziger Schwellenwert über den ganzen ungleichmäßig beleuchteten Seitenscan funktioniert, aus JupyterLab mit File, Download heruntergeladen. Dazu ein oder zwei Sätze in eigenen Worten, was sie gefunden und was sie mit dem Auge geprüft haben. Nichts wird automatisch bewertet: Der Satz zeigt, ob es verstanden wurde. Für stärkere Arbeiten verlangen Sie die Maske neben dem Bild gezeichnet und eine Zählung, verglichen mit der Zahl, die man sieht.

Eine Grundlagenlektion zu diesem Lab

Computer Vision Basics ist eine kleine Lektion, die in diesem Lab abläuft. Darin listet die lernende Person die Bilder auf, liest ein Pixel, wandelt ein Bild in Grau um, probiert drei Schwellenwerte, zeichnet einen verrauschten Scan weich, zählt die Münzen durch Beschriften und öffnet dann dieselbe Arbeit im Start-Notebook.

Sie ist absichtlich klein: Sie zeigt einer Lehrkraft, was eine Lektion in einem Lab ist, und das Lab erledigt den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.

Der Code auf GitHub

Die Compose-Datei hat kein Dockerfile: Sie startet ein einziges öffentliches Standard-Image, das scipy-notebook der Jupyter Docker Stacks, auf ein datiertes Tag festgelegt, mit einem eigenen unprivilegierten Konto und 512 MB Speicher. Das Image steht unter der Lizenz BSD-3-Clause und wird nicht von uns verteilt. Die Datei zeichnet beim Start jedes Bild aus einem festen Startwert, also hat jede Kopie dieselben Zahlen, und nichts wird heruntergeladen. Die Grenzen sind ehrlich: Die Bilder sind klein und erfunden, es gibt keine Kamera und kein Foto, keine GPU, nichts lässt sich aus dem Internet installieren, und die Methoden sind die klassischen, kein neuronales Netz. Beim Stoppen des Labs bleibt nichts erhalten, die lernende Person lädt ihr Notebook also vorher herunter.

Als Aufgabe stellen

Schreiben Sie in die Aufgabe, was abzugeben ist.

  1. Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-computer-vision mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten, zum Beispiel um andere Bilder zu zeichnen.
  2. Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
  3. Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
  4. Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.

Dieses Lab ausprobieren, und was es kostet

Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.

Häufige Fragen

Warum muss ich kein Token und kein Passwort eingeben?
Die Webseite eines Labs ist nur durch die Tür der Plattform erreichbar, und die weiß schon, wer Sie sind, und lässt nur Sie und die Lehrkräfte Ihres Moduls hinein. Deshalb startet JupyterLab ohne Token. Betreiben Sie es so nicht auf einem Rechner, den andere erreichen können.
Warum nutzt das Terminal docker exec jupyter?
Das Terminal des Labs hat curl, psql und einige andere Clients, aber kein Python. docker exec jupyter führt einen Befehl im Container des Labs aus, der Python und alle Bibliotheken hat. JupyterLab hat außerdem ein eigenes Terminal, unter File, New, Terminal.
Können Lernende ihre eigenen Fotos verwenden?
Eine lernende Person kann ein Bild von ihrem Rechner in JupyterLab hochladen, und dieselben Skripte öffnen es, aber das Lab lädt nichts herunter, und die Kopie kommt nicht ins Internet. Die Zahlen auf dieser Seite gelten für die Bilder, die das Lab zeichnet. Um sie zu ändern, forken Sie das Repository, ändern Sie, wie die Compose-Datei sie zeichnet, und legen Sie den Fork als Lab fest.