Clockworks Data Innovation BV
Het Groothandelsgebouw, E1.157
Stationsplein 45
3013 AK Rotterdam

Asset Identificatie met ItemIntel

In de snelle wereld van vandaag is handmatige gegevensinvoer een belangrijke uitdaging voor bedrijven die fysieke assets beheren. Of het nu gaat om verhuur, installatie van nieuwe producten of reparatie van bestaande producten, het vastleggen van nauwkeurige informatie over bedrijfsmiddelen kan tijdrovend en foutgevoelig zijn.

image

door Tom Weinans

AI Solutions Engineer

image

In de snelle wereld van vandaag is handmatige gegevensinvoer een belangrijke uitdaging voor bedrijven die fysieke assets beheren. Of het nu gaat om verhuur, installatie van nieuwe producten of reparatie van bestaande producten, het vastleggen van nauwkeurige informatie over bedrijfsmiddelen kan tijdrovend en foutgevoelig zijn. Dat is waar ItemIntel om de hoek komt kijken: onze innovatieve API is ontworpen om de registratie en identificatie van assets te stroomlijnen.

De Uitdaging

Voor veel bedrijven betekent het registreren van assets het handmatig vastleggen van kritieke details zoals merknamen, productnamen, modelnummers en serienummers. Dit proces kost niet alleen kostbare tijd, maar brengt ook het risico van menselijke fouten met zich mee, wat leidt tot problemen met voorraadbeheer, onderhoudstracering en klantenservice.

Maak kennis met ItemIntel

ItemIntel biedt een eenvoudige maar krachtige oplossing. Neem gewoon een foto van een productlabel, verstuur deze naar onze API en ontvang gestructureerde gegevens die klaar zijn voor integratie in uw bestaande systemen. Dit is wat ItemIntel onderscheidt:

Belangrijkste Kenmerken:

  • Label Text Herkenning: Nauwkeurige extractie en identificatie van merknamen, productnamen, modelnummers en serienummers van productlabels.
  • Code Lezen: Leest en decodeert automatisch QR codes en barcodes, zodat handmatig scannen niet meer nodig is. Datamatrices worden binnenkort toegevoegd!
  • AanpasbareInformatie-Extractie: Specifieke details nodig zoals productiedata, certificering of andere productspecificaties? ItemIntel kan deze gegevens extraheren en formatteren volgens uw vereisten.
  • Gestructureerd JSON Respons: Alle geëxtraheerde informatie wordt geretourneerd in een gestructureerd JSON-formaat, waardoor het gemakkelijk te integreren is met uw ERP, asset management systeem of aangepaste applicatie.
  • Wereldwijde Taalondersteuning: Met OCR-mogelijkheden die meer dan 70 talen ondersteunen, werkt ItemIntel naadloos bij wereldwijde activiteiten.

Hoe het werkt?

ItemIntel combineert geavanceerde optische tekenherkenning (OCR) met een krachtig groot taalmodel om nauwkeurige resultaten te leveren voor verschillende bedrijfsmiddelen. Er is geen training of configuratie nodig, zodat u ItemIntel vanaf de eerste dag effectief kunt gebruiken in uw gehele productcatalogus.

Wie profiteert van ItemIntel?

  • Equipment Managers: Snel verwerken van check-ins en check-outs van apparatuur.
  • Installatie Technici: Registreer efficiënt nieuw geïnstalleerde producten.
  • Onderhoudsspecialisten: Direct apparatuur identificeren voor onderhoud en relevante handleidingen vinden.
  • Inventory Specialisten: Voorraadbeheer en het traceren van activa stroomlijnen.
  • Field Technici: Ter plaatse nauwkeurige informatie over bedrijfsmiddelen vastleggen.
  • Operations Managers: Optimaliseer activiteiten en verminder fouten in activabeheer.

Toekomstige Ontwikkelingen

Terwijl ItemIntel zich momenteel richt op labelherkenning, zijn we al bezig met de ontwikkeling van de volgende generatie functies, waaronder de mogelijkheid om producten direct te identificeren op basis van hun visuele verschijning zonder labels.

Aan de slag met ItemIntel

ItemIntel is nu beschikbaar voor integratie in uw bedrijfsprocessen. Terwijl we doorgaan met het verbeteren van de mogelijkheden, hebben early adopters de mogelijkheid om de ontwikkeling vorm te geven om aan hun specifieke behoeften te voldoen.

Slimmer Inspecteren voor de NVWA

door Rob Weber

Senior Software Engineer

Sneller en betrouwbaarder inspecteren met Vision AI In samenwerking met de NVWA ontwikkelde Clockworks een slimme app die het werk van inspecteurs flink vereenvoudigt. Inspecteurs van de Nederlandse Voedsel- en Warenautoriteit (NVWA) controleren dagelijks of gewasbeschermingsmiddelen voldoen aan de regelgeving. Daarbij is één ding cruciaal: het toelatingsnummer. Dit unieke nummer bepaalt of een middel wel of niet is toegestaan op de Nederlandse markt. Tot voor kort betekende dit: elk etiket nauwkeurig aflezen, het nummer noteren en handmatig opzoeken in de database van het College voor de toelating van gewasbeschermingsmiddelen en biociden (CTGB). Tijdsintensief, foutgevoelig en omslachtig. Daar moest een slimmere oplossing voor komen. Samen maken we inspecteren slimmer Clockworks ontwikkelde een AI-gedreven app die het controleproces versnelt én betrouwbaarder maakt. De app is ontworpen in nauwe samenwerking met de NVWA, met aandacht voor de praktijk van inspecteurs in het veld. Afgelopen week is de eerste versie live gegaan in een pilot. De reacties zijn positief: de app werkt snel, intuïtief en scheelt aanzienlijk in tijd en moeite. Hoe het werkt De kracht zit in de eenvoud: De inspecteur maakt een foto van het etiket De Vision AI leest automatisch het toelatingsnummer van het middel De app checkt dit nummer direct in de officiële CTGB-database Binnen enkele seconden verschijnt op het scherm of het middel is toegestaan Geen handmatige invoer meer. Geen twijfel. Gewoon direct duidelijkheid. Wat het oplevert Deze oplossing laat zien hoe AI daadwerkelijk het verschil maakt in de praktijk: Snellere inspecties – minder tijd kwijt per controle Meer zekerheid – automatische controle voorkomt fouten Gebruiksgemak in het veld – ontworpen voor én met de mensen die ermee werken Bij Clockworks geloven we dat AI zichzelf moet bewijzen in de praktijk. Niet door ingewikkelde dashboards of abstracte modellen, maar door concrete oplossingen die het werk écht makkelijker maken. Deze samenwerking met de NVWA is daar een goed voorbeeld van. Door slimme technologie te koppelen aan een herkenbare werksituatie, ontstaat er een tool die precies doet wat nodig is—zonder poespas. We zijn trots op het resultaat en kijken uit naar de verdere uitrol.

Lees meer
Maak kennis met ‘PI-Test Mymic’

door Teo Cherici

AI Architect

Bij Clockworks schrijven we vaak pipelines die meerdere Deep Learning-modellen aanroepen, lokaal op de GPU of door verzoeken te doen aan een Triton-modelcluster. Het Probleem Helaas is het schrijven van tests voor deze pijplijnen vaak een gedoe: Een test de modellen direct laten aanroepen is eenvoudig in onze lokale ontwikkelomgevingen, maar moeilijk en broos in onze CI. In het verleden was onze standaardaanpak altijd om deze modelaanroepen te bespotten, maar dit gaat gepaard met verschillende problemen: De invoer van dergelijke modellen wordt effectief genegeerd. Als onverwachte veranderingen in de pijplijn ervoor zorgen dat de invoer van een modeloproep verandert, wordt dit niet weerspiegeld in de test. De gegenereerde outputs komen overeen met het formaat van de echte model outputs, maar niet met hun werkelijke inhoud. Hierdoor zijn de tests niet effectief in het verifiëren hoe het model wordt gebruikt in de context van een pijplijn. Het handmatig genereren van de uitvoer van dergelijke modelaanroepen is saai en omslachtig. Testsuites worden onoverzichtelijk met mocking code en moeilijk te begrijpen En dus dacht ik: er moet een betere manier zijn… Het idee Wat ik eigenlijk wilde was gewoon tests schrijven zonder me zorgen te maken over het al dan niet kunnen aanroepen van de modellen. In feite zijn modelaanroepen helemaal geen probleem in onze ontwikkelomgeving en worden ze alleen problematisch als ze automatisch in CI worden uitgevoerd. Hieruit kwam het idee: ik moest de tests één keer uitvoeren en daarbij de uitvoer van alle langzame en/of moeilijke aanroepen opnemen. Daarna kon ik, zolang de functie en invoer niet zouden veranderen, de opgenomen uitvoer gebruiken! Na wat experimenteren en iteraties in de ontwikkeling besloot ik om deze functionaliteit te ontwikkelen als een open-source publiek beschikbare pytest plugin. Een klein voorbeeld: Laten we eens laten zien hoe pytest-mimic werkt met een eenvoudig voorbeeld. Stel dat we een pijplijn met match_people_and_cars hebben geschreven die, gegeven een afbeelding, alle auto’s en mensen detecteert en elke auto toewijst aan een persoon op basis van hun uiterlijk: In deze (toegegeven: belachelijke) pijplijn zijn er drie aanroepen naar deep learning-modellen: detect_cars_and_people , car_autoencoder_model and people_autoencoder_model. Laten we er ook een paar eenvoudige tests voor schrijven: Stel nu dat alle drie de aanroepen naar de modellen onmogelijk zijn om uit te voeren in CI. Stel je voor dat je mocks schrijft voor elk van de modellen, voor elk van de tests. Vreselijk, toch? Ik weet zeker dat er genoeg manieren zijn om dit beter beheersbaar te maken, maar zou het niet fijn zijn om de tests gewoon zo te kunnen schrijven? Dat is waar pytest-mimic om de hoek komt kijken. Simpelweg de drie functies nabootsen in onze pytest configuratie: en voer de tests uit terwijl u opneemt in een omgeving waar de functieaanroepen kunnen worden gedaan (bijvoorbeeld op uw krachtige ontwikkelmachine met GPU-ondersteuning): pytest-mimiczal automatisch elke oproep opnemen en de uitvoer opslaan. Alle volgende pytest runs zullen in plaats daarvan gebruik maken van de opgenomen gesprekken! Merk op dat we geen boilerplate aan onze tests hoefden toe te voegen, waardoor ze kort en leesbaar blijven en toch hun effectiviteit behouden. In het bovengenoemde voorbeeld is pytest-mimic gebruikt om de moeite van het draaien van dure deep learning modellen in CI te vermijden, maar er zijn natuurlijk veel meer toepassingen. Enkele voorbeelden: Langzame functies nabootsen om de tijd die nodig is om een testsuite uit te voeren enorm te versnellen API-aanroepen nabootsen die sporadisch kunnen worden uitgevoerd, maar niet bij elke testrun Functies nabootsen die toegang hebben tot een externe bron die niet beschikbaar is in CI Merk echter op dat nabootsen niet altijd het juiste gereedschap is. Er zijn enkele beperkingen bij het gebruik van pytest-mimic , zoals: de ingangen van de nagebootste functie mogen niet variëren tussen de testruns (hoewel dit de beste toepassing is) de functies of methoden die worden nagebootst moeten atomair zijn (d.w.z. ze mogen de toestand van de invoer of andere externe objecten niet veranderen) De uitgangen moeten picklable zijn (zo worden ze opgeslagen op schijf) Mogelijk moet je gebruikmaken van git LFS of een andere tool om te voorkomen dat je archief verdrinkt met grote pickle bestanden. Als je zo ver bent gekomen: bedankt voor je aandacht en ik nodig je nogmaals uit om pytest-mimic uit te proberen.

Lees meer

Maak kennis
met onze
kunde in
het blog

Alle artikelen
Slimmer Inspecteren voor de NVWA

door Rob Weber

Senior Software Engineer

Sneller en betrouwbaarder inspecteren met Vision AI In samenwerking met de NVWA ontwikkelde Clockworks een slimme app die het werk van inspecteurs flink vereenvoudigt. Inspecteurs van de Nederlandse Voedsel- en Warenautoriteit (NVWA) controleren dagelijks of gewasbeschermingsmiddelen voldoen aan de regelgeving. Daarbij is één ding cruciaal: het toelatingsnummer. Dit unieke nummer bepaalt of een middel wel of niet is toegestaan op de Nederlandse markt. Tot voor kort betekende dit: elk etiket nauwkeurig aflezen, het nummer noteren en handmatig opzoeken in de database van het College voor de toelating van gewasbeschermingsmiddelen en biociden (CTGB). Tijdsintensief, foutgevoelig en omslachtig. Daar moest een slimmere oplossing voor komen. Samen maken we inspecteren slimmer Clockworks ontwikkelde een AI-gedreven app die het controleproces versnelt én betrouwbaarder maakt. De app is ontworpen in nauwe samenwerking met de NVWA, met aandacht voor de praktijk van inspecteurs in het veld. Afgelopen week is de eerste versie live gegaan in een pilot. De reacties zijn positief: de app werkt snel, intuïtief en scheelt aanzienlijk in tijd en moeite. Hoe het werkt De kracht zit in de eenvoud: De inspecteur maakt een foto van het etiket De Vision AI leest automatisch het toelatingsnummer van het middel De app checkt dit nummer direct in de officiële CTGB-database Binnen enkele seconden verschijnt op het scherm of het middel is toegestaan Geen handmatige invoer meer. Geen twijfel. Gewoon direct duidelijkheid. Wat het oplevert Deze oplossing laat zien hoe AI daadwerkelijk het verschil maakt in de praktijk: Snellere inspecties – minder tijd kwijt per controle Meer zekerheid – automatische controle voorkomt fouten Gebruiksgemak in het veld – ontworpen voor én met de mensen die ermee werken Bij Clockworks geloven we dat AI zichzelf moet bewijzen in de praktijk. Niet door ingewikkelde dashboards of abstracte modellen, maar door concrete oplossingen die het werk écht makkelijker maken. Deze samenwerking met de NVWA is daar een goed voorbeeld van. Door slimme technologie te koppelen aan een herkenbare werksituatie, ontstaat er een tool die precies doet wat nodig is—zonder poespas. We zijn trots op het resultaat en kijken uit naar de verdere uitrol.

Lees meer
Maak kennis met ‘PI-Test Mymic’

door Teo Cherici

AI Architect

Bij Clockworks schrijven we vaak pipelines die meerdere Deep Learning-modellen aanroepen, lokaal op de GPU of door verzoeken te doen aan een Triton-modelcluster. Het Probleem Helaas is het schrijven van tests voor deze pijplijnen vaak een gedoe: Een test de modellen direct laten aanroepen is eenvoudig in onze lokale ontwikkelomgevingen, maar moeilijk en broos in onze CI. In het verleden was onze standaardaanpak altijd om deze modelaanroepen te bespotten, maar dit gaat gepaard met verschillende problemen: De invoer van dergelijke modellen wordt effectief genegeerd. Als onverwachte veranderingen in de pijplijn ervoor zorgen dat de invoer van een modeloproep verandert, wordt dit niet weerspiegeld in de test. De gegenereerde outputs komen overeen met het formaat van de echte model outputs, maar niet met hun werkelijke inhoud. Hierdoor zijn de tests niet effectief in het verifiëren hoe het model wordt gebruikt in de context van een pijplijn. Het handmatig genereren van de uitvoer van dergelijke modelaanroepen is saai en omslachtig. Testsuites worden onoverzichtelijk met mocking code en moeilijk te begrijpen En dus dacht ik: er moet een betere manier zijn… Het idee Wat ik eigenlijk wilde was gewoon tests schrijven zonder me zorgen te maken over het al dan niet kunnen aanroepen van de modellen. In feite zijn modelaanroepen helemaal geen probleem in onze ontwikkelomgeving en worden ze alleen problematisch als ze automatisch in CI worden uitgevoerd. Hieruit kwam het idee: ik moest de tests één keer uitvoeren en daarbij de uitvoer van alle langzame en/of moeilijke aanroepen opnemen. Daarna kon ik, zolang de functie en invoer niet zouden veranderen, de opgenomen uitvoer gebruiken! Na wat experimenteren en iteraties in de ontwikkeling besloot ik om deze functionaliteit te ontwikkelen als een open-source publiek beschikbare pytest plugin. Een klein voorbeeld: Laten we eens laten zien hoe pytest-mimic werkt met een eenvoudig voorbeeld. Stel dat we een pijplijn met match_people_and_cars hebben geschreven die, gegeven een afbeelding, alle auto’s en mensen detecteert en elke auto toewijst aan een persoon op basis van hun uiterlijk: In deze (toegegeven: belachelijke) pijplijn zijn er drie aanroepen naar deep learning-modellen: detect_cars_and_people , car_autoencoder_model and people_autoencoder_model. Laten we er ook een paar eenvoudige tests voor schrijven: Stel nu dat alle drie de aanroepen naar de modellen onmogelijk zijn om uit te voeren in CI. Stel je voor dat je mocks schrijft voor elk van de modellen, voor elk van de tests. Vreselijk, toch? Ik weet zeker dat er genoeg manieren zijn om dit beter beheersbaar te maken, maar zou het niet fijn zijn om de tests gewoon zo te kunnen schrijven? Dat is waar pytest-mimic om de hoek komt kijken. Simpelweg de drie functies nabootsen in onze pytest configuratie: en voer de tests uit terwijl u opneemt in een omgeving waar de functieaanroepen kunnen worden gedaan (bijvoorbeeld op uw krachtige ontwikkelmachine met GPU-ondersteuning): pytest-mimiczal automatisch elke oproep opnemen en de uitvoer opslaan. Alle volgende pytest runs zullen in plaats daarvan gebruik maken van de opgenomen gesprekken! Merk op dat we geen boilerplate aan onze tests hoefden toe te voegen, waardoor ze kort en leesbaar blijven en toch hun effectiviteit behouden. In het bovengenoemde voorbeeld is pytest-mimic gebruikt om de moeite van het draaien van dure deep learning modellen in CI te vermijden, maar er zijn natuurlijk veel meer toepassingen. Enkele voorbeelden: Langzame functies nabootsen om de tijd die nodig is om een testsuite uit te voeren enorm te versnellen API-aanroepen nabootsen die sporadisch kunnen worden uitgevoerd, maar niet bij elke testrun Functies nabootsen die toegang hebben tot een externe bron die niet beschikbaar is in CI Merk echter op dat nabootsen niet altijd het juiste gereedschap is. Er zijn enkele beperkingen bij het gebruik van pytest-mimic , zoals: de ingangen van de nagebootste functie mogen niet variëren tussen de testruns (hoewel dit de beste toepassing is) de functies of methoden die worden nagebootst moeten atomair zijn (d.w.z. ze mogen de toestand van de invoer of andere externe objecten niet veranderen) De uitgangen moeten picklable zijn (zo worden ze opgeslagen op schijf) Mogelijk moet je gebruikmaken van git LFS of een andere tool om te voorkomen dat je archief verdrinkt met grote pickle bestanden. Als je zo ver bent gekomen: bedankt voor je aandacht en ik nodig je nogmaals uit om pytest-mimic uit te proberen.

Lees meer

Slimmer Inspecteren voor de NVWA

door Rob Weber

Senior Software Engineer

Sneller en betrouwbaarder inspecteren met Vision AI In samenwerking met de NVWA ontwikkelde Clockworks een slimme app die het werk van inspecteurs flink vereenvoudigt. Inspecteurs van de Nederlandse Voedsel- en Warenautoriteit (NVWA) controleren dagelijks of gewasbeschermingsmiddelen voldoen aan de regelgeving. Daarbij is één ding cruciaal: het toelatingsnummer. Dit unieke nummer bepaalt of een middel wel of niet is toegestaan op de Nederlandse markt. Tot voor kort betekende dit: elk etiket nauwkeurig aflezen, het nummer noteren en handmatig opzoeken in de database van het College voor de toelating van gewasbeschermingsmiddelen en biociden (CTGB). Tijdsintensief, foutgevoelig en omslachtig. Daar moest een slimmere oplossing voor komen. Samen maken we inspecteren slimmer Clockworks ontwikkelde een AI-gedreven app die het controleproces versnelt én betrouwbaarder maakt. De app is ontworpen in nauwe samenwerking met de NVWA, met aandacht voor de praktijk van inspecteurs in het veld. Afgelopen week is de eerste versie live gegaan in een pilot. De reacties zijn positief: de app werkt snel, intuïtief en scheelt aanzienlijk in tijd en moeite. Hoe het werkt De kracht zit in de eenvoud: De inspecteur maakt een foto van het etiket De Vision AI leest automatisch het toelatingsnummer van het middel De app checkt dit nummer direct in de officiële CTGB-database Binnen enkele seconden verschijnt op het scherm of het middel is toegestaan Geen handmatige invoer meer. Geen twijfel. Gewoon direct duidelijkheid. Wat het oplevert Deze oplossing laat zien hoe AI daadwerkelijk het verschil maakt in de praktijk: Snellere inspecties – minder tijd kwijt per controle Meer zekerheid – automatische controle voorkomt fouten Gebruiksgemak in het veld – ontworpen voor én met de mensen die ermee werken Bij Clockworks geloven we dat AI zichzelf moet bewijzen in de praktijk. Niet door ingewikkelde dashboards of abstracte modellen, maar door concrete oplossingen die het werk écht makkelijker maken. Deze samenwerking met de NVWA is daar een goed voorbeeld van. Door slimme technologie te koppelen aan een herkenbare werksituatie, ontstaat er een tool die precies doet wat nodig is—zonder poespas. We zijn trots op het resultaat en kijken uit naar de verdere uitrol.

Lees meer
Maak kennis met ‘PI-Test Mymic’

door Teo Cherici

AI Architect

Bij Clockworks schrijven we vaak pipelines die meerdere Deep Learning-modellen aanroepen, lokaal op de GPU of door verzoeken te doen aan een Triton-modelcluster. Het Probleem Helaas is het schrijven van tests voor deze pijplijnen vaak een gedoe: Een test de modellen direct laten aanroepen is eenvoudig in onze lokale ontwikkelomgevingen, maar moeilijk en broos in onze CI. In het verleden was onze standaardaanpak altijd om deze modelaanroepen te bespotten, maar dit gaat gepaard met verschillende problemen: De invoer van dergelijke modellen wordt effectief genegeerd. Als onverwachte veranderingen in de pijplijn ervoor zorgen dat de invoer van een modeloproep verandert, wordt dit niet weerspiegeld in de test. De gegenereerde outputs komen overeen met het formaat van de echte model outputs, maar niet met hun werkelijke inhoud. Hierdoor zijn de tests niet effectief in het verifiëren hoe het model wordt gebruikt in de context van een pijplijn. Het handmatig genereren van de uitvoer van dergelijke modelaanroepen is saai en omslachtig. Testsuites worden onoverzichtelijk met mocking code en moeilijk te begrijpen En dus dacht ik: er moet een betere manier zijn… Het idee Wat ik eigenlijk wilde was gewoon tests schrijven zonder me zorgen te maken over het al dan niet kunnen aanroepen van de modellen. In feite zijn modelaanroepen helemaal geen probleem in onze ontwikkelomgeving en worden ze alleen problematisch als ze automatisch in CI worden uitgevoerd. Hieruit kwam het idee: ik moest de tests één keer uitvoeren en daarbij de uitvoer van alle langzame en/of moeilijke aanroepen opnemen. Daarna kon ik, zolang de functie en invoer niet zouden veranderen, de opgenomen uitvoer gebruiken! Na wat experimenteren en iteraties in de ontwikkeling besloot ik om deze functionaliteit te ontwikkelen als een open-source publiek beschikbare pytest plugin. Een klein voorbeeld: Laten we eens laten zien hoe pytest-mimic werkt met een eenvoudig voorbeeld. Stel dat we een pijplijn met match_people_and_cars hebben geschreven die, gegeven een afbeelding, alle auto’s en mensen detecteert en elke auto toewijst aan een persoon op basis van hun uiterlijk: In deze (toegegeven: belachelijke) pijplijn zijn er drie aanroepen naar deep learning-modellen: detect_cars_and_people , car_autoencoder_model and people_autoencoder_model. Laten we er ook een paar eenvoudige tests voor schrijven: Stel nu dat alle drie de aanroepen naar de modellen onmogelijk zijn om uit te voeren in CI. Stel je voor dat je mocks schrijft voor elk van de modellen, voor elk van de tests. Vreselijk, toch? Ik weet zeker dat er genoeg manieren zijn om dit beter beheersbaar te maken, maar zou het niet fijn zijn om de tests gewoon zo te kunnen schrijven? Dat is waar pytest-mimic om de hoek komt kijken. Simpelweg de drie functies nabootsen in onze pytest configuratie: en voer de tests uit terwijl u opneemt in een omgeving waar de functieaanroepen kunnen worden gedaan (bijvoorbeeld op uw krachtige ontwikkelmachine met GPU-ondersteuning): pytest-mimiczal automatisch elke oproep opnemen en de uitvoer opslaan. Alle volgende pytest runs zullen in plaats daarvan gebruik maken van de opgenomen gesprekken! Merk op dat we geen boilerplate aan onze tests hoefden toe te voegen, waardoor ze kort en leesbaar blijven en toch hun effectiviteit behouden. In het bovengenoemde voorbeeld is pytest-mimic gebruikt om de moeite van het draaien van dure deep learning modellen in CI te vermijden, maar er zijn natuurlijk veel meer toepassingen. Enkele voorbeelden: Langzame functies nabootsen om de tijd die nodig is om een testsuite uit te voeren enorm te versnellen API-aanroepen nabootsen die sporadisch kunnen worden uitgevoerd, maar niet bij elke testrun Functies nabootsen die toegang hebben tot een externe bron die niet beschikbaar is in CI Merk echter op dat nabootsen niet altijd het juiste gereedschap is. Er zijn enkele beperkingen bij het gebruik van pytest-mimic , zoals: de ingangen van de nagebootste functie mogen niet variëren tussen de testruns (hoewel dit de beste toepassing is) de functies of methoden die worden nagebootst moeten atomair zijn (d.w.z. ze mogen de toestand van de invoer of andere externe objecten niet veranderen) De uitgangen moeten picklable zijn (zo worden ze opgeslagen op schijf) Mogelijk moet je gebruikmaken van git LFS of een andere tool om te voorkomen dat je archief verdrinkt met grote pickle bestanden. Als je zo ver bent gekomen: bedankt voor je aandacht en ik nodig je nogmaals uit om pytest-mimic uit te proberen.

Lees meer

Maak kennis
met onze
kunde in
het blog

Alle artikelen
Slimmer Inspecteren voor de NVWA

door Rob Weber

Senior Software Engineer

Sneller en betrouwbaarder inspecteren met Vision AI In samenwerking met de NVWA ontwikkelde Clockworks een slimme app die het werk van inspecteurs flink vereenvoudigt. Inspecteurs van de Nederlandse Voedsel- en Warenautoriteit (NVWA) controleren dagelijks of gewasbeschermingsmiddelen voldoen aan de regelgeving. Daarbij is één ding cruciaal: het toelatingsnummer. Dit unieke nummer bepaalt of een middel wel of niet is toegestaan op de Nederlandse markt. Tot voor kort betekende dit: elk etiket nauwkeurig aflezen, het nummer noteren en handmatig opzoeken in de database van het College voor de toelating van gewasbeschermingsmiddelen en biociden (CTGB). Tijdsintensief, foutgevoelig en omslachtig. Daar moest een slimmere oplossing voor komen. Samen maken we inspecteren slimmer Clockworks ontwikkelde een AI-gedreven app die het controleproces versnelt én betrouwbaarder maakt. De app is ontworpen in nauwe samenwerking met de NVWA, met aandacht voor de praktijk van inspecteurs in het veld. Afgelopen week is de eerste versie live gegaan in een pilot. De reacties zijn positief: de app werkt snel, intuïtief en scheelt aanzienlijk in tijd en moeite. Hoe het werkt De kracht zit in de eenvoud: De inspecteur maakt een foto van het etiket De Vision AI leest automatisch het toelatingsnummer van het middel De app checkt dit nummer direct in de officiële CTGB-database Binnen enkele seconden verschijnt op het scherm of het middel is toegestaan Geen handmatige invoer meer. Geen twijfel. Gewoon direct duidelijkheid. Wat het oplevert Deze oplossing laat zien hoe AI daadwerkelijk het verschil maakt in de praktijk: Snellere inspecties – minder tijd kwijt per controle Meer zekerheid – automatische controle voorkomt fouten Gebruiksgemak in het veld – ontworpen voor én met de mensen die ermee werken Bij Clockworks geloven we dat AI zichzelf moet bewijzen in de praktijk. Niet door ingewikkelde dashboards of abstracte modellen, maar door concrete oplossingen die het werk écht makkelijker maken. Deze samenwerking met de NVWA is daar een goed voorbeeld van. Door slimme technologie te koppelen aan een herkenbare werksituatie, ontstaat er een tool die precies doet wat nodig is—zonder poespas. We zijn trots op het resultaat en kijken uit naar de verdere uitrol.

Lees meer
Maak kennis met ‘PI-Test Mymic’

door Teo Cherici

AI Architect

Bij Clockworks schrijven we vaak pipelines die meerdere Deep Learning-modellen aanroepen, lokaal op de GPU of door verzoeken te doen aan een Triton-modelcluster. Het Probleem Helaas is het schrijven van tests voor deze pijplijnen vaak een gedoe: Een test de modellen direct laten aanroepen is eenvoudig in onze lokale ontwikkelomgevingen, maar moeilijk en broos in onze CI. In het verleden was onze standaardaanpak altijd om deze modelaanroepen te bespotten, maar dit gaat gepaard met verschillende problemen: De invoer van dergelijke modellen wordt effectief genegeerd. Als onverwachte veranderingen in de pijplijn ervoor zorgen dat de invoer van een modeloproep verandert, wordt dit niet weerspiegeld in de test. De gegenereerde outputs komen overeen met het formaat van de echte model outputs, maar niet met hun werkelijke inhoud. Hierdoor zijn de tests niet effectief in het verifiëren hoe het model wordt gebruikt in de context van een pijplijn. Het handmatig genereren van de uitvoer van dergelijke modelaanroepen is saai en omslachtig. Testsuites worden onoverzichtelijk met mocking code en moeilijk te begrijpen En dus dacht ik: er moet een betere manier zijn… Het idee Wat ik eigenlijk wilde was gewoon tests schrijven zonder me zorgen te maken over het al dan niet kunnen aanroepen van de modellen. In feite zijn modelaanroepen helemaal geen probleem in onze ontwikkelomgeving en worden ze alleen problematisch als ze automatisch in CI worden uitgevoerd. Hieruit kwam het idee: ik moest de tests één keer uitvoeren en daarbij de uitvoer van alle langzame en/of moeilijke aanroepen opnemen. Daarna kon ik, zolang de functie en invoer niet zouden veranderen, de opgenomen uitvoer gebruiken! Na wat experimenteren en iteraties in de ontwikkeling besloot ik om deze functionaliteit te ontwikkelen als een open-source publiek beschikbare pytest plugin. Een klein voorbeeld: Laten we eens laten zien hoe pytest-mimic werkt met een eenvoudig voorbeeld. Stel dat we een pijplijn met match_people_and_cars hebben geschreven die, gegeven een afbeelding, alle auto’s en mensen detecteert en elke auto toewijst aan een persoon op basis van hun uiterlijk: In deze (toegegeven: belachelijke) pijplijn zijn er drie aanroepen naar deep learning-modellen: detect_cars_and_people , car_autoencoder_model and people_autoencoder_model. Laten we er ook een paar eenvoudige tests voor schrijven: Stel nu dat alle drie de aanroepen naar de modellen onmogelijk zijn om uit te voeren in CI. Stel je voor dat je mocks schrijft voor elk van de modellen, voor elk van de tests. Vreselijk, toch? Ik weet zeker dat er genoeg manieren zijn om dit beter beheersbaar te maken, maar zou het niet fijn zijn om de tests gewoon zo te kunnen schrijven? Dat is waar pytest-mimic om de hoek komt kijken. Simpelweg de drie functies nabootsen in onze pytest configuratie: en voer de tests uit terwijl u opneemt in een omgeving waar de functieaanroepen kunnen worden gedaan (bijvoorbeeld op uw krachtige ontwikkelmachine met GPU-ondersteuning): pytest-mimiczal automatisch elke oproep opnemen en de uitvoer opslaan. Alle volgende pytest runs zullen in plaats daarvan gebruik maken van de opgenomen gesprekken! Merk op dat we geen boilerplate aan onze tests hoefden toe te voegen, waardoor ze kort en leesbaar blijven en toch hun effectiviteit behouden. In het bovengenoemde voorbeeld is pytest-mimic gebruikt om de moeite van het draaien van dure deep learning modellen in CI te vermijden, maar er zijn natuurlijk veel meer toepassingen. Enkele voorbeelden: Langzame functies nabootsen om de tijd die nodig is om een testsuite uit te voeren enorm te versnellen API-aanroepen nabootsen die sporadisch kunnen worden uitgevoerd, maar niet bij elke testrun Functies nabootsen die toegang hebben tot een externe bron die niet beschikbaar is in CI Merk echter op dat nabootsen niet altijd het juiste gereedschap is. Er zijn enkele beperkingen bij het gebruik van pytest-mimic , zoals: de ingangen van de nagebootste functie mogen niet variëren tussen de testruns (hoewel dit de beste toepassing is) de functies of methoden die worden nagebootst moeten atomair zijn (d.w.z. ze mogen de toestand van de invoer of andere externe objecten niet veranderen) De uitgangen moeten picklable zijn (zo worden ze opgeslagen op schijf) Mogelijk moet je gebruikmaken van git LFS of een andere tool om te voorkomen dat je archief verdrinkt met grote pickle bestanden. Als je zo ver bent gekomen: bedankt voor je aandacht en ik nodig je nogmaals uit om pytest-mimic uit te proberen.

Lees meer