Open Ztrk opened 5 years ago
Teraz trochę poprawiłem rotację, ale binaryzacja nadal boli bardzo, szczególnie na moim Martyre (ciemny zestaw). Chciałbyś dostać coś w stylu: wykryta linia i jej środek w każdym punkcie tej linii? Niektóre linie proste nie będą, to Ci da pole do manewrowania z tymi liniami.
Jeśli tak Ci wygodniej przesyłać linie to niech będzie, choć z dodatkowej informacji pewnie na razie nie skorzystam.
Dodałem w Poligon4 ten sam graf, ale szybszy +- 2 razy (Cythonizacja) i z lepszą rotacją
Jeszcze go poprawiłem raz, teraz spróbuję: a) Zmienić format wysyłanych linii. b) Zmienić rotację Binaryzacji już raczej w ogóle nie zmienię - nie ma co liczyć na porządne oprawienie seta Darkening.. i Martyre, nie będę w stanie odróżnić linii od tła bez jakiejś ostrej magii.
Teraz algo jest dużo potężniejszy i szybszy; całe 5-linie są jakoś dziko krzywe i nie za wiele Ci dadzą, nie rozróżniam dobrze fragmentów 5-linii od jakichś śmieci (jeszcze), ale możesz próbować. Jak bardzo pasuje ci obecny Poligon4? Co jest kluczowe teraz z twojego punktu widzenia? Ja dobiję trochę algo i poszukiwanie liń z 5-liń (jak zdecydujesz się na inny format linii, to napisz), później pewnie rotacja, ewentualnie morfologia do thinningu binaryzacji.
Swoją drogą, my to mamy zaprezentować finalnie Tomczykowi jutro czy za tydzień?
Widziałem nowe algo. Wyniki są całkiem niezłe. Format zwracanych pięciolinii jest ok.
Byłem przekonany, że finalna prezentacja u Tomczyka jest za tydzień, ale spojrzałem na jego stronę i sam już nie wiem.
Jednak wywala się błędem: "vb referenced before assignment"
1) Dla którego przypadku? U mnie działa (kto by pomyślał). 2) Chcesz dobić to zadanie w trakcie wykładów i oddać Tomczykowi jutro (przynajmniej prototyp)? 3) Mam jeszcze z 10 niezaimplementowanych idei, więc 1-2 dodatkowe dni by się przydały (dziś nie za wiele zrobiłem, ale wymyśliłem kilka powalonych heur)
Nie działa na co najmniej dwóch moich: IMG_20191109_215326 i IMG_20191116_184420 Tylko w twoim kodzie vb (w jednym z ostatnich forów, tam gdzie wyliczasz wynne) jest zmienną globalną i jest przypisywana dla wcześniejszych zdjęć - dlatego u ciebie działa. Jak to wrzucam w funkcję i wrzucam jeden obrazek to już czasami działać przestaje
Dobić tego raczej nie dobiję, ale na pewno warto coś Tomczykowi dzisiaj pokazać i choćby powiedzieć o tym co chcemy jeszcze zaimplementować.
OK, nawet nie zauważyłem błędu, teraz to poprawiłem.
Wysłałem tą nieco lepszą wersję Poligona4 z precyzyjną detekcją pięciolin, zacommitowana ze złą nazwą - nie wysłałem jej w nowym branchu, bo coś mi się posypało, wysłałem to w masterze.
Jak chcesz zwiększyć skuteczność mojej części na prostych obrazkach (i jeszcze zmniejszyć czas), to w dictionary Hiperparameters (na samej górze cythona) możesz zmienić Change z 6 na 4 albo 3 - ta zmienna oznacza, po ilu ruchach bez ulepszenia obecnej ścieżki zakończyć tą gałąź BFS-a. Twoje algo słabo radzi sobie na handwritten (właściwie to sobie nie radzi). BTW, mediana na heightach pięciolinii nie poradzi sobie dla nieregularnych zdjęć, jutro wymyślę pewnie lepszą detekcje piątek.
Chce Ci się pisać podsumowanie? Jakie datasety koniec końców wybierasz? Po mojej stronie już nie za wiele dojdzie, no i to i tak raczej starczy na 5, wolałbym mu to wysłać do jutra.
Mogę napisać podsumowanie. Jeszcze u siebie kończę rozpoznawanie krzyżyków, to jeszcze dopiszę do sprawozdania. Dodam jeszcze zdjęcia do poszczególnych etapów detekcji nut. Co do datasetów - można wybrać po trochu z każdego i podzielić tak jak on mówił na łatwe, średnie i trudne.
Prawie wszystkie nasze zdjęcia to średnie/trudne wg jego nomenklatury, dla mojego algo jedyne łatwe poza pdfami to handwritten (bo duże odstępy między liniami), które dla twojego są co najmniej trudne.
Jako łatwe można wziąć z nowych (data-simple) te, gdzie kartka całkowicie wypełnia zdjęcie, dodatkowo kilka pdfów.
Dodałem zdjęcia z podziałką. Sprawdź, czy chcesz coś przestawić albo dodać. Już pokazać oficjalne wersje do sprawka czy jeszcze czekać na nowy wspaniały note_detection?
Nowego wspaniałego note_detection nie będzie, ale jest nowe wspaniałe Sprawko. O moim algorytmie napisałem wszystko, wrzuciłem zdjęcia z poszczególnych etapów przetwarzania. Zmieniłem też trochę układ, żeby wyglądało trochę lepiej. Napisałem też jakieś wstępne posumowanie - głównie o swoim algo, możesz dopisać coś jeszcze. Trochę jeszcze zdjęcia poprzestawiałem. Możesz już wrzucać oficjalne wersje do sprawka.
operands could not be broadcast together with shapes (12,) (0,) (albo (9,), (8,)) W projection_xy, linia 239 detect_notes - co z tym zrobić? Zapuszczam to dla zestawu Medium. Poza tym mam lepsze wyrzynanie słabych pięciolinii w swoim notebooku, może nawet zrobię to samo dla łączenia pięcioliń - z dwoma pointerami, prawy ucieka lewemu jeśli dystans jest odpowiednio mały.
Dla jakiego zdjęcia? U mnie na medium działa.
Skopiuj Binaryzację i 5-linera z mojego kodu to będziasz miał dokładnie to samo, na czym ja pracuje. Nie kojarzę, który, teraz obrabiam Eazy. Pewnie gdzieś wyszedłeś poza tablicę i masz inny shape (włąśnie w 239. linijce)
Załatwiłem to try/exceptem i drobną zmianą, za 20/30 minut wyślę pełne sprawko, sprawdź, czy jest dobre.
Jest ok, możesz wysyłać
Ok, wysłałem. Polecam Ci zapoznać się z sygnałami, chcę to jutro także oddać. W pliku signals są 3 pliki: Syg1, Syg2 i Inf136*, tam są te 3 zadnia. W inf... jest voice recognition, tam jest zwykłe drzewo decyzyjne pisane z ręki, możesz je ulepszyć/przetestować (w szczególności errory) itd., u mnie wyrabia 84/91 przy bardzo małej głębokości (czyli na test secie pewnie będzie z 80). W Syg2 1.zadanie chyba gdzieś się kropnąłem, jeszcze nie wiem gdzie, okres powinien być równy +-132.
Wrzuciłem ostateczną wersję note_detection, działa trochę lepiej na nutach odręcznych i nie wychodzi poza tablicę. Jeszcze trochę poprzestawiałem dataset na jutrzejszą demonstrację.
Na sygnały spojrzałem tylko pobieżnie, więc być może zaliczę to sam później. I tak swoją drogą należało by pomyśleć nad tematem z SW - to jest na pojutrze.
Testowałem nowy algorytm na moich zdjęciach. Jest wolny i rzeczywiście czasem daje kiepskie linie. Często wycina też belki łączące nuty - to trzeba dopracować. Być może da się jakoś lepiej dobrać parametry.
Co do zwracanych linii - tu przydałaby się jakaś filtracja, żebym mógł coś bardziej sensownego z tym zrobić - najbardziej przydatne są wysokość pięciolinii i odległość między poszczególnymi liniami. Początek i koniec pięciolinii pomógłby mi wykrywać klucze.
Co na razie planuję zrobić: spróbuję wykryć ogonek przy nucie używając vertical projection, następnie sprawdzę czy przy końcu ogonka jest dużo czarnego - na tej podstawie określę długość nuty. Dopracuję jeszcze wykrywanie półnut i całych nut (na razie wykrywa około połowy) - być może jakieś przekształcenia morfologiczne. Później zajmę się pozostałymi symbolami.
Potrzebujemy też nut pisanych odręcznie - spróbuję wrzucić to dziś lub jutro.