Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #34221 > unrolled thread

Odczyt ciśnienia - analiza obrazu

Started byheby <heby@poczta.onet.pl>
First post2020-10-21 10:29 +0200
Last post2020-10-23 12:16 -0700
Articles 20 on this page of 35 — 9 participants

Back to article view | Back to pl.comp.programming


Contents

  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 →


#34221 — Odczyt ciśnienia - analiza obrazu

Fromheby <heby@poczta.onet.pl>
Date2020-10-21 10:29 +0200
SubjectOdczyt 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]


#34222

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34223

FromMaciej Sobczak <see.my.homepage@gmail.com>
Date2020-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]


#34224

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34225

FromMaciej Sobczak <see.my.homepage@gmail.com>
Date2020-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]


#34226

FromAndrzej S <asta@evbox.pl>
Date2020-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]


#34227

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34228

FromMaciej Sobczak <see.my.homepage@gmail.com>
Date2020-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]


#34229

FromRoman Tyczka <romantyczka@hate.you.spammer>
Date2020-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]


#34230

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34231

FromAdam M <amorawski@magna-power.com>
Date2020-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]


#34232

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34233

FromMateusz Viste <mateusz@xyz.invalid>
Date2020-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]


#34234

Fromheby <heby@poczta.onet.pl>
Date2020-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]


#34236

From"M.M." <mmarszik@gmail.com>
Date2020-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]


#34237

FromMateusz Viste <mateusz@xyz.invalid>
Date2020-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]


#34238

From"M.M." <mmarszik@gmail.com>
Date2020-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]


#34240

FromMateusz Viste <mateusz@xyz.invalid>
Date2020-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]


#34241

FromMaciek Godek <godek.maciek@gmail.com>
Date2020-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]


#34242

From"M.M." <mmarszik@gmail.com>
Date2020-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