Plan działania

Dzisiaj ujawniam drugą, dla wielu pewnie ważniejszą część opisu mojego projektu Flover. Tym razem przedstawię wybrane platformy i biblioteki, wyznaczę zadania i postaram się je umieścić w czasie.

Sporo błądziłem po sieci i sondowałem jakie technologie najlepiej by się nadawały do problemu rozpoznawania i klasyfikacji obrazów, który docelowo chciałbym zrealizować na urządzeniach mobilnych. Z tego zamętu na szczęście powoli rodzi się wybór, który według mnie jest kompromisem pomiędzy:

  • czasem nauki -> implementacji technologii,
  • kosztami licencji,
  • popularnością tematyki -> wsparciem społeczności,
  • przewidywanym rozwojem technologii.

Chciałbym, żeby moje myśli były tak wyraźnie i ładnie nakreślone jak na powyższym zdjęciu. Z drugiej strony, dzięki temu, że żadna z tych rąk nie narzuca mi konkretnej architektury, mam pełną dowolność - i o to chodzi w naszych dodatkowych projektach! Jednak, mimo wszystko, Wasze "ręce" bardzo mi się przydadzą doradzając na forach, blogach czy np. w komentarzach. Zapraszam zatem do dyskusji i konstruktywnej krytyki 😉 . Btw - mimo dopiero trzeciego (a dla mnie pierwszego) tygodnia konkursu Daj się poznać, z niektórych uczestniczących blogów już się dowiedziałem ciekawych rzeczy, które być może mi się przydadzą. Polecam obserwowanie listy blogów w wygodnym formacie na dotnetblogs.pl.

Mój projekt podzieliłem na 2 etapy. Nie zacznę od razu od programowania na Androida czy iOS'a, po prostu za dużo nowych rzeczy na raz. Zapoznam się najpierw z wybranym tematem, algorytmami i bibliotekami testując je na desktopie co również będzie dużym wyzwaniem. Po ok. 5 tygodniach mam zamiar przesiąść się na Xamarina, co będzie się już wiązało z pewnymi kosztami za licencję, więc chyba warto najpierw przetestować mój pomysł w bezpłatnym środowisku. Poniżej poszczególne etapy:

I. Aplikacja do rozpoznawania gatunków kwiatów umieszczona na stronie internetowej.

Wybrałem język programowania, z którym jestem od dawna związany, czyli C#. W celu obróbki obrazów i Machine Learningu, najlepszym aktualnie frameworkiem dla .NETa wydaje się być Accord.net, który posiada zarówno biblioteki do wyżej wymienionych działań jak i do operacji na dźwięku czy video. Ma niezłą dokumentację i już dość długą historię, gdyż wywodzi się ze starszej biblioteki AForge.net. Całkiem pokaźna lista frameworków do Machine Learningu dla różnych języków znajduje się tutaj. Pod względem ilości dostępnych bibliotek wygrywa tu chyba Python, w którym można na przykład pobawić się z niedawno opublikowanym i promowanym TensorFlow od Google'a. Trochę mnie kusiło, żeby tego spróbować, jednak chcę pozostać przy moim C#. Jeśli Accord.net jest dla mnie nowy, to ASP.NET MVC 6 będzie dla mnie zupełnie nowy 🙂 To bardzo świeża wersja tego frameworka do tworzenia dynamicznych stron internetowych uruchamianych po stronie serwera. Jest pozytywnie przyjmowana wśród programistów, więc mam wielką ochotę się jej nauczyć. Podoba mi się koncept Model View Controller, który starałem się kiedyś wdrożyć w WinForms'ach, ale nie byłem na tyle konsekwentny, żeby się niego trzymać. W ASP.NET rozdzielenie modelu, widoku i kontrolera będzie o wiele bardziej naturalne. Moim IDE będzie oczywiście Visual Studio 2015.

2p4i accord.netBest-ASP.NET-MVC-6-Hosting-in-Australia-e1419311665686a 2015-06-30-image-2

 

Zadania do wykonania:

  1. Rozpoznanie algorytmów do eliminacji tła, wydobycia szczególnych cech obiektu, klasyfikacji obiektów,
  2. Próbowanie poszczególnych metod i ich kombinacji na konkretnych obrazach,
  3. Stworzenie strony pozwalającej wykonywać niektóre z poznanych operacji na obrazach,
  4. Dążenie do wybrania najlepszego zestawu metod problemu rozpoznawania gatunku kwiata,
  5. Umieszczenie możliwości wgrania zdjęcia na stronie, po czym serwis odpowie jaki to gatunek kwiata,
  6. Inne funkcje (być może możliwość dodawania przez użytkowników obrazów do bazy danych - w celu ponownego treningu klasyfikatora).

Będzie to mój Minimum Viable Product - po ukończeniu tego etapu zadam sobie pytanie czy warto kontynuować i przeprowadzać wszystko na urządzenia mobilne.

II. Aplikacja o mniej więcej tych samych zadaniach przeniesiona na urządzenia mobilne - w pierwszej kolejności Android.

Oto zestaw, który wybrałem w tym etapie. Jak widać, doszedł Xamarin i Xamarin Studio! Argumentów za tą platformą jest tyle co przeciw niej. Dlatego rozważania o niej zostawię na następne wpisy.

2p4i accord.netXamagonide-xamarin-studio

 

Related Posts

Share Facebooktwitterreddit

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *