Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #34221 > unrolled thread
| Started by | heby <heby@poczta.onet.pl> |
|---|---|
| First post | 2020-10-21 10:29 +0200 |
| Last post | 2020-10-23 12:16 -0700 |
| Articles | 20 on this page of 35 — 9 participants |
Back to article view | Back to pl.comp.programming
Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-21 10:29 +0200
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-21 10:50 +0200
Re: Odczyt ciśnienia - analiza obrazu Maciej Sobczak <see.my.homepage@gmail.com> - 2020-10-21 12:44 -0700
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-21 22:03 +0200
Re: Odczyt ciśnienia - analiza obrazu Maciej Sobczak <see.my.homepage@gmail.com> - 2020-10-21 15:07 -0700
Re: Odczyt ciśnienia - analiza obrazu Andrzej S <asta@evbox.pl> - 2020-10-22 08:55 +0200
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-22 09:19 +0200
Re: Odczyt ciśnienia - analiza obrazu Maciej Sobczak <see.my.homepage@gmail.com> - 2020-10-22 09:29 -0700
Re: Odczyt ciśnienia - analiza obrazu Roman Tyczka <romantyczka@hate.you.spammer> - 2020-10-22 19:52 +0200
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-22 22:16 +0200
Re: Odczyt ciśnienia - analiza obrazu Adam M <amorawski@magna-power.com> - 2020-10-23 07:50 -0700
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-23 18:10 +0200
Re: Odczyt ciśnienia - analiza obrazu Mateusz Viste <mateusz@xyz.invalid> - 2020-10-23 18:16 +0200
Re: Odczyt ciśnienia - analiza obrazu heby <heby@poczta.onet.pl> - 2020-10-23 18:52 +0200
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-13 20:35 -0800
Re: Odczyt ciśnienia - analiza obrazu Mateusz Viste <mateusz@xyz.invalid> - 2020-11-14 20:21 +0100
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-14 21:56 -0800
Re: Odczyt ciśnienia - analiza obrazu Mateusz Viste <mateusz@xyz.invalid> - 2020-11-16 09:42 +0100
Re: Odczyt ciśnienia - analiza obrazu Maciek Godek <godek.maciek@gmail.com> - 2020-11-16 01:03 -0800
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-16 04:29 -0800
Re: Odczyt ciśnienia - analiza obrazu Maciek Godek <godek.maciek@gmail.com> - 2020-11-16 10:23 -0800
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-18 12:44 -0800
Re: Odczyt ciśnienia - analiza obrazu Maciek Godek <godek.maciek@gmail.com> - 2020-11-18 14:10 -0800
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-19 04:30 -0800
Re: Odczyt ciśnienia - analiza obrazu Maciek Godek <godek.maciek@gmail.com> - 2020-11-20 08:02 -0800
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-20 14:38 -0800
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-11-29 23:39 -0800
Re: Odczyt ciśnienia - analiza obrazu slawek <x.y@org.org> - 2020-12-03 11:51 +0100
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-12-03 17:04 -0800
Re: Odczyt ciśnienia - analiza obrazu Mateusz Viste <mateusz@xyz.invalid> - 2020-12-04 09:49 +0100
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-12-04 04:09 -0800
Re: Odczyt ciśnienia - analiza obrazu slawek <x.y@org.org> - 2020-12-05 17:51 +0100
Re: Odczyt ciśnienia - analiza obrazu "M.M." <mmarszik@gmail.com> - 2020-12-06 23:33 -0800
Re: Odczyt ciśnienia - analiza obrazu Maciej Sobczak <see.my.homepage@gmail.com> - 2020-11-15 13:56 -0800
Re: Odczyt ciśnienia - analiza obrazu Adam M <amorawski@magna-power.com> - 2020-10-23 12:16 -0700
Page 1 of 2 [1] 2 Next page →
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-21 10:29 +0200 |
| Subject | Odczyt ciśnienia - analiza obrazu |
| Message-ID | <rmorh6$cu7$1@dont-email.me> |
Cześć. Jest takie coś: https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkHeubBNSpJPAS5F/view?usp=sharing Zdjęcie jest zrobione normalnym aparatem, docelowo będzie to nagrywane gorszej jakosci kamerą, więc kontrast i szumy będa inne, odczyt będzie też w nocy (podświetlowny z boku) więc cienie też będą inne. Wiem, że zawsze orientacja obrazu będzie taka jak widać, czyli połowa zakresu, wskazówka w pionie. Kamerę mam pod kontrolą. Zadanie: Mając do dyspozycji niewielką moc obliczeniową (~-pi) zanalizować obraz i odczytać położenie wskazówki na tarczy dostając liczbę 0-max. To nie jest krytyczne, wiec jesli raz na jakiś czas będzie bład to nie złego się nie stanie. Po drugie, to nie jest real-time. Jeśli odczytam położenie raz na kilkanaście sekund, będzie ok. Najwygodniej będzie mi uzyć OpenCV + python bo mam w tym jakieś doświadczenia. Teraz: Mam jakieś pomysły jak to zrealizować za pomocą kilku algorytmów, ale całośc rozbija się o to, że warunki w których to robię, będą zmienne. Zarówno oświetlenie jak i "zaparowanie" górnej częsci wyświetlacza będą zależały od pogody. Coś czuje że bez sprytniejszych algorytmów daleko nie zajadę. Opcja czołgowa: generować sztuczny obraz czyjnika bez wskazówki, metodami porównywania obrazu dopasować go idealnie do klatki z kamery, wklejać wskazówkę co kilka stopni i sprawdać która z takich wklejonych wskazówek splecie się najlepiej z obrazem. Tylko że to czasochłonne. Opcja sensowna: algorytm potrafiący określić od razu kąt pod którym widać wskazówkę, np. po wykasowaniu pierścienia i tarcz (tarcze pewnie załatwi prosta binaryzacjia + erozja). Jakieś propozycje na odczyt kąta pod którym jest wskazówka? Może ktoś widział podobne zagadnienie w postaci publikacji gdzie mógłbym zerknąć choćby na hasłowe algorytmy? PS. Nie, nie da się podłaczyć czujnika innego niż ten ;) Z przyczyn pozatechnicznych. PS2. To nie zaliczenie, to konkretny problem ad-hoc z domu ...
[toc] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-21 10:50 +0200 |
| Message-ID | <rmoso3$jpj$1@dont-email.me> |
| In reply to | #34221 |
On 21/10/2020 10:29, heby wrote: > Cześć. I jeszcze jedno: tak wiem że są "gotowce" na sieci, nawet kilka obejrzałem, zwyczajowo sprawadzaja się do binaryzacji i użycia na tym transformaty Hougha. Ale może ktoś ma jakiś inny pomysł, nie wykluczam że fajnie by było usłyszeć o AI.
[toc] | [prev] | [next] | [standalone]
| From | Maciej Sobczak <see.my.homepage@gmail.com> |
|---|---|
| Date | 2020-10-21 12:44 -0700 |
| Message-ID | <adff23b5-8689-4e06-8533-9df6beec0a55n@googlegroups.com> |
| In reply to | #34221 |
> Jest takie coś:
>
> https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkHeubBNSpJPAS5F/view?usp=sharing
Wolfram:
img = Import["cisnieniomierz.jpg"];
img2 = ImageTake[
ImageResize[ImageMultiply[img, 5], 500], {76, -39}, {86, -82}];
img2 to rozjaśniony, wycentrowany (na oś wskazówki, wartości dobrane) i pomniejszony obraz ciśnieniomierza.
mask = Rasterize[
Graphics[{Disk[{0, 0}, 1.1], White, Disk[{0, 0}, 1]},
PlotRange -> {{-1.75, 1.75}, {-1.75, 1.75}}],
RasterSize -> ImageDimensions[img2]];
mask to maska, która wycina pierścień tam, gdzie jest czerwone pole (tam jest tylko czarna wskazówka na czerwonym, więc nic innego nie przeszkadza).
img3 = ImageMultiply[img2, ColorNegate[mask]];
img4 = ImageAdd[img3, mask];
img4 to wycięte czerwone pole z kawałkiem czarnej wskazówki, reszta jest całkiem biała.
blacks = PixelValuePositions[img4, Black, 0.15];
blacks to lista pozycji czarnych (lub prawie czarnych, tolerancja dobrana) pikseli. Jest ich w sumie 7.
Map[
Function[p,
N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree
],
blacks
] // Median
7.81529
I tyle właśnie, w stopniach, jest odchylona wskazówka od poziomu.
Można też porobić dużo zdjęć wzorcowych i porównywać korelacją albo jakimiś sieciami, ale samą arytmetyką jest dużo taniej. Da się to zrobić w dowolnym innym języku.
(BTW - Google twierdzi, że w tym kodzie są adresy mailowe. Dobre.)
--
Maciej Sobczak * http://www.inspirel.com
[toc] | [prev] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-21 22:03 +0200 |
| Message-ID | <rmq46c$iui$1@dont-email.me> |
| In reply to | #34223 |
On 21/10/2020 21:44, Maciej Sobczak wrote: >> https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkHeubBNSpJPAS5F/view?usp=sharing > Wolfram: Niestety ciezko go wdrożyć, troche jak matlab, dobry do prezentacji na konferencji i reszte rób se sam ;) > Map[ > Function[p, > N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree > ], > blacks > ] // Median > > 7.81529 > > I tyle właśnie, w stopniach, jest odchylona wskazówka od poziomu. Co to w zasadzie robi? Wcześniejsze funkcje to tylko prosta obróbka obrazu, ale tutaj troche niejasne, nie znam składni Wolframa. Tylko arctang liczysz z pixeli? Co to za mapa? > Można też porobić dużo zdjęć wzorcowych i porównywać korelacją albo jakimiś sieciami, ale samą arytmetyką jest dużo taniej. Obawiam się że nie zadziała jak tylko zmienią się warunki oświetlenia. Obecnie projektuje podstawkę pod kamerę, trzeba to jeszcze wydrukować i będę miał pełny zakres oświetlenia po 1 dobie, więc grybam sobie jak to będzie wygladać, ale raczej będzie oświetlenie nocne i może część detali zmieni kompletnie wygląd. Robiłem kilka analiz tego typu róznymi metodami i zazwyczaj proste liczenie pixeli wybija sobie zęby o pierwszą muchę na obrazie, słabo się sprawdzą jak pojawią się odbicia, cienie, szum. Szukam czegoś bardziej, bo ja wiem, statystycznego. Transformata Hougha jest tutaj praktycznie oczywistym rozwiązaniem, ale o ile wiem jest bardzo cieżka obliczeniowo (masa latania po obrazie i kręcenia prostą sumując pixele). Ale może się mylę i z tej prostej metody wynika jednak jakaś optymalizacja stosowana w opencv? Obecnie szyje sobie na boku własnie coś oparte o Hougha, czuje jednak że można prościej, np. można zrobić splot ze sztuczną wskazówką, bo środek tarczy jestem w stanie łatwo znaleźć i ją sobie narysować. W tedy z Hougha zostanie tylko 1 punkt z nieznanym "fi" co znacząco zmniejszy ilośc liczenia. Albo nie mam racji i nie warto tak optymalizować. > Da się to zrobić w dowolnym innym języku. Wiadomo.
[toc] | [prev] | [next] | [standalone]
| From | Maciej Sobczak <see.my.homepage@gmail.com> |
|---|---|
| Date | 2020-10-21 15:07 -0700 |
| Message-ID | <c702d09d-0931-4715-aa0c-248c391b0697n@googlegroups.com> |
| In reply to | #34224 |
> > Wolfram:
>
> Niestety ciezko go wdrożyć,
Na RaspberryPi jest już wdrożony. Akurat do gapienia się na ciśnieniomierz w piwnicy.
> > Map[
> > Function[p,
> > N@ArcTan[Divide @@ Reverse[(p - ImageDimensions[img2]/2)]]/Degree
> > ],
> > blacks
> > ] // Median
> Co to w zasadzie robi? Wcześniejsze funkcje to tylko prosta obróbka
> obrazu, ale tutaj troche niejasne, nie znam składni Wolframa. Tylko
> arctang liczysz z pixeli? Co to za mapa?
Z wcześniejszych obliczeń, blacks to lista pozycji czarnych punktów, np. taka (powiedzmy, że są 3 punkty obok siebie):
{{42,65},{43,65},{43,66}}
Powiedzmy, że obrazek ma 200x200, więc środek ma w punkcie {100,100}. Taką wartość dostajemy z ImageDimensions[img2]/2.
Trzeba znaleźć wektor ze środka obrazka (bo wcześniejsze obliczenia były po to, żeby środek obrazka był w osi wskazówki) do tych czarnych punktów - to robi odejmowanie (p - ImageDimensions[img2]/2), jeśli p jest jednym z punktów z listy. Dalej liczymy normalnie ArcTan[y/x] tego wektora, ale skoro mamy {x,y}, to trzeba odwrócić kolejność (Reverse) i zamienić parę na dzielenie (Divide). Wynik chcemy w stopniach - dzielimy przez Degree, co jest stałą oznaczajacą ilość radianów w stopniu. Mapa robi to wszystko dla każdego punktu z listy. Na sam koniec (notacja post-fix) jest wybierany środkowy wynik, na wypadek gdyby trafiła się jakaś "mucha" gdzieś.
Można się jeszcze zastanowić, w którym kwadrancie są te punkty, bo to wpływa na znak kąta.
> Robiłem kilka analiz tego typu róznymi metodami i zazwyczaj proste
> liczenie pixeli wybija sobie zęby o pierwszą muchę
Właśnie nie. Można nawet przyjąć jakąś oczekiwaną liczbę pikseli z tej analizy. Jak jest ich za dużo, to masz muchę i odrzucasz pomiar. Jak jest ich tyle, co trzeba, to jest ok (albo się urwała wskazówka i jest mucha udająca wskazówkę - ale takiego sabotażu niczym się nie obsłuży).
> Transformata [...]
Szkoda liczenia.
--
Maciej Sobczak * http://www.inspirel.com
[toc] | [prev] | [next] | [standalone]
| From | Andrzej S <asta@evbox.pl> |
|---|---|
| Date | 2020-10-22 08:55 +0200 |
| Message-ID | <rmrac6$l8j$1@news.vectranet.pl> |
| In reply to | #34221 |
W dniu 2020-10-21 10:29, heby pisze: > Cześć. > > Jest takie coś: > > https://drive.google.com/file/d/1wsunQU_gOmqgQ1-jFkHeubBNSpJPAS5F/view?usp=sharing > 1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka). Grubość wskazówki mówi ile ich powinno być. 2. Wzdłuż każdego odcinka policz sumę RGB. 3. Wskazówka to ten odcinek, dla którego suma jest minimalna. pozdro -- A S
[toc] | [prev] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-22 09:19 +0200 |
| Message-ID | <rmrbq8$6h9$1@dont-email.me> |
| In reply to | #34226 |
On 22/10/2020 08:55, Andrzej S wrote: > 1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka). > Grubość wskazówki mówi ile ich powinno być. > 2. Wzdłuż każdego odcinka policz sumę RGB. > 3. Wskazówka to ten odcinek, dla którego suma jest minimalna. To własnie uproszczona transformata Hougha. Bede to m.in. próbował jak ogarnę mechaniczne mocowanie, ale najpierw pójdzie uproszczony algorytm od Maćka.
[toc] | [prev] | [next] | [standalone]
| From | Maciej Sobczak <see.my.homepage@gmail.com> |
|---|---|
| Date | 2020-10-22 09:29 -0700 |
| Message-ID | <35238dd8-a70c-4c79-a1fc-093edcf783f1n@googlegroups.com> |
| In reply to | #34226 |
> 1. Skonstruuj pęk kilkuset odcinków od środka do brzegu (jak wskazówka). > Grubość wskazówki mówi ile ich powinno być. Dobry pomysł, ale odcinki powinny mieć taką samą długość, bo inaczej odległość do brzegu będzie mieć wpływ na sumę. W sensie - niech to będzie "do brzegu", ale np. tarczy, a nie całego obrazka. -- Maciej Sobczak * http://www.inspirel.com
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <romantyczka@hate.you.spammer> |
|---|---|
| Date | 2020-10-22 19:52 +0200 |
| Message-ID | <5f91c6f4$0$503$65785112@news.neostrada.pl> |
| In reply to | #34221 |
W dniu 21.10.2020 o 10:29, heby pisze: > PS. Nie, nie da się podłaczyć czujnika innego niż ten ;) Z przyczyn > pozatechnicznych. > > PS2. To nie zaliczenie, to konkretny problem ad-hoc z domu ... A może wybić szybkę, pomalować wskazówkę mocno odblaskowym lakierem i robić fotę z drobnym oświetleniem? Wtedy wskazówka będzie "świecić" i łatwo ją będzie zlokalizować. -- pzdr Roman
[toc] | [prev] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-22 22:16 +0200 |
| Message-ID | <rmspap$ps7$1@dont-email.me> |
| In reply to | #34229 |
On 22/10/2020 19:52, Roman Tyczka wrote: > A może wybić szybkę, pomalować wskazówkę mocno odblaskowym lakierem i > robić fotę z drobnym oświetleniem? Za 5 lat. Po gwarancji ... > Wtedy wskazówka będzie "świecić" i łatwo ją będzie zlokalizować. A jak by jeszcze do niej przymocować mały enkoder ... Wiesz, jak bym mógl pozbyć się tego manometru i wstawić czujnik elektroniczny to by w ogóle tematu nie było ... Na razie w grę wchodzą metody bezinwazyjne, kiedyś, w przyszłosci, będa metody sensowne. PS. Znalazłm wiele lat temu rozwiązanie podobnego problemu za pomocą kilku cewek wykrywajacych zmianę inducyjności gdy pod nimi była wskazówka. Autor narzekał, że całośc rozkalibrowuje się co chwile. PS2. A całkiem serio to pomyślałem że to taka zabawa. Wiedza o ciśnieniu jest mi prawie niepotrzebna, ale chciałem sobie poćwiczyć pythona i opencv. To czemu nie skorzystać z okazji i zrobic coś użytecznego.
[toc] | [prev] | [next] | [standalone]
| From | Adam M <amorawski@magna-power.com> |
|---|---|
| Date | 2020-10-23 07:50 -0700 |
| Message-ID | <d68a5888-69b8-48d3-b74a-d69a236ba781n@googlegroups.com> |
| In reply to | #34230 |
On Thursday, October 22, 2020 at 4:16:28 PM UTC-4, heby wrote: > On 22/10/2020 19:52, Roman Tyczka wrote: > > A może wybić szybkę, pomalować wskazówkę mocno odblaskowym lakierem i > > robić fotę z drobnym oświetleniem? > Za 5 lat. Po gwarancji ... > > Wtedy wskazówka będzie "świecić" i łatwo ją będzie zlokalizować. > A jak by jeszcze do niej przymocować mały enkoder ... Wiesz, jak bym > mógl pozbyć się tego manometru i wstawić czujnik elektroniczny to by w > ogóle tematu nie było ... > > Na razie w grę wchodzą metody bezinwazyjne, kiedyś, w przyszłosci, będa > metody sensowne. A moze sprobowac zabawy z kolorem oswietlenia w celu poprawienia widocznosci wskazowki - mialem doczynienia z kamerami firmy Cognex uzywanymi razem z robotami przemyslowymi i odpowiedni kolor oswietlenia plus filtry polaryzacyjne czynia cuda. Albo zainwestowac w taka camera z wbudowanym systemem detekcji - jesli to jest instalacja przemyslowa (poniewaz te kamery do tanich nie naleza).
[toc] | [prev] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-23 18:10 +0200 |
| Message-ID | <rmuva3$a2k$1@dont-email.me> |
| In reply to | #34231 |
On 23/10/2020 16:50, Adam M wrote: > A moze sprobowac zabawy z kolorem oswietlenia w celu poprawienia widocznosci wskazowki Mamy 2020, niech się tym zajmuje AI a nie jakies hardwareowe, a fe, rozwiązania ;)
[toc] | [prev] | [next] | [standalone]
| From | Mateusz Viste <mateusz@xyz.invalid> |
|---|---|
| Date | 2020-10-23 18:16 +0200 |
| Message-ID | <20201023181640.0f3af18f@mateusz> |
| In reply to | #34232 |
2020-10-23 o 18:10 +0200, heby napisał: > On 23/10/2020 16:50, Adam M wrote: > > A moze sprobowac zabawy z kolorem oswietlenia w celu poprawienia > > widocznosci wskazowki > > Mamy 2020, niech się tym zajmuje AI a nie jakies hardwareowe, a fe, > rozwiązania ;) AI są fajne, ostatnio trochę się tym bawiłem. Nie podoba mi się jednak to, że kiedy raz zdarzy się że sieć neuronowa nie zachowa się tak, jak powinna (czy jak człowiek tego oczekuje) - to nie wiadomo ani dlaczego, ani jak to naprawić. No tak, można intensywnie testować, ale w zależności od domeny przetestowanie 100% pokrycia może nie być realistyczne. Mateusz
[toc] | [prev] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2020-10-23 18:52 +0200 |
| Message-ID | <rmv1or$pvi$1@dont-email.me> |
| In reply to | #34233 |
On 23/10/2020 18:16, Mateusz Viste wrote: >> Mamy 2020, niech się tym zajmuje AI a nie jakies hardwareowe, a fe, >> rozwiązania ;) > AI są fajne, ostatnio trochę się tym bawiłem. Nie podoba mi się jednak > to, że kiedy raz zdarzy się że sieć neuronowa nie zachowa się tak, jak > powinna (czy jak człowiek tego oczekuje) - to nie wiadomo ani dlaczego, > ani jak to naprawić. Zupełnie jak u ludzi. Tak trzymać.
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-11-13 20:35 -0800 |
| Message-ID | <6f4d2537-3a0d-471e-aae5-a5faf3e6a4ben@googlegroups.com> |
| In reply to | #34233 |
On Friday, October 23, 2020 at 6:16:42 PM UTC+2, Mateusz Viste wrote: > 2020-10-23 o 18:10 +0200, heby napisał: > > On 23/10/2020 16:50, Adam M wrote: > > > A moze sprobowac zabawy z kolorem oswietlenia w celu poprawienia > > > widocznosci wskazowki > > > > Mamy 2020, niech się tym zajmuje AI a nie jakies hardwareowe, a fe, > > rozwiązania ;) > AI są fajne, ostatnio trochę się tym bawiłem. Nie podoba mi się jednak > to, że kiedy raz zdarzy się że sieć neuronowa nie zachowa się tak, jak > powinna (czy jak człowiek tego oczekuje) - to nie wiadomo ani dlaczego, > ani jak to naprawić. Nie wiem co masz na myśli.... Jeśli sieć da złą odpowiedź i ktoś monitoruje system, to mamy dodatkowy przykład który może dorzucić do danych uczących. Można sieć wytrenować jeszcze raz na danych rozszerzonych o kolejny przykład. Teoretycznie można uzyskać lepszą sieć trenując na zborze poszerzonym o sytuacje w których sieć podawała błędne odpowiedzi. Ale to jest teoretycznie, bo w praktyce nie jest taka dobrze. Wielokrotnie na danych, co do których byłem przekonany że są lepsze, uzyskiwałem gorsze wyniki. > No tak, można intensywnie testować, ale w > zależności od domeny przetestowanie 100% pokrycia może nie być > realistyczne. Zwykle nie jest. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | Mateusz Viste <mateusz@xyz.invalid> |
|---|---|
| Date | 2020-11-14 20:21 +0100 |
| Message-ID | <20201114202121.0f3b5205@mateusz> |
| In reply to | #34236 |
2020-11-13 o 20:35 -0800, M.M. napisał: > > AI są fajne, ostatnio trochę się tym bawiłem. Nie podoba mi się > > jednak to, że kiedy raz zdarzy się że sieć neuronowa nie zachowa > > się tak, jak powinna (czy jak człowiek tego oczekuje) - to nie > > wiadomo ani dlaczego, ani jak to naprawić. > > Nie wiem co masz na myśli.... Przykład: wytrenowałem sieć która ma robić "coś". Sprzedałem produkt przemysłowemu klientowi. Działa. Do momentu, kiedy sieć wysypała klientowi produkcję. Fakt, że sieć zawiodła, to jeden problem - powiedzmy, mniejszy. Poważniejszy problem to wytłumaczyć klientowi dlaczego, oraz sprawić że więcej nie będzie. > Jeśli sieć da złą odpowiedź i ktoś monitoruje system, to mamy > dodatkowy przykład który może dorzucić do danych uczących. Jeden przykład chyba nie wpłynie na działanie sieci - tych przykładów musi być raczej dużo więcej... i uważać, aby nie "przetrenować" AI. AI to niewątpliwie ciekawy temat, ale zdecydowanie nie panaceum na wszystko. Jeśli potrzebny determinizm i możliwość zrozumienia dlaczego robot reaguje w ten a nie inny sposób - to AI odpada. Mateusz
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-11-14 21:56 -0800 |
| Message-ID | <6ea8521b-40bc-4767-9fe3-b4a22171e8dbn@googlegroups.com> |
| In reply to | #34237 |
On Saturday, November 14, 2020 at 8:21:23 PM UTC+1, Mateusz Viste wrote: > 2020-11-13 o 20:35 -0800, M.M. napisał: > > > AI są fajne, ostatnio trochę się tym bawiłem. Nie podoba mi się > > > jednak to, że kiedy raz zdarzy się że sieć neuronowa nie zachowa > > > się tak, jak powinna (czy jak człowiek tego oczekuje) - to nie > > > wiadomo ani dlaczego, ani jak to naprawić. > > > > Nie wiem co masz na myśli.... > Przykład: wytrenowałem sieć która ma robić "coś". Sprzedałem produkt > przemysłowemu klientowi. Działa. Do momentu, kiedy sieć wysypała > klientowi produkcję. Nadal nie znam wystarczającej ilości szczegółów, ale może sieć wcześniej dużo zarobiła, albo dużo zaoszczędziła względem alternatywnych rozwiązań, że na pewne problemy można sobie pozwolić? Albo w ogóle nie ma lepszego rozwiązania i trzeba z wadami sieci żyć? > Fakt, że sieć zawiodła, to jeden problem - powiedzmy, mniejszy. Sztuczne (a i biologiczne też) sieci neuronowe z pewnym prawdopodobieństwem dają błędne odpowiedzi. Zwykle mam N danych uczących. Dzielimy te dane na zbiór uczący o rozmiarze NU i testowy o rozmiarze NT. I zwykle jak sieć na zbiorze uczącym da NU poprawnych odpowiedzi, to na NT daje mniej poprawnych. Poza tym konieczność testowania już nam zmniejsza zbiór uczący z N do NU. Sieci według 'mojego autorskiego' pomysłu w bardzo wstępnych testach miały mniej tego typu problemów. Ale nie mogę ich opatentować, więc nie podaję szczegółów. > Poważniejszy problem to wytłumaczyć klientowi > dlaczego, oraz sprawić że więcej nie będzie. Jeśli sieć zostanie wyuczona na danych z ostatniego wypadku, to w takiej sytuacji tego problemu już naprawdę nie powinno być, ale jak pisałem powyżej, sieć dająca 100% poprawnych odpowiedzi na zbiorze uczącym, zwykle daje mniej poprawnych odpowiedzi na zbiorze testowym. > > Jeśli sieć da złą odpowiedź i ktoś monitoruje system, to mamy > > dodatkowy przykład który może dorzucić do danych uczących. > Jeden przykład chyba nie wpłynie na działanie sieci - tych przykładów > musi być raczej dużo więcej... i uważać, aby nie "przetrenować" AI. > > AI to niewątpliwie ciekawy temat, ale zdecydowanie nie panaceum na > wszystko. Jeśli potrzebny determinizm i możliwość zrozumienia dlaczego > robot reaguje w ten a nie inny sposób - to AI odpada. Ja też się długo (może z 20 lat) zastanawiałem dlaczego dobrze wytresowany pies działający w oparciu o biologiczną sieci neuronową, 1000 razy na 1000 przynosi treserowi ręcznik, gdy treser o ręcznik go prosi. Podobnie dziecko dobrze nauczone tabliczki mnożenia 1000 razy na 1000 dobrze poda wynik. Tymczasem sieć neuronowa zrealizowana w krzemie, jeśli ze zbioru uczącego poda 100% poprawnych wyników, to na zbiorze testowym skuteczność spada np. do 50%. Nie rozumiałem dlaczego sztuczna sieć musi na zbiorze uczącym mieć skuteczność np. 95%, aby i na zbiorze testowym miał wysoką skuteczność np. 95%. No i opracowałem perceptron wielowarstwowy według swojego pomysłu - oczywiście też ma problemy, ale z bardzo wstępnych badań wynikło, że ma ich mniej: znacznie szybciej się uczy, znacznie szybciej działa, niekoniecznie traci ogólność gdy na zbiorze uczącym da 100% poprawnych odpowiedzi - czyli klienta można zapewnić że - w takiej samej sytuacji - problem się już nie powtórzy. W przypadku moich sieci, na początku wystarczy mniej danych, np. tyle, aby zapewnić, iż sieć zadziała poprawnie przez godzinę. Potem dane z kraksy dodajemy do danych uczących i próbujemy wyuczyć ponownie. System (statystycznie) powinien pracować dłużej, a w tej konkretnej sytuacji mamy już 100% gwarancję że sieć da poprawną odpowiedź. W przypadku klasycznego perceptronu wielowarstwowego nie ma takiej gwarancji, zwykle musi na danych uczących mieć skuteczność niecałe 100%, aby i na zbiorze testowym miał niecałe 100%. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | Mateusz Viste <mateusz@xyz.invalid> |
|---|---|
| Date | 2020-11-16 09:42 +0100 |
| Message-ID | <20201116094243.1199ab1a@mateusz> |
| In reply to | #34238 |
2020-11-14 o 21:56 -0800, M.M. napisał:
> Nadal nie znam wystarczającej ilości szczegółów,
Bo i szczegółów niewiele mogę podać, gdyż pomysł wdrożenia AI do mojego
rozwiązania nigdy się nie zrealizował. Po kilku tygodniach męczenia
bibliotek AI, uczenia sieci na różnych wariantach i testów wszelakich
doszedłem do wniosków które podałem wcześniej w wątku. Tj. że to
ciekawa rzecz, ale jednak nie dla mnie, nie dla każdego i nie do
wszystkiego.
A konkretniej: kilka lat temu stworzyłem ten produkt:
https://youtu.be/64cj-VcjCZk
Działa, klienci zadowoleni i w ogóle wszystko cacy. Ale jako że
ostatnio temat "AI" jest na czasie, to porobiłem nieco testów aby
zobaczyć czy dałoby się wdrożyć jakąś sieć neuronową do produktu,
zamiast obecnie relatywnie skomplikowanego algorytmu. Wartość dodana w
zasadzie byłaby żadna, ot, inne podejście - ale temat mnie ciekawił
więc obadałem.
> ale może sieć wcześniej dużo zarobiła, albo dużo zaoszczędziła
> względem alternatywnych rozwiązań, że na pewne problemy można sobie
> pozwolić?
Tak, dlatego pisałem o tym, że jednostkowa pomyłka sieci to mniejszy
problem. Jednak po takiej wpadce moi klienci (przynajmniej ci
przemysłowi) oczekują, że produkt zostanie udoskonalony i do takiej
sytuacji w wersji n+1 już nie doprowadzi. Często wymagają również
formalnego RFO (Reason For Outage). Przy AI niczego wytłumaczyć się nie
da, żadnej analizy też przeprowadzić nie można. Można co najwyżej dodać
kolejny przykład do nauki i ufać, że następnym razem się uda.
> Albo w ogóle nie ma lepszego rozwiązania i trzeba z wadami sieci żyć?
Żyć z AI nie trzeba - w takich (być może specyficznych, nie wiem)
zastosowaniach wystarczy robić po staremu - tj. proceduralny, dobrze
opisany algorytm. W warunkach kiedy użytkownik godzi się na jakiś
procent strat, a oczekiwana metoda działania jest bardzo trudna do
opisania ("odróżnij twarz owcy od ludzkiej"), to AI z pewnością jest
dobrym rozwiązaniem. Ja tylko opisuję moje wrażenia w kontekście
własnego doświadczenia, które wskazuje na to że czasem nie ma sensu
pchać się na siłę w AI (w odpowiedzi na wypowiedź Sebastiana, w której
sugerował że nowoczesne rozwiązanie problemu to AI).
> Sieci według 'mojego autorskiego' pomysłu w bardzo wstępnych testach
> miały mniej tego typu problemów. Ale nie mogę ich opatentować, więc
> nie podaję szczegółów.
Szkoda.
> Ja też się długo (może z 20 lat) zastanawiałem dlaczego dobrze
> wytresowany pies działający w oparciu o biologiczną sieci neuronową,
> 1000 razy na 1000 przynosi treserowi ręcznik, gdy treser o ręcznik go
> prosi. Podobnie dziecko dobrze nauczone tabliczki mnożenia 1000 razy
> na 1000 dobrze poda wynik. Tymczasem sieć neuronowa zrealizowana w
> krzemie, jeśli ze zbioru uczącego poda 100% poprawnych wyników, to na
> zbiorze testowym skuteczność spada np. do 50%.
Żaden ze mnie specjalista w dziedzinie AI, ale czy to nie po prostu
dlatego, że psi hardware jest daleko szybszy od obecnych krzemowych
klocków? Sama ilość neuronów jest oczywiście znacząco wyższa, a i z
tego co rozumiem to struktury biologicznych neuronów są jednak znacznie
bardziej złożone od aproksymacji którą wykonują biblioteki ANN (m.in
dlatego, że prawdziwe neurony potrafią tworzyć między sobą nowe
połączenia, a komputerowa sieć te połączenia ma sztywne i tylko zmienia
wagi na funkcjach aktywacji poszczególnych neuronów).
> W przypadku moich sieci, na początku wystarczy mniej danych, np.
> tyle, aby zapewnić, iż sieć zadziała poprawnie przez godzinę. Potem
> dane z kraksy dodajemy do danych uczących i próbujemy wyuczyć
> ponownie.
Tylko, że te kraksy trzeba wykrywać... czyli albo opłacać człowieka,
który analizuje system na bieżąco, albo napisać proceduralny program
który sprawdza wszystko po AI. A i tak nie będzie gwarancji, że jutro
rano znów się system nie wysypie.
Mateusz
[toc] | [prev] | [next] | [standalone]
| From | Maciek Godek <godek.maciek@gmail.com> |
|---|---|
| Date | 2020-11-16 01:03 -0800 |
| Message-ID | <d4fe5caa-c146-4d3d-9410-6ca4ca2806d5n@googlegroups.com> |
| In reply to | #34238 |
niedziela, 15 listopada 2020 o 06:56:10 UTC+1 M.M. napisał(a): > Ja też się długo (może z 20 lat) zastanawiałem dlaczego dobrze wytresowany > pies działający w oparciu o biologiczną sieci neuronową, 1000 razy na 1000 przynosi > treserowi ręcznik, gdy treser o ręcznik go prosi. Podobnie dziecko dobrze > nauczone tabliczki mnożenia 1000 razy na 1000 dobrze poda wynik. Podejrzewam, że po prostu mało rzetelnie przeprowadzałeś pomiary. [Tak naprawdę to podejrzewam, że wcale ich nie przeprowadzałeś]
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-11-16 04:29 -0800 |
| Message-ID | <c2ebdc60-1369-41cb-8891-43ddb3ae7e24n@googlegroups.com> |
| In reply to | #34241 |
On Monday, November 16, 2020 at 10:03:53 AM UTC+1, Maciek Godek wrote: > niedziela, 15 listopada 2020 o 06:56:10 UTC+1 M.M. napisał(a): > > > Ja też się długo (może z 20 lat) zastanawiałem dlaczego dobrze wytresowany > > pies działający w oparciu o biologiczną sieci neuronową, 1000 razy na 1000 przynosi > > treserowi ręcznik, gdy treser o ręcznik go prosi. Podobnie dziecko dobrze > > nauczone tabliczki mnożenia 1000 razy na 1000 dobrze poda wynik. > Podejrzewam, że po prostu mało rzetelnie przeprowadzałeś pomiary. > [Tak naprawdę to podejrzewam, że wcale ich nie przeprowadzałeś] Pomiary czego? Odpowiedzi z tabliczki mnożenia? Po co mi pomiary, przecież to przykład bardziej ogólnego zjawiska które jest oczywiste. Czy może pomiary skuteczności sztucznych sieci neuronowych według mojego pomysłu? Tutaj ta cecha o której mówiłem też jest oczywista, nawet jakbym nie robił zupełnie żadnych pomiarów - ale minimalne testy zrobiłem. Zdrowy, sprawny i wykwalifikowany człowiek niektóre zadania wykonuje wielokrotnie bezbłędnie i to przez długie lata, i to nie tylko takie łatwe jak tabliczka mnożenia. Kierowca podejmuje decyzje wiele razy na minutę, a może nawet na sekundę. Niektórzy, co lepsi kierowcy chwalą się wieloletnią bezwypadkową jazdą. Natomiast sztuczna sieć neuronowa zbudowana w oparciu o klasyczny perceptron wielowarstwowy może dawać błędne odpowiedzi na zbiorze testowym i zwykle specjalnie przerywa się naukę na etapie gdy sieć jeszcze daje błędy na zbiorze uczącym, aby minimalizować ilość błędnych odpowiedzi na zbiorze testowym. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | pl.comp.programming
csiph-web