	{"id":745,"date":"2018-10-26T13:17:33","date_gmt":"2018-10-26T12:17:33","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=745"},"modified":"2024-09-20T17:45:00","modified_gmt":"2024-09-20T16:45:00","slug":"tensorflow-and-open-source-made-product-recognition-model","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/nl\/blog\/tensorflow-and-open-source-made-product-recognition-model\/","title":{"rendered":"Hoe u Tensorflow en de gerelateerde open source bijdragen kunt gebruiken om een productherkenningsmodel op maat te bouwen"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column avada-news-bloc-image\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:left;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"1057\" height=\"591\" title=\"data-driven\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271057%27%20height%3D%27591%27%20viewBox%3D%270%200%201057%20591%27%3E%3Crect%20width%3D%271057%27%20height%3D%27591%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/wp-content\/uploads\/2019\/10\/image00.0.0.jpg\" alt class=\"lazyload img-responsive wp-image-30246\"\/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-top:10px;--awb-padding-right:10px;--awb-padding-bottom:10px;--awb-padding-left:10px;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>NIEUWS \/ GEGEVENSWETENSCHAP<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>Stelt u zich eens voor dat u de directeur bent van een nieuwe high-tech start-up, die een gloednieuw product (laten we zeggen een nieuw IoT-apparaat) op de markt wil brengen. U hebt aan veel conferenties, tentoonstellingen en demo's deelgenomen om vooraf over uw product te communiceren en de bekendheid ervan te vergroten. Het directe effect dat u verwacht is dat de verkoop van uw product, zodra het op de markt komt, hoog genoeg zal zijn om aan uw doelstellingen te voldoen.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-text-color:#000000;\"><p><span style=\"font-weight: 400;\">Stelt u zich eens voor dat u de directeur bent van een nieuwe high-tech start-up, die een gloednieuw product (laten we zeggen een nieuw IoT-apparaat) op de markt wil brengen. U hebt aan veel conferenties, tentoonstellingen en demo's deelgenomen om vooraf over uw product te communiceren en de bekendheid ervan te vergroten. Het directe effect dat u verwacht is dat de verkoop van uw product, zodra het op de markt komt, hoog genoeg zal zijn om aan uw doelstellingen te voldoen.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hier is \u00e9\u00e9n probleem: u hebt geen middelen om de vraag naar uw product te anticiperen en in te schatten.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Een eenvoudig feit dat u kunt controleren is hoeveel mensen er op internet over uw product praten. U kunt een kijkje nemen op de belangrijkste sociale netwerken (Facebook, Twitter, Instagram...) en kwantificeren hoeveel berichten uw product vermelden. Dit zou u een idee geven van de omvang van de verkoop die u kunt verwachten.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">U hebt twee opties om een product in een sociaal bericht te herkennen. U kunt de tekst analyseren door Text Mining uit te voeren of u kunt Beeldherkenning uitvoeren op de afbeelding van de post. Er is echter \u00e9\u00e9n probleem met het analyseren van de tekst: wanneer een product wordt uitgebracht, is de kans klein dat iedereen de naam ervan kent en het meteen na de releasedatum vermeldt. Beeldherkenning is daarom de voorkeursoplossing. Om een product op afbeeldingen te herkennen (als u meerdere producten moet herkennen), moet u het volgende uitvoeren <\/span><b>Objectdetectie<\/b><span style=\"font-weight: 400;\"> en dat is waar Tensorflow om de hoek komt kijken.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">Wat is Tensorflow?<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Tensorflow is een <strong>open-source<\/strong> wiskundebibliotheek, die stabiele Python en C API's biedt, gebruikt voor verschillende data manipulatietaken. Het is zeer bekend en wordt gebruikt voor Machine Learning- en Deep Learning-toepassingen, zoals Neurale Netwerken. De use cases waarvoor Tensorflow het meest bekend is, zijn beeldherkenning, natuurlijke taalverwerking en spraak-naar-tekst analyse.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ons specifieke gebruik is <strong>Objectdetectie<\/strong>. U kunt Tensorflow op verschillende niveaus gebruiken:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><strong>Niveau 1<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Gebruik een kant-en-klaar voorgetraind model en pas dit direct toe op uw data om de producten te herkennen. Deze methode is het minst complex en het snelst, omdat u geen model hoeft te bouwen of te trainen.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>Niveau 2<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Train een model op uw eigen data, zodat het model kan leren en het bereik van uw producten nauwkeurig kent. Dit niveau vereist het trainen van een model op data die u vooraf gelabeld hebt. Dit kost meer tijd, maar levert relevantere resultaten op omdat het model de exacte productreferenties herkent.<\/span><\/li>\n<li style=\"font-weight: 400;\"><strong>Niveau 3<\/strong><span style=\"font-weight: 400;\"><strong>:<\/strong> Maak uw eigen model vanaf nul. In dit niveau traint u niet alleen een model, maar bouwt u het vanaf het begin op. Het kan gaan om het afstemmen van parameters op een bestaand model, maar ook om het ontwikkelen van een nieuwe neurale netwerkarchitectuur. Het is meer bedoeld voor onderzoeksdoeleinden, omdat het een tijdrovende aanpak is.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Hieronder beschrijven we elk gebruiksniveau voor Tensorflow in meer detail.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">Niveau 1 - Een voorgetraind model gebruiken<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Het eerste basisgebruik is het gebruik van een model dat al getraind is op een gelabelde dataset. Deze optie moet gekozen worden wanneer de data waarop u het model wilt toepassen erg lijkt op de getrainde data. Bijvoorbeeld wanneer u algemene objecten zoals schoenen, smartphones, tassen enzovoort wilt herkennen. Deze aanpak is dus niet geschikt als u verwacht een merk en een precies model uit uw productassortiment te herkennen.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gewoonlijk worden dergelijke modellen getraind op standaard datasets, zoals de <\/span><strong>Coco dataset<\/strong><span style=\"font-weight: 400;\"> (<\/span><a href=\"https:\/\/github.com\/cocodataset\/cocoapi\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">github link hier<\/span><\/a><span style=\"font-weight: 400;\">) of <\/span><strong>ImageNet dataset<\/strong><span style=\"font-weight: 400;\"> (<\/span><a href=\"http:\/\/image-net.org\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">link hier<\/span><\/a><span style=\"font-weight: 400;\">). Deze datasets bestaan uit enorme verzamelingen afbeeldingen die al gelabeld zijn en klaar voor gebruik voor modeltraining. Het wordt veel gebruikt om beeldclassificatie en objectdetectiemodellen te trainen, die gebruikt kunnen worden als voorgetrainde modellen voor algemene productherkenning.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nu we meer weten over de data, geven we een kort overzicht van het voorgetrainde model dat u zou kunnen gebruiken. Een van de meest gebruikte bronnen om voorgetrainde modellen te vinden is <\/span><strong>Keras<\/strong><span style=\"font-weight: 400;\">. Het heeft een module waarin u verschillende soorten beeldclassificatiemodellen kunt vinden (VGG16, ResNet50, IncetopnV3...), die getraind zijn op standaard datasets. ImageNet voor deze gevallen. De workflow is dan eenvoudig: u laadt het model en past het direct toe op uw afbeeldingen om de kenmerken te extraheren. U kunt bijvoorbeeld direct classificeren welke van uw afbeeldingen horloges, oortelefoons, headsets bevatten... Er is nog een ander voorbeeld dat meer specifiek is voor objectdetectie en dat werd ontwikkeld door het Tensorflow-team van Google. Zij bouwden een reeks voorgetrainde modellen (een ervan is gebaseerd op de Coco dataset), die direct op nieuwe afbeeldingen kunnen worden gebruikt voor objectdetectie (<\/span><a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">github link hier<\/span><\/a><span style=\"font-weight: 400;\">). Deze modellen kunnen ook gebruikt worden als modellen om te hertrainen op uw eigen data, wat we zullen behandelen op niveau 2.<\/span><\/p>\n<h3><strong><span style=\"color: #ff0066;\">Niveau 2 - Zelf een model trainen data<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Als u werkt met een dataset die nogal verschilt van de oorspronkelijke dataset die gebruikt is voor het trainen van het model, dan werkt het niet om deze gewoon toe te passen. U zult uw eigen trainings dataset moeten bouwen en het model daarop opnieuw moeten trainen. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">De meeste beeldherkenningsproblemen vereisen het gebruik van Convolutionele Neurale Netwerken (CNN). De eerste lagen (convolutielagen) extraheren patronen en kenmerken uit het beeld. Deze kenmerken worden vervolgens doorgegeven aan de laatste lagen (volledig verbonden lagen) voor voorspelling. Er zijn twee manieren om een model op uw eigen data opnieuw te trainen: <\/span><strong>Transfert Leren<\/strong><span style=\"font-weight: 400;\"> en <\/span><strong>Fijnafstemming<\/strong><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Transfert Leren<\/strong> bestaat uit het gebruik van de voorgetrainde convolutielagen van het originele model en het trainen van de volledig verbonden lagen op de kenmerken die uit onze set afbeeldingen zijn gehaald. Het idee hier is om de kennis die is opgedaan tijdens het trainen van het model op de originele dataset te gebruiken voor ons probleem. Deze techniek is effici\u00ebnt in gevallen waarin de twee datasets vergelijkbaar zijn, bijvoorbeeld een model dat getraind is om auto's te herkennen, kan opnieuw getraind worden om vrachtwagens te herkennen. De reden hiervoor is dat afbeeldingen van auto's vergelijkbaar zijn met afbeeldingen van vrachtwagens en dat de patronen die door de convolutielagen uit deze afbeeldingen worden ge\u00ebxtraheerd waarschijnlijk vergelijkbaar zijn. De onderstaande figuur illustreert het proces:<\/span><\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-747 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27694%27%20height%3D%27243%27%20viewBox%3D%270%200%20694%20243%27%3E%3Crect%20width%3D%27694%27%20height%3D%27243%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/Training-last-layer-300x105.png\" alt=\"\" width=\"694\" height=\"243\" \/><\/p>\n<div class=\"articleblock text\">\n<div class=\"content\">\n<p>Als uw dataset sterk afwijkt van de originele dataset, moet u het volgende uitvoeren\u00a0<strong>Fijnafstemming<\/strong>. In tegenstelling tot Transfer Learning, wordt hier het hele netwerk (of op zijn minst de meeste convolutielagen) opnieuw getraind. De convolutielagen worden dus getraind op uw afbeeldingen en kunnen kenmerken extraheren die volledig zijn aangepast aan uw afbeeldingen. Het voordeel van Fine Tuning is dat het model volledig wordt getraind op de dataset en waarschijnlijk betere prestaties zal leveren, maar het is ook tijdrovender en rekenkundig duurder. De onderstaande afbeelding illustreert het proces:<\/p>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"lazyload wp-image-748 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27697%27%20height%3D%27223%27%20viewBox%3D%270%200%20697%20223%27%3E%3Crect%20width%3D%27697%27%20height%3D%27223%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/original-labels-300x96.png\" alt=\"\" width=\"697\" height=\"223\" \/><\/p>\n<p>Om een dataset voor objectdetectie te maken, moet u veel trainingsafbeeldingen verzamelen, maar \"Hoeveel precies?\" zou men zich kunnen afvragen. Sommigen zeggen honderden, anderen zeggen duizenden of zelfs honderdduizenden, maar er is eigenlijk geen ground truth. Het wordt echter aanbevolen om meer dan honderd afbeeldingen te hebben voor elke klasse die u door uw model wilt laten herkennen.<\/p>\n<p>Zodra u uw afbeeldingen hebt verzameld, moet u ze labelen.\u00a0<strong>Het labelproces bestaat uit het maken van JSON-bestanden met de co\u00f6rdinaten en de klasse van het object dat het model op elk beeld moet detecteren en herkennen.<\/strong>. Dit deel wordt meestal handmatig gedaan, maar het kan gedeeltelijk geautomatiseerd worden door code. Er zijn verschillende open-source tools ontwikkeld om het handmatig labelen te versnellen, en \u00e9\u00e9n daarvan is de<a href=\"https:\/\/github.com\/puzzledqs\/BBox-Label-Tool\" target=\"_blank\" rel=\"noopener\">\u00a0BBox-Label-Tool<\/a>\u00a0op Github. Het hulpprogramma bestaat uit een gebruikersinterface, waarin alle afbeeldingen worden geladen en waarmee de gebruiker met 2 klikken een afbeelding kan labelen:<\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-749 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27912%27%20height%3D%27511%27%20viewBox%3D%270%200%20912%20511%27%3E%3Crect%20width%3D%27912%27%20height%3D%27511%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/img-wear-300x168.png\" alt=\"\" width=\"912\" height=\"511\" \/><\/p>\n<p>De gebruiker hoeft alleen maar op de linkerbovenhoek en de rechterbenedenhoek van het object te klikken, waarna het gereedschap een rechthoek rond de afbeelding tekent en de co\u00f6rdinaten in een bestand opslaat. Dit brengt de tijd voor het labelen (afgezien van het toevoegen van de objectklasse) terug tot 3 seconden. Het uiteindelijke JSON-bestand, na het toevoegen van de objectklasse, zou er als volgt uit moeten zien: <\/p>\n<p>De laatste stap is het converteren van de bestanden naar een enkel bestand, speciaal geformatteerd voor Tensorflow. Er wordt een eenvoudige tutorial gegeven<a href=\"https:\/\/medium.com\/@WuStangDan\/step-by-step-tensorflow-object-detection-api-tutorial-part-2-converting-dataset-to-tfrecord-47f24be9248d\" target=\"_blank\" rel=\"noopener\">\u00a0hier<\/a>.<\/p>\n<p>Zodra u uw dataset hebt gemaakt, kunt u beginnen met het trainen van uw model, maar eerst moet u een voorgetraind model vinden! Recent onderzoek naar deep learning heeft geleid tot de ontwikkeling van verschillende neurale netwerkgebaseerde modellen voor objectdetectie. Een bekende architectuur is de Faster R-CNN gebaseerd op Region Proposal Networks (RPN). Faster R-CNN heeft twee netwerken: een RPN voor het genereren van regiovoorstellen en een netwerk dat deze voorstellen gebruikt om objecten te detecteren. Het Tensorflow-team van Google heeft een reeks deep learning-modellen ontwikkeld die gemakkelijk bruikbaar zijn voor data-wetenschappers en \u00e9\u00e9n daarvan is een objectdetectiemodel dat gebaseerd is op Faster R-CNN. Het model wordt aangeboden op Tensorflow's<a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/research\/object_detection\" target=\"_blank\" rel=\"noopener\">\u00a0Github<\/a>\u00a0pagina met een handleiding. De<a href=\"https:\/\/github.com\/tensorflow\/models\/blob\/master\/research\/object_detection\/g3doc\/running_pets.md\" target=\"_blank\" rel=\"noopener\">\u00a0handleiding<\/a>\u00a0toont de stappen om het model opnieuw te trainen (met Transfer Learning) en te implementeren op Google ML Engine.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">Niveau 3 - Maak uw eigen model vanaf nul<\/span><\/strong><\/h3>\n<p>Als u de ziel van een onderzoeker hebt of u hebt een zeer specifiek computervisieprobleem, dan kunt u uw eigen model vanaf nul maken. In dit geval hebt u drie opties :<\/p>\n<ul>\n<li><strong>Een beeldclassificatiemodel bouwen met CNN's<\/strong><\/li>\n<\/ul>\n<p>De eenvoudigste oplossing voor productherkenning is het classificeren van afbeeldingen met de architectuur van Convolutionele Neurale Netwerken. Deze modellen nemen een afbeelding als invoer en voeren een label uit dat het object aangeeft. Ze moeten dus alleen worden gebruikt als uw afbeeldingen slechts \u00e9\u00e9n object bevatten dat u wilt detecteren. Het gebruik van een beeldclassificatiemodel voor objectdetectie zal echter waarschijnlijk slechte prestaties leveren, simpelweg vanwege de ruis rond het object in de afbeelding. Beeldclassificatiemodellen zijn ontworpen om kenmerken uit het hele beeld te halen en het beeld als geheel te classificeren. Het probleem hierbij is dat twee verschillende afbeeldingen, bijvoorbeeld een afbeelding van een kamer en een afbeelding van een straat, die beide het gewenste object bevatten, hetzelfde label kunnen hebben. Dit maakt de classificatietaak moeilijk. Hier zijn<a href=\"https:\/\/www.tensorflow.org\/tutorials\/estimators\/cnn\" target=\"_blank\" rel=\"noopener\">\u00a0twee<\/a><a href=\"https:\/\/medium.com\/@mroman09\/building-a-convolutional-neural-network-to-classify-images-in-fashion-mnist-57589b94898e\" target=\"_blank\" rel=\"noopener\">\u00a0handleidingen<\/a>\u00a0over hoe u CNN's vanaf nul kunt opbouwen.<\/p>\n<ul>\n<li><strong>Een objectdetectiemodel bouwen<\/strong><\/li>\n<\/ul>\n<p>Zoals eerder gezegd, zijn er recentelijk objectdetectiemodellen opgedoken met het onderzoek naar Deep Learning. De Faster R-CNN-architectuur werd eind 2015 ge\u00efntroduceerd als een iteratie van de oudere Fast R-CNN-architectuur. Het voert :<\/p>\n<p>a) een lijst van begrenzende boxen<\/p>\n<p>b) een label toegewezen aan elk begrenzingskader<\/p>\n<p>c) een waarschijnlijkheid voor elk label en bounding box<\/p>\n<p>Eerst wordt een voorgetrainde CNN op de afbeelding toegepast, waardoor een kenmerkenkaart wordt gemaakt. Deze kenmerken worden vervolgens doorgegeven aan een RPN om kandidaatregio's (bounding boxes) te vinden die relevante objecten bevatten. De laatste stap bestaat uit het gebruiken van de kenmerken die door de CNN en de bounding boxes zijn berekend om de inhoud van de bounding boxes te classificeren en de co\u00f6rdinaten ervan aan te passen (zodat ze beter bij het object passen). Dit gebeurt via de RCNN-module. De onderstaande afbeelding illustreert de architectuur:<\/p>\n<p><img decoding=\"async\" class=\"lazyload wp-image-750 aligncenter\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27752%27%20height%3D%27178%27%20viewBox%3D%270%200%20752%20178%27%3E%3Crect%20width%3D%27752%27%20height%3D%27178%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"http:\/\/briqahg.cluster028.hosting.ovh.net\/wp\/wp-content\/uploads\/2019\/10\/RPN-300x71.png\" alt=\"\" width=\"752\" height=\"178\" \/><\/p>\n<p>Meer details vindt u in deze<a href=\"https:\/\/tryolabs.com\/blog\/2018\/01\/18\/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection\/\" target=\"_blank\" rel=\"noopener\">\u00a0handleiding<\/a>, en er is open-source werk over dit onderwerp beschikbaar<a href=\"https:\/\/github.com\/tryolabs\/luminoth\/tree\/master\/luminoth\/models\/fasterrcnn\" target=\"_blank\" rel=\"noopener\">\u00a0hier<\/a>.<\/p>\n<ul>\n<li><strong>Een hybride model bouwen met objectdetectiearchitecturen en CNN's<\/strong><\/li>\n<\/ul>\n<p>Als u uw prestaties wilt verbeteren, kunt u de hybride aanpak overwegen. Het is mogelijk dat een objectdetectiebenadering resulteert in slechte classificatie (het object wordt goed gedetecteerd, maar het verkeerde label wordt voorspeld). In dat geval kunt u eerst een objectdetectiemodel trainen op uw dataset, met slechts \u00e9\u00e9n label (\"object\" bijvoorbeeld) en vervolgens uw afbeeldingen bijsnijden op basis van de co\u00f6rdinaten van de begrenzende vakken. Hierdoor ontstaat een set afbeeldingen die alleen het relevante object bevat dat in de oorspronkelijke afbeeldingen is gedetecteerd. U kunt deze set vervolgens gebruiken als trainingsset voor CNN-beeldclassificatie.<\/p>\n<h3><strong><span style=\"color: #ff0066;\">Uitbreiding - Geautomatiseerd machinaal leren<\/span><\/strong><\/h3>\n<p>Tegenwoordig zien we de ontwikkeling van nieuwe initiatieven die erop gericht zijn om het proces van het maken en aanpassen van uw eigen model voor iedereen beschikbaar te maken, zelfs voor mensen zonder technische achtergrond. Het doel is dat u in plaats van kant-en-klare modellen (zoals niveau 1) te gebruiken, uw eigen model kunt trainen zonder dat u over de onderliggende kennis hoeft te beschikken.<\/p>\n<p><strong>Hoe werkt het?<\/strong><\/p>\n<p>De oplossing automatiseert het maken van het beeldclassificatiemodel of objectdetectiemodel. U hoeft alleen maar een gelabelde dataset met uw afbeeldingen te leveren en deze naar de oplossing te sturen. Deze data wordt opgenomen om er een computervisiemodel op te trainen (als niveau 2 of niveau 3). Het zal een getraind model uitvoeren, soms zelfs een API, die u kunt gebruiken om de labels te voorspellen en objecten op nieuwe afbeeldingen te lokaliseren. Het model optimaliseert zichzelf, dus u hoeft niet te weten hoe u het moet implementeren en hoe u het moet parametriseren.<\/p>\n<p><strong>Wat zijn de oplossingen?<\/strong><\/p>\n<p>Er zijn twee belangrijke spelers op dit gebied, die tools hebben uitgebracht die op dit moment nog in b\u00e8ta zijn.<\/p>\n<ul>\n<li>Ten eerste hebben we Google en zijn Google Cloud AutoML-component uit zijn Cloud-platformsuite (<a href=\"https:\/\/cloud.google.com\/automl\/\" target=\"_blank\" rel=\"noopener\">link hier<\/a>). Cloud AutoML is niet alleen ontworpen voor computer vision-problemen, maar kan ook nuttig zijn voor alle Machine Learning-toepassingen, evenals Natural Language Processing en vertaling.<\/li>\n<li>Ten tweede hebben we het open source initiatief AutoKeras (<a href=\"https:\/\/autokeras.com\/start\/\" target=\"_blank\" rel=\"noopener\">link hier<\/a>). Het is gebaseerd op Keras, en vertrouwt op het automatisch zoeken naar de architectuur en hyperparameters van deep learning-modellen.<\/li>\n<\/ul>\n<p><em>Mede-geschreven artikel door Matthieu Montaigu en Kasra Mansouri, Data Wetenschappers bij Artefact.<\/em><\/p>\n<p><strong>Wilt u meer weten over verkoopprognoses dankzij op maat gemaakte productherkenningsmodellen? Onze experts staan tot uw beschikking om al uw vragen te beantwoorden!\u00a0<\/strong><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>Stelt u zich eens voor dat u de directeur bent van een nieuwe high-tech start-up, die een gloednieuw product (laten we zeggen een nieuw IoT-apparaat) op de markt wil brengen. U hebt aan veel conferenties, tentoonstellingen en demo's deelgenomen om vooraf over uw product te communiceren en de bekendheid ervan te vergroten. Het directe effect dat u verwacht is dat de verkoop van uw product, zodra het op de markt komt, hoog genoeg zal zijn om aan uw doelstellingen te voldoen.<\/p>","protected":false},"featured_media":746,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[22035],"blog-language":[2991],"class_list":["post-745","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-data-ai-consulting","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog\/745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/media\/746"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/media?parent=745"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog-category?post=745"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog-language?post=745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}