Een computer leren wat een bal is....
Moderator: Moderators
Een computer leren wat een bal is....
Even een avondje klussen in Python met een leuk resultaat, computer weet nu wat een bal is. Zolang deze maar geel is in dit geval. Een 2-jarig kind doet het beter, maar het is een leuk beginnetje.
Maar wat moet je nu met zoiets? Kwam dit video'tje tegen met de eerste versie die ik nastreef:
Maar uiteindelijk is dit natuurlijk wel het ultieme:
In ieder geval: het houdt me van de straat
Maar wat moet je nu met zoiets? Kwam dit video'tje tegen met de eerste versie die ik nastreef:
Maar uiteindelijk is dit natuurlijk wel het ultieme:
In ieder geval: het houdt me van de straat
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
- hugo stoutjesdijk
- Donateur
- Berichten: 12054
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Een computer leren wat een bal is....
Leuk, en dan 2 naast elkaar de bal over laten gooien.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Re: Een computer leren wat een bal is....
Blijft geinig, dit soort klusjes.
Hoe doe je het? Conversie naar HSV, drempeltjes, Hough transformatie?
Hoe doe je het? Conversie naar HSV, drempeltjes, Hough transformatie?
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Re: Een computer leren wat een bal is....
Zit ook een camera bij voor machine learning ?
- Markus
- Donateur
- Berichten: 1021
- Lid geworden op: 01 sep 2007 22:43
- Locatie: Aduard, Groningen
- Contacteer:
Re: Een computer leren wat een bal is....
Hoi Tolp2
Ik heb een aantal jaren geleden voor een opdracht wat tijd aan het tracken van voorwerpen op kleur besteed en het best aardig aan de gang gekregen. Als ik naar je voorbeeld kijk dan schat ik zo in dat je blob detectie gebruikt in opencv (cv2.SimpleBlobDetector) . Ik heb om die blobdetectie te verbeteren meerdere beeldbewerkingen gedaan alvorens de blobdetectie te doen.
1. Contrast verbetering met cv2.equalizeHist
2. Ruis en artifacts onderdrukking met cv2.erode daarna blobs vetter maken met cv2.dilate
3. flink blurren met cv2.GaussianBlur om daarna cv2.threshold de boel flink zwart wit te trekken (soort van super contrast)
Bovenstaande maakt je blob veel meer een blob en onderdrukt sommige belichtingseffecten.
Als ik het opnieuw zou doen zou ik het misschien nu met deeplearning proberen met bijvoorbeeld pythorch (met cuda ondersteuning) en dan leren alleen jouw bal te zien met een eigen dataset (weet nog niet hoe dat moet). Maar ik heb al wat eravring met tensorflow en ook yolo3 met andermans datasets en kan niet zeggen dat de herkenning altijd even geweldig is. En zonder Nvidia videokaart is dat ernstig traag.
Greetz,
Markus
Ik heb een aantal jaren geleden voor een opdracht wat tijd aan het tracken van voorwerpen op kleur besteed en het best aardig aan de gang gekregen. Als ik naar je voorbeeld kijk dan schat ik zo in dat je blob detectie gebruikt in opencv (cv2.SimpleBlobDetector) . Ik heb om die blobdetectie te verbeteren meerdere beeldbewerkingen gedaan alvorens de blobdetectie te doen.
1. Contrast verbetering met cv2.equalizeHist
2. Ruis en artifacts onderdrukking met cv2.erode daarna blobs vetter maken met cv2.dilate
3. flink blurren met cv2.GaussianBlur om daarna cv2.threshold de boel flink zwart wit te trekken (soort van super contrast)
Bovenstaande maakt je blob veel meer een blob en onderdrukt sommige belichtingseffecten.
Als ik het opnieuw zou doen zou ik het misschien nu met deeplearning proberen met bijvoorbeeld pythorch (met cuda ondersteuning) en dan leren alleen jouw bal te zien met een eigen dataset (weet nog niet hoe dat moet). Maar ik heb al wat eravring met tensorflow en ook yolo3 met andermans datasets en kan niet zeggen dat de herkenning altijd even geweldig is. En zonder Nvidia videokaart is dat ernstig traag.
Greetz,
Markus
-
- Berichten: 245
- Lid geworden op: 28 nov 2017 19:50
- Locatie: Oost-vlaanderen
Re: Een computer leren wat een bal is....
Ik zou het gewoon mooi houden bij hough transform, nergens nodig die deep learning voor zo een simpel task, dat is zoals een grote graafmachine gebruiken om een klein putje te graven in je tuin.
Blob kan goed werken en zeer snel zelfs als je belichting en beeldkwaliteit uitstekend is.
Hough transform is een pak robuuster voor wat uitdagender omstandigheden.
Deze kan trager zijn omwille van de canny edge detection dat eraan voorafgegaan wordt. Nogmaals, als je belichting en contrast goed is kan je deze zelfs proberen eruit te laten.
Voor de rest is het tweaken van de parameters van de hough transform: als je weet tussen welke grenzen de diameter van je cirkel ligt, kun je je detectie een heel pak sneller maken.
Als je machine learning pad op gaat heb je heel vaak een NVIDIA Jetson of iets gelijkaardigs nodig.
Blob kan goed werken en zeer snel zelfs als je belichting en beeldkwaliteit uitstekend is.
Hough transform is een pak robuuster voor wat uitdagender omstandigheden.
Deze kan trager zijn omwille van de canny edge detection dat eraan voorafgegaan wordt. Nogmaals, als je belichting en contrast goed is kan je deze zelfs proberen eruit te laten.
Voor de rest is het tweaken van de parameters van de hough transform: als je weet tussen welke grenzen de diameter van je cirkel ligt, kun je je detectie een heel pak sneller maken.
Als je machine learning pad op gaat heb je heel vaak een NVIDIA Jetson of iets gelijkaardigs nodig.
Re: Een computer leren wat een bal is....
Wat een leuke reacties .
De video wordt real-life verwerkt met behulp van de webcam in mijn laptop. Gemiddelde frame-rate is ongeveer 30 frames per seconde. Op iedere frame worden de volgende stappen doorlopen:
- resize naar 640 x 480 pixels;
- Gaussian blur;
- omzetten naar HSV
- mask creëren op basis van inRange, de kleuren die hiervoor gebruikt worden zijn de sliders in de GUI;
- erode, met twee iteraties;
- dilate, met twee iteraties;
- contour detectie;
- bepalen minimale omschreven cirkel voor de contour. Het middelpunt van de cirkel ligt op het zwaartepunt van de 'blob'.
Het is hobby . Heb ooit een beschoeiing geplaatst in de tuin. Je kan natuurlijk een palenrammer huren bij Boels, een heistelling inzetten (want bouwvak) kan ook en is veel leuker. Het gaat er niet altijd om of het het juiste gereedschap is, wel om de hoeveelheid lol. En het geeft je een uitgelezen kans om je te verdiepen in velden die je nog compleet niet kent.chimaerion schreef: ↑18 apr 2021 22:21 Ik zou het gewoon mooi houden bij hough transform, nergens nodig die deep learning voor zo een simpel task, dat is zoals een grote graafmachine gebruiken om een klein putje te graven in je tuin.
Op de CNC-dag 2025 een ping pong competitie houden?
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
- hugo stoutjesdijk
- Donateur
- Berichten: 12054
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Een computer leren wat een bal is....
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Re: Een computer leren wat een bal is....
Ondertussen wat voorbereidingen getroffen om een 1D-balanceer inrichting te maken. Recept wordt:
Waarom zo'n moeilijke aanvliegroute: drie van dit soort armen geven een mooie platform met 3-DOF (2 verdraaiingen om x en y as en translatie in de z-richting).....
TO BE CONTINUED
- Een hoek profiel, ongeveer 30 cm lang;
- Aandrijving door middel van een servo aan een Arduino;
- Camera er boven hangen aan een PC geknoopt;
- Alle onderdelen uit de 3D printer
Code: Selecteer alles
import math
class FourBarLinkageAngleConverter():
def driver_angle(self, z: float , plate_angle: float):
"""Calculates the angle of the driver linkage based on the z and angle of the plate. See
https://www.desmos.com/calculator/iuprdl6sxk for more information and simulating 4-bar
linkages
Args:
z (float): The height of the platform relative to the height of the servo
plate_angle (float): The angle of the plate in radians
Returns:
float: The required angle of the servo motor in radians.
"""
# The center of the plate
p1 = 0
q1 = z
# The edge of the plate
p2 = p1 - self._r1 * math.cos(plate_angle)
q2 = q1 - self._r1 * math.sin(plate_angle)
# The location of the servo motor
p4 = self._x_servo
q4 = 0
# The 'free' hinge
a1 = self._r4**2 - self._r2**2
b1 = (p4-p2)**2 + (q4-q2)**2
p3 = (p2*(a1+b1) - p4*(a1-b1) + (q2-q4) * math.sqrt(4*b1*self._r2**2-(a1-b1)**2)) / (2 * b1)
q3 = (q2*(a1+b1) - q4*(a1-b1) + (p4-p2) * math.sqrt(4*b1*self._r2**2-(a1-b1)**2)) / (2 * b1)
print(p3, q3)
return math.atan2(q3, p3 - self._x_servo)
def __init__(self, r1, r2, r4, x_servo):
self._r1 = r1
self._r2 = r2
self._r4 = r4
self._x_servo = x_servo
TO BE CONTINUED
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
- Arie Kabaalstra
- Donateur
- Berichten: 13536
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Een computer leren wat een bal is....
Kan ik uren naar kijken. Dit ding is echt gaaf!
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: Een computer leren wat een bal is....
Kan prima in de woonkamer als kinetische kunst. Heel fraai.