Code Monkey home page Code Monkey logo

cnn-tackle-imbalance's Introduction

Hi there 馃憢

I am a student of Computer Engineering at Wroclaw's University of Science and Technology. I am currently:

  • pursuing my Master degree of Computer Engineering,
  • working as teaching assistant at my university

What do I like to do in my spare time:

  • Automate things that I normally have to do manually.
  • Learn new things.
  • Play chess (Currently saving energy, so I can focus on my thesis).
  • Read books (Recently I read Limes inferior written by Janusz Andrzej Zajdel ).
  • Cook new things
  • Write poems

cnn-tackle-imbalance's People

Contributors

agatarubaszewska avatar docentszachista avatar

Watchers

 avatar  avatar  avatar

cnn-tackle-imbalance's Issues

Stworzenie dodatkowych metod do walki z niezbalansowaniem na bazie danych

Wymy艣li膰 sobie jak podda膰 obrazki tej klasy przer贸bkom by na przyk艂ad wygenerowa膰 obrazki ka偶dy obr贸cony o ile艣 stopni, b膮d藕 wykona膰 inne transformacje na obrazach.

  • przydatne mo偶e by膰 biblioteka albumentations, b膮d藕 torchvision.
  • trzeba b臋dzie prawdopodobnie zrezygnowa膰 z zapisu plik贸w do npy, a przenie艣膰 si臋 na robienie podzbior贸w w pytorchu poprzez klas臋 Subset b膮d藕 inn膮, google it

Pobieranie dodatkowych metryk aby m贸c lepiej rozumie膰 jak wygl膮da problem.

Na razie mamy accuracy i loss w sieci na datasecie testowym, lecz w zbiorach niezbalansowanych te metryki nie s膮 wystarczaj膮ce. Aby lepiej zrozumie膰 problem dobrze by by艂o m贸c poszerzy膰 statystyk臋 o to ile obrazk贸w ze zbioru testowego rozpozna艂 poprawnie.
Moja propozycja to kiedy b臋dziemy testowa膰 sieci, to wydobywa膰 wszystkie logits'y z sieci dla ka偶dego testowego obrakza i zapisywa膰 do dataframe'a pandasowego, wraz z informacj膮 jak by艂 oznaczony obrazek. Nast臋pnie b臋dzie mo偶na wyznacza膰 na podstawie tego takie rzeczy jak:
confusion matrix, precision, czy te偶 recall. Przyk艂ady tych metryk oraz innych podane tutaj

Stworzenie r贸偶nych podzbior贸w danych do uczenia

Maj膮 zawiera膰 kilka scenariuszy. Moja propozycja:

  • scenariusz z jedn膮 klas膮 kt贸ra zosta艂a zminimalizowana do 10% a reszta pozostaje bez zmian
  • scenariusz gdzie sekwencyjnie zmieniamy liczebno艣膰 klas (np pierwsza ma 10, druga 20 trzecia 30 itd.)
  • scenariusz gdzie wybieramy mo偶e 2, 3 klasy z czego jedn膮 mocno minimalizujemy a inne troch臋 mniej
    Ka偶dy scenariusz zapisa膰 do postaci Database'a.
    Zapis najlepiej do pliku a nast臋pnie odczyt przy odpalaniu konkretnego scenariusza
    Dane w datasecie to jest lista tupli dwu elementowa, w pierwszym indeksie jest obrazek, w drugim labelka co przedstawia (np psa)
    Najlepiej pogrupowa膰 by pobra膰 indeksy wszystkich ps贸w, renifer贸w, nast臋pnie w zale偶no艣ci od strategii usun膮c dane obrazki i zapisa膰 pozosta艂o艣膰 datasetu do jakiego艣 pliku

Wyuczenie modeli sieci neuronowej i zapisanie jej na dysku

  • Dopiero gdy ju偶 uporamy si臋 ze zbiorami danych
  • za pomoc膮 torch.save zapisuje si臋 model
  • Dobrze b臋dzie zapisywa膰 po ka偶dej iteracji model co jest ju偶 ogarni臋te wst臋pnie w repo ale dobrze by by艂o j膮 jeszcze przemy艣le膰

Pobieranie benchmarku

  • na start loss i accuracy
  • Wzorowa膰 si臋 na metodzie test w main'ie, zapisa膰 to do jakiego艣 pliku. Format do uzgodnienia

SMOTE jako metoda do walki z niezbalansowaniem

Workflow:

  • wyci膮gasz obrazki kt贸re s膮 w klasie mniejszo艣ci
  • sp艂aszczasz ka偶dy z obrazk贸w z postaci macierzy 32x32x3 do postaci wektora, ewentualnie macierzy 1024x3 ( nie jestem pewien co zadzia艂a bo sam tego nigdy nie robi艂em)
  • wrzucasz do obiektu klasy SMOTE dane.
  • Otrzymane dogenerowane dane z powrotem przywracasz do postaci 32x32x3

https://stackoverflow.com/questions/53666759/use-smote-to-oversample-image-data
https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html

Ogarn膮膰 zapisywanie w zale偶no艣ci od tego czy liczymy model na colabie czy lokalnie

Kwestia by nie gubi膰 danych.

  • Zastanowi膰 si臋 czy zostawi膰 to po prostu w zale偶no艣ci

Import biblioteki

from google.colab import drive
drive.mount('/content/drive')

Nast臋pnie odwo艂ywanie si臋 do drive'a wygl膮da tak

save_path= "/content/drive/MyDrive/jakis_folder/"

My艣li wolne jak i szybkie:

  • W colabie robi膰 import
  • Do funkcji zapisuj膮cej dane wrzuca膰 艣ciezk臋 jedynie i reszt臋 program powinien ogarn膮膰.
  • Stworzenie funkcji run, kt贸ra zezwoli na odpalenie treningu na wybranym pliku / datasecie

Stworzenie funkcji do 艂atwego w艂膮czania nauki modelu.

Celem jest utworzenie albo funkcji np run, kt贸ra dla otrzymanych parametr贸w b臋dzie odpala艂a uczenie dla danych zbior贸w danych modelu Resnet, b膮d藕 wykorzystuj膮c np argparse'a stworzy膰 interfejs linii komend do tego samego celu.

Co ta funkcja mia艂aby przyjmowa膰

  • 艣cie偶k臋 do pliku z kt贸rego ma czyta膰 zbi贸r danych
  • 艣cie偶k臋 gdzie ma zapisa膰 plik z sieci膮 neuronow膮.
    #5 jest w sumie powi膮zane z tym. (te偶 bardziej w sumie przysz艂o艣ciowo, bo ka偶da ingerencja w zbi贸r ucz膮cy, a b臋dzie ich du偶o b臋dzie wymaga艂o nauczania modelu na nowo)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    馃枛 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 馃搳馃搱馃帀

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google 鉂わ笍 Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.