{"id":6220,"date":"2023-11-15T16:27:55","date_gmt":"2023-11-15T16:27:55","guid":{"rendered":"https:\/\/sites.hslu.ch\/werkstatt\/?p=6220"},"modified":"2023-12-14T16:48:53","modified_gmt":"2023-12-14T16:48:53","slug":"train-your-camera","status":"publish","type":"post","link":"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/","title":{"rendered":"Teach your Camera to see"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]In diesem Recipie schauen wir uns an wie eine OpenMV Camera mit einem eigenen Trainingsset ausgestattet werden kann. Wir trainieren die Cam f\u00fcr die Detektion eines Logos und schauen uns an wie dieses Training genutzt werden kann, um eine DSLR mit einem Objekt zu triggern. Die Hardware-Seite ist in diesem Beispiel sehr simpel daf\u00fcr werden wir uns st\u00e4rker mit dem Workflow der Datenaquisition, des Labelns, des Trainings in Edge Impulse und einer kleineren Anpassung unseres Codes in der IDE auseinandersetzen.[\/vc_column_text][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-section-content&#187;][vc_row][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-toc&#187; offset=&#187;vc_col-lg-3&#8243;][vc_column_text]<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Prolog\" >Prolog<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Beispielfiles_in_der_IDE\" >Beispielfiles in der IDE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#eigenes_Training\" >eigenes Training<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Vorbereitung\" >Vorbereitung<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Bill_of_Material\" >Bill of Material<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#File_Download_Code\" >File Download: Code<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Finden_eines_zu_detektierenden_Objekts\" >Finden eines zu detektierenden Objekts<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Software\" >Software<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#OpenMV_IDE\" >OpenMV IDE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Training_eines_eigenen_Modells\" >Training eines eigenen Modells<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Objektklassen\" >Objektklassen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Datenaquisation_fotografieren\" >Datenaquisation (fotografieren)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Garbage_in_Garbage_out\" >Garbage in, Garbage out<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Edge_Impulse\" >Edge Impulse<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Labeln\" >Labeln<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Clickwork\" >Clickwork<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Labeling_Queue\" >Labeling Queue<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Create_Impulse\" >Create Impulse<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Retraining_Datensatz_erweitern_oder_umlabeln\" >Retraining: Datensatz erweitern oder umlabeln<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Start_Training_und_Validation_deines_Modells\" >Start Training und Validation deines Modells<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Training_und_Validation_geglueckt_Deploy_It\" >Training und Validation gegl\u00fcckt? Deploy It!<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Hardware\" >Hardware<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Modell_auf_der_Cam_zum_Installieren\" >Modell auf der Cam zum Installieren<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Kamera_steuert_Kamera\" >Kamera steuert Kamera<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Achtung_33V_Logik\" >Achtung 3.3V Logik<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/train-your-camera\/#Aufbau\" >Aufbau<\/a><\/li><\/ul><\/nav><\/div>\n[\/vc_column_text][\/vc_column][vc_column width=&#187;2\/3&#8243; el_class=&#187;dkw-col-content&#187; offset=&#187;vc_col-lg-6&#8243;][vc_column_text]<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Prolog\"><\/span>Prolog<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die\u00a0<a href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/\">OpenMV Cam<\/a>\u00a0(Open Machine Vision Camera) kommt bereits mit einigen gro\u00dfartigen Beispiel Algorithmen, die du recht simpel \u00fcber die OpenMV IDE ansteuern und ausprobieren kannst.\u00a0Im oben verlinkten Artikel findest du s\u00e4mtliche Infos zu Hardware und Software wie auch die Videos zu einigen Beispielprogrammen.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Beispielfiles_in_der_IDE\"><\/span>Beispielfiles in der IDE<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>eine Auflistung einiger Beispiele inklusive Demovideos findest du\u00a0<a href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Beispiele_in_der_IDE\">hier<\/a><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"eigenes_Training\"><\/span>eigenes Training<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Wir wollen uns in diesem Recipie aber auf ein eigenes Training fokussieren. Das heisst einen Datensatz erstellen, ein Training basierend darauf durchf\u00fchren und diese Eigenentwicklung in Betrieb nehmen, um eine DSLR-Kamera anzusteuern.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Vorbereitung\"><\/span>Vorbereitung<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Um sp\u00e4ter unser trainiertes Modell zu deployen ben\u00f6tigen wir ein Machine Vision taugliches Board, wir nutzen hier die OpenMV Cam H7 Plus. Die Hardware ist absolut \u00fcberschaubar das einzige wichtige Bauteil ist der\u00a0<a href=\"https:\/\/de.wikipedia.org\/wiki\/Optokoppler\">Optokoppler<\/a>.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Bill_of_Material\"><\/span>Bill of Material<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>OpenMV Cam H7 Plus<\/li>\n<li>1 Optokoppler 4n25<\/li>\n<li>Protoshield<\/li>\n<li>ca 5cm Litze<\/li>\n<li>eine Microjack Buchse<\/li>\n<li>und Microjack Fotoapparat adapter<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6454\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-1000x750.png\" alt=\"\" width=\"1000\" height=\"750\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-1000x750.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-768x576.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-848x636.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-1140x855.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-1170x878.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM-600x450.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/opnmv_BOM.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"File_Download_Code\"><\/span>File Download: Code<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Files f\u00fcr den Aufbau dieses Recipies findest du hier:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/MediaDock\/openMV_DSLR_Objectdetection\">https:\/\/github.com\/MediaDock\/openMV_DSLR_Objectdetection<\/a><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Finden_eines_zu_detektierenden_Objekts\"><\/span>Finden eines zu detektierenden Objekts<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Als Objekt kann dir fast alles dienen. Ideal ist in jedem Falle etwas, dass seine Form evt. auch die Farbe beibeh\u00e4lt. Ich habe f\u00fcr dieses Beispiel das Logo von Camera Arts genommen. Es k\u00f6nnen aber auch andere Objekt genutzt werden, so zum Beispiel Fr\u00fcchte, Spielzeug, Flaschen, Pflanzen ect.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6459\" style=\"font-size: 16px\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-1000x1000.png\" alt=\"\" width=\"1000\" height=\"1000\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-1000x1000.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-250x250.png 250w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-768x768.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-848x848.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13-600x600.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-17.45.13.png 1010w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Software\"><\/span>Software<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"OpenMV_IDE\"><\/span>OpenMV IDE<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Du brauchst die IDE Von Open MV Cam:<\/p>\n<ul>\n<li><a href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#OpenMV_IDE\">OpenMV IDE<\/a><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Training_eines_eigenen_Modells\"><\/span>Training eines eigenen Modells<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Um ein Datensatz zu erstellen, nutzen wir die IDE und unsere OpenMV Cam. Die Software bietet bereits die M\u00f6glichkeit einen Datensatz zu erstellen. \u00d6ffne einen neuen Datensatz, indem du auf Extras &gt; Datensatzeditor &gt; Neuer Datensatz klickst. Du wirst nun aufgefordert einen Ordner zu definieren in welchem dein Datensatz angelegt wird.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6462\" style=\"font-size: 16px\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-1000x827.png\" alt=\"\" width=\"1000\" height=\"827\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-1000x827.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-768x635.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-848x702.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-1140x943.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-1170x968.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor-600x496.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Datensatzeditor.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><span style=\"font-size: 16px\">In diesem Ordner wird nun ein das dataset_capture_script.py gespeichert und dieses Script \u00f6ffnet sich auch direkt in der IDE:<\/span><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6464\" style=\"font-size: 16px\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-18.00.29.png\" alt=\"\" width=\"956\" height=\"918\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-18.00.29.png 956w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-18.00.29-768x737.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-18.00.29-848x814.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-18.00.29-600x576.png 600w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Objektklassen\"><\/span>Objektklassen<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Eine neue Objektklasse muss f\u00fcr jedes Objekt, dass du mit deinem Detektor lokalisieren willst, erstellt werden. Um dies zu tun, klicke auf das Ordner Symbol mit dem Plus Zeichen dann wirst du aufgefordert einen Klasse zu benennen. F\u00fcr jede Klasse wird nun im Zielordner einen Unterordner erstellt und ein Textfile mit allen Klassennamen erstellt.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6466\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-1000x807.png\" alt=\"\" width=\"1000\" height=\"807\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-1000x807.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-768x620.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-848x684.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-1140x920.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-1170x944.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen-600x484.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Klassen.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Datenaquisation_fotografieren\"><\/span>Datenaquisation (fotografieren)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Jedes der Objekte wird nun idealerweise in unterschiedlichen Winkeln, Raum- und Lichtverh\u00e4ltnissen fotografiert. in der Regel reichen ca. 50 Bilder pro Objekt gut aus. Die Gewinnung von Daten erfolgt idealerweise direkt mit dem Ger\u00e4t, auf welchem das Modell nachher genutzt wird in unserem Fall die OpenMV Cam. Falls du ein interessantes Datenpaket findest, dass bereits existiert, kann dies auch genutzt werden, wird aber tendenziell etwas in der Pr\u00e4zision einb\u00fcssen.<\/p>\n<p>Wir w\u00e4hlen nun einen Klassenordner aus und machen Fotos von den Objekten, indem wir das Kamera\/Fotosymbol dr\u00fccken:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6467\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-1000x807.png\" alt=\"\" width=\"1000\" height=\"807\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-1000x807.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-768x620.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-848x684.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-1140x920.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-1170x944.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick-600x484.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_CLick.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>In meinem Beispiel habe ich nat\u00fcrlich nicht Bananen von Orangen unterschieden, sondern f\u00fcr jede Farbe des Logos einen neuen Ordner gemacht (ein Fehler wie sich nachher beim Training heraus gestellt hat) und alle Taschenfarben in verschiedenen Positionen fotografiert, 158 Bilder insgesamt:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6471\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1000x509.png\" alt=\"\" width=\"1000\" height=\"509\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1000x509.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-768x391.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1536x782.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-2048x1043.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-848x432.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1140x580.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1170x596.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-1920x978.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.23.13-600x306.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Das Objekt ist mittig im Bild. Das Bild selbst ist 320 x 240 Pixel klein und selbst das wird danach im Training nochmals deutlich reduziert. Die Bilder werden im Prozess des Trainings der Regel quadratisch zugeschnitten (96 x 96 Pixel \/ 48 x 48 Pixel). Dein Objekt sollte also idealerweise gut erkennbar und nicht weit aussen am Rand des Bildes im folgenden Bild rot markiert sein:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6493\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/GIGO.png\" alt=\"\" width=\"776\" height=\"396\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/GIGO.png 776w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/GIGO-768x392.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/GIGO-600x306.png 600w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Garbage_in_Garbage_out\"><\/span>Garbage in, Garbage out<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Informatik- Faustregel sollte unbedingt ber\u00fccksichtig werden. Sind in deinem Projekt deine Daten, das Labeln oder die Parameter schlecht, dann wird es sicherlich auch kein stabil laufendes Modell geben.\u00a0 Die Bilder deines Datensatzes sollte einigermassen gut ausgeleuchtet und die Objekte mehr oder weniger im Zentrum der Aufnahmen sein.[\/vc_column_text][vc_column_text]<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Edge_Impulse\"><\/span>Edge Impulse<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/edgeimpulse.com\/\">Edge Impulse<\/a>\u00a0ist eine Firma die Trainings kostenlos in der Cloud anbietet, das heisst du brauchst keinen superstarken PC, um deine eigenen Modelle zu trainieren. Registriere dich dort und du kannst loslegen.<\/p>\n<p>Nach dem du dich registriert hast und ein neues Projekt er\u00f6ffnet hast findest du dich auf folgender Oberfl\u00e4che wieder:[\/vc_column_text][vc_column_text]<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6482\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1536x933.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-2048x1244.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-1920x1166.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-10-um-22.59.57-600x364.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Clicke erst auf Data acquisition, dann auf Add data:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6481\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_dataaquisition.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>W\u00e4hle deine Dateien \u00fcber Choose Files aus und lade sie hoch:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6490\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_uploadsettings-1.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>[\/vc_column_text][vc_column_text]<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Labeln\"><\/span>Labeln<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Nachdem du dein vorhin gesammeltes Datensatz hochgeladen hast, gehts ans labeln. Edge impulse unterteilt dein Datensatz sp\u00e4ter automatisch in einen Trainingsteil (~80%) und einen Validationsteil (~20%). Um ein Training zu machen, solltest du die Dateien Labeln. Das heisst wir markieren f\u00fcr das nachfolgende Training bei jedem Bild mit einem Rahmen, wo sich das Objekt auf dem Bild befindet und was sein Label ist. Dies kann ein sehr langer und m\u00fchsamer Prozess sein.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Clickwork\"><\/span>Clickwork<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>In unserem Fall ist das ein Miniatur Datensatz und das Labeln sollte in ca. einer Stunde gemacht sein aber f\u00fcr viele Clickworker:innen ein Job dem sie t\u00e4glich nachgehen. Falls dich diese Seite der Grossen KI Modelle interessiert, ist evt. dieser Dokfilm interessant:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.srf.ch\/audio\/kuenste-im-gespraech\/irrwitziger-film-zu-clickworking-en-attendant-les-robots?partId=12377379\">En attendant les robots<\/a><\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Labeling_Queue\"><\/span>Labeling Queue<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6492\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_Labeling.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Nun zeichnest du mit der Maus um jedes Objekt in deinem Dataset ein Viereck und setzt das Label entsprechend. Achtung! Wenn du mehrere Objekte gleichzeitig trainierst, ist es wichtig konzentriert zu bleiben und nicht einfach durchzuklicken. Ein schlecht gelabelter Datensatz kann massgeblich f\u00fcr den Erfolg oder das Scheitern deines Trainings entschieden (<a href=\"https:\/\/sites.hslu.ch\/werkstatt\/?p=6220&amp;preview=true#GIGO-_Garbage_in_Garbage_out\">GIGO<\/a>).<\/p>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6507\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_queue.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/h4>\n<h4><span class=\"ez-toc-section\" id=\"Create_Impulse\"><\/span>Create Impulse<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Nachdem du alles gelabelt hast, kannst du nun der eigentliche Training beginnen. Eine Trainingseinheit wird in Edge Impulse als Impulse benannt. Du klickst auf &#171;Impulse Design&#187; und dann auf &#171;Create Impulse&#187; um die Trainings &#8211; Parameter zu setzen. Setze deine Parameter wie folgt ein: \u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6495\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_createImpulse.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Nach dem Speichern klickst du auf Impulse Design und dann auf Image. Hier klickst du dann auf den Button &#171;Generate Features&#187;. Dieser Prozess sucht nun in deinem Bildersatz nach Features und zeigt dir die Features danach grafisch in clustern geordnet. Wenn alles gut verlief sieht es in etwa so aus:\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6496\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_generatefeatures.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Mit mehreren Objekten in etwa so:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6498\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1536x933.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-2048x1244.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-1920x1166.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.46.46-600x364.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Dies ist ein wichtiger Schritt, um dein Datensatz zu \u00fcberpr\u00fcfen. je n\u00e4her sich die Featurecluster zusammenballen, desto h\u00f6her die &#171;treffsicherheit&#187; ein Feature zu erkennen. Wir haben in unserem Beispiel nur ein Objekt: alle CA-Logos in unterschiedlichen Farben, daher ist dies vielleicht nicht das beste Beispiel. Hast du mehrere Features, die erkannt werden sollen, sollte sich jedes Feature zu einem Cluster formen, falls das ganze sehr zerstreut, aussieht wird dir das trainierte Modell keine zuverl\u00e4ssige Detektion liefern k\u00f6nnen. So ist dies auch in meinem ersten Anlauf geschehen&#8230;<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Retraining_Datensatz_erweitern_oder_umlabeln\"><\/span>Retraining: Datensatz erweitern oder umlabeln<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>In meinem Fall hatte ich die erste Idee in meinem Datensatz unterschiedliche Logos &amp; Farben zu detektieren: Ich habe Labels f\u00fcr Lila, White, Orange, Green und Yellow erarbeitet. Leider hat sich bereits bei der Stufe der Feature Generation gezeigt, dass die Features nicht Clustern, sondern ziemlich Homogen verstreut sind, was nach dem Training zu einer schlechten Validation und einem schlechten Modell f\u00fchrte:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6499\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1536x933.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-2048x1244.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-1920x1166.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Bildschirmfoto-2023-11-15-um-11.48.17-600x364.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>In meinem Fall der unterschiedlichen Logofarben musste nun also ein anderer L\u00f6sungsansatz her. Es boten sich mehrere M\u00f6glichkeiten, dies zu verbessern:<\/p>\n<ol>\n<li>Den Datensatz pro Objekt (in diesem Fall Logo-Farbe) vergr\u00f6ssern ca. 50 &#8211; 70 Bilder pro Logofarbe<\/li>\n<li>Den Datensatz als ein Objekt behandeln und alle Logos neu Labeln.<\/li>\n<\/ol>\n<p>Ich habe mich in diesem Fall f\u00fcr Option 2 entschieden. Nun weisst du auch, weshalb die Datei auf Github diesen doofen Namen hat. (2ndTry)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Start_Training_und_Validation_deines_Modells\"><\/span>Start Training und Validation deines Modells<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Wenn des Clusters einigermassen Vielversprechend aussehen k\u00f6nnen wir das eigentliche Training starten.<\/p>\n<p>In unserem Fall nutzen wir<\/p>\n<ul>\n<li>70 Lernzyklen<\/li>\n<li>0.0001 Lernrate<\/li>\n<li>Data Augmentation checked<\/li>\n<li>FOMO (Faster Objects, More Objects) MobileNetV2 0.35<\/li>\n<\/ul>\n<p>Danach startest du das Training&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6501\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_cusorPoint.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Nach dem Trainingsprozess wird dein Modell mit dem Validations Datensatz \u00fcberpr\u00fcft. Und diese \u00dcberpr\u00fcfungswerte kannst du danach einsehen. Um die Detektionswerte deines Modells zu \u00fcberpr\u00fcfen kannst du unter Impulsedesign &gt; Object Detection die Validationswerte abrufen. In der Regel, ist ein Wert von um die 80% &#8211; 90% schon ganz OK. Im Falle, dass du an einem Selbstfahrenden Auto arbeitest, w\u00fcrde ich aber sicherlich nochmals etwas Zeit ins Optimieren investieren.<\/p>\n<p>In meinem Beispiel des mehrfarbig gelabelten Datensatzes waren die Detektionswerte wie zu erwarten die Labels: Gr\u00fcn, Lila und Gelb sie wurden nur schlecht erkannt und hatten schlechte Werte:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6504\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1536x933.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-2048x1244.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-1920x1166.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_bad-validation-600x364.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>Im Falle des 2nd Try Logodetektors mit nur einem Label hingegen ziemlich hoch:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6505\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_goodValidation.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Training_und_Validation_geglueckt_Deploy_It\"><\/span>Training und Validation gegl\u00fcckt? Deploy It!<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Um das trainierte Modell f\u00fcr unsere Kamera nutzbar zu machen, m\u00fcssen wir nun dieses Model deployen, das mach wir unter Deploy&#8230; Hier suchen wir nach unserem Endger\u00e4t. Tippe in der Suchleiste &#171;open&#187; ein und du bekommst zwei Vorschl\u00e4ge:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6508\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_deploy.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Beides w\u00e4re lauff\u00e4hig auf unserer OpenMV Cam aber wir brauchen die Library Option, da wir noch ein wenig an unserem Code weiterarbeiten wollen. Klicke auf Build und du kriegst dein eigenes Modell in deinen Downloads Ordner geladen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6509\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_build.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>[\/vc_column_text][vc_column_text]<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hardware\"><\/span>Hardware<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wenn Du`s bis hier hin geschafft hast, Gratuliere &#8211; du hast dein erstes KI Modell trainiert! Dieses k\u00f6nnen wir nun auf unserer OpenMV Cam nutzen! Nochmals zur Erinnerung: <a href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/\">hier<\/a>\u00a0sind alle Infos zur Cam.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modell_auf_der_Cam_zum_Installieren\"><\/span>Modell auf der Cam zum Installieren<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Das Modell kann gestartet werden indem du:<\/p>\n<ol>\n<li>die beiden Files (trained.tflite + labels.txt) auf den internen Speicher deiner Cam ziehst, Schliesse dazu deine Cam per USB an deinem Computer an und verschiebe diese Files auf die Cam.<\/li>\n<li>das Pythonscript &#171;ei_object_detection_shutter_LED.py&#187; in der OpenMV IDE \u00f6ffnest.<\/li>\n<li>die OpenMV IDE startest die Cam verbindest und das Script mit dem Playknopf startest.<\/li>\n<\/ol>\n<p>Sieht deine Kamera das Objekt und detektiert es zeichnet sie einen kleinen Kreis auf das entsprechende Objekt im Vorschaubild.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6511\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-1000x607.png\" alt=\"\" width=\"1000\" height=\"607\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-1000x607.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-768x466.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-848x515.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-1140x692.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-1170x711.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO-600x364.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openmv_IDE_CALOGO.png 1500w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Kamera_steuert_Kamera\"><\/span>Kamera steuert Kamera<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Da die Software nun l\u00e4uft ist die Frage was wollen wir damit tun? Ich habe die in diesem Beispiel vor eine Kamera automatisch anzusteuern. Um den Ausl\u00f6ser einer DSLR-Kamera zu aktivieren so bald ein Logo sichtbar wird. Hierzu nutzen wir die M\u00f6glichkeit, die uns die Fernausl\u00f6serbuchse einer Kamera bietet. In den meisten F\u00e4llen muss man nur die richtigen Verbindungen kurzschliessen und damit ein Foto. Wir nutzen hier eine Nikon D800 das gleiche Prinzip funktioniert auch mit einer Fujifilm XT2 wie theoretisch mit vielen anderen Kameras, die einen Kabelgebundenen Fernausl\u00f6ser haben.<\/p>\n<p>Um bei unserer Kamera die Fotos auszul\u00f6sen, nutzen wir einen der Pins an der Cam. Jedes Mal, wenn ein Objekt detektiert wird wird der Pin aktiviert und l\u00e4sst 3.3V auf den Optokoppler &#171;fliessen&#187; und schaltet das onboard LED an.<\/p>\n<p>Hierzu haben wir folgende kleine Funktion geschrieben:<\/p>\n<pre># Camera Shutter Function\r\ndef shutter():\r\nglobal timer\r\ntimer = now\r\nprint(\"Ausl\u00f6ser\")\r\nled.on()\r\np.high()\r\ntime.sleep(1)\r\nled.off()\r\np.low()<\/pre>\n<p>Wenn du das Programm &#171;ei_object_detection_LED.py&#187; in der IDE startest, dann blinkt ein Blaues LED bei jeder Detektion und der Shutter der DSLR-Kamera wird ausgel\u00f6st. Um dies in der realen Welt zu machen, m\u00fcssen wir aber noch etwas Kleines zusammenl\u00f6ten und es mit der Kamera verbinden.<\/p>\n<p>Wir werden unser Signal auf einen Optokoppler geben. Dieses Bauteil trennt die eine Kamera Galvanisch von der anderen. Das heisst es sind zwei unabh\u00e4ngige Stromkreise. Dies machen wir, um Sch\u00e4den an der DSLR-Kamera zu verhindern.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Achtung_33V_Logik\"><\/span>Achtung 3.3V Logik<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Nur als kleiner Hinweis: manche Optokoppler funktionieren mit niedrigstrom bereits bestens, andere brauchen 5-6V. Der Test bei uns haben ergeben, dass der 3.3V Ausgang der Pins bei folgenden Optokopplern gut funktionert:<\/p>\n<ul>\n<li>4N25<\/li>\n<li>PC817 (sharp)<\/li>\n<\/ul>\n<p>Um zu verstehen, wie wir die DSLR-Kamera ansteuern k\u00f6nnen\u2026<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Aufbau\"><\/span><strong>Aufbau<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h3><span id=\"Code_Upload\" class=\"ez-toc-section\"><\/span><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6456\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1000x477.png\" alt=\"\" width=\"1000\" height=\"477\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1000x477.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-768x366.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1536x733.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-2048x977.png 2048w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-848x404.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1140x544.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1170x558.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-1920x916.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/Fritzing-600x286.png 600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/h3>\n<p>Sobald du alles zusammengel\u00f6tet hast, sollte es in etwa so aussehen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6513\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1000x563.png\" alt=\"\" width=\"1000\" height=\"563\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1000x563.png 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-768x432.png 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1536x864.png 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-848x477.png 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1140x641.png 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1170x658.png 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-1920x1080.png 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final-600x338.png 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/11\/openMV_Final.png 2000w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Wenns KLICK macht hast du alles richtig gemacht![\/vc_column_text][\/vc_column][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-micro&#187; offset=&#187;vc_col-lg-3&#8243;][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-dontprint&#187;][vc_row disable_element=&#187;yes&#187;][vc_column][vc_column_text]\u2014 \u2014 \u2014 INFO: In beiden nachfolgenden Post Grids die passenden Recipies und die passenden Talks\u00a0 ausw\u00e4hlen \u2014 \u2014 \u2014<br \/>\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column][vc_column_text]<\/p>\n<h2>Passende Tools<\/h2>\n<p>[\/vc_column_text][vc_basic_grid post_type=&#187;ids&#187; element_width=&#187;2&#8243; gap=&#187;10&#8243; item=&#187;517&#8243; grid_id=&#187;vc_gid:1700068992988-e6330ec9-4ddd-7&#8243; include=&#187;4122, 6097&#8243;][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-dontprint&#187;][vc_row][vc_column][vc_column_text]<\/p>\n<h2>Passende Talks<\/h2>\n<p>[\/vc_column_text][vc_basic_grid post_type=&#187;ids&#187; element_width=&#187;2&#8243; gap=&#187;10&#8243; item=&#187;517&#8243; grid_id=&#187;vc_gid:1700068992988-bcd47777-28b4-0&#8243; include=&#187;5606, 2781&#8243;][\/vc_column][\/vc_row][\/vc_section]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]In diesem Recipie schauen wir uns an wie eine OpenMV Camera mit einem eigenen Trainingsset ausgestattet werden kann. Wir trainieren die [&hellip;]<\/p>\n","protected":false},"author":50,"featured_media":6525,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,11],"tags":[],"class_list":["post-6220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mediadock","category-recipies"],"acf":[],"_links":{"self":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/comments?post=6220"}],"version-history":[{"count":36,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6220\/revisions"}],"predecessor-version":[{"id":6756,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6220\/revisions\/6756"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media\/6525"}],"wp:attachment":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media?parent=6220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/categories?post=6220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/tags?post=6220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}