Giter Club home page Giter Club logo

deepl's Introduction

Nutzung

Erstellung eines Datensets

  • Für die Erstellung eines Datensets muss lediglich eine JSON datei angelegt werden, in der man notiert wird welche klasse wie viele Bilder bekommen soll.
  • Als Beispiel steht die example_config.json in utils/dataprocessor zur verfügung
  • Anschließend muss nurnoch wie folgt die main.py gestartet werden
    python main.py -model="no_model" -method="make_data" --input="_hier den pfad zur JSON_" --output= "_hier den Pfad angeben in dem die daten enden_"
    

SNGAN

  • Unterstützt zwei methods: "train" und "generate"

  • Die notwendigen Parameter für train sind wie folgt:

    • "--output": Der Ordner in dem die Models und sample gespeichert werden.

    • "--epochs": Gibt die Anzahl an zu trainierenden Epochen.

    • "--device": Das Gerät auf dem Trainiert wird [cpu oder cuda]

    • "--class_num": Gibt die Anzahl an Bildklassen an, die im Datenpool vorhanden sind.

    • "latent_size": Gibt die Größe des Latenten Raums des Generators an.

    • Input kann hier ausgelassen werden. Stattdessen sollen die Trainingsdaten in dem Ordner "data/train/train_SNGAN/" abgelegt werden. Dafür sollten die Bilder aus der vorherigen Erzeugung des Datensetzt mitsamt der Labeldatei in diesem Ordner abgelegt werden

    • Beispiel:

      python main.py -model="sngan" -method="train" --output="_gewünschter Pfad_" --epochs=20 --device="cuda" --num_classes=8 --latent_size=128
      
  • Die notwendigen Parameter für generate sind wie folgt:

    • "--output": Der Ordner in dem die Bilder gespeichert werden.

    • "--weights": Das State Dict eines Trainierten Generators.

    • "--num_pics": Gibt die Anzahl der zu erzeugenden Bilder.

    • "--device": Das Gerät auf dem Trainiert wird [cpu oder cuda]

    • "--num_classes": Gibt die Anzahl an Bildklassen an von denen erzeugt werden soll.

    • "latent_size": Gibt die Größe des Latenten Raums des Generators an.

    • Beispiel:

      python main.py -model="sngan" -method="generate" --output="_gewünschter Pfad_" --num_pics=8 --device="cuda" --num_classes=8 --latent_size=128
      
  • ProGAN

    • ProGAN unterstüzt zwei Methoden: train und generate

    • Für beide Methoden reicht es die notwendigen Parameter zu definieren

    • Zusätzlich können weitere Parameter gesetzt werden:

      • '-f' oder '--fade_ins': 6 Zahlen oder 1 Zahl in % mit '-' separiert (50-50-50-50-50-50 oder 50)
        • definiert wie groß die Fade Ins für den Generator pro Tiefe sein werden
      • '-ep' oder '--epochs': 6 Ganzezahlen mit '-' separiert (wie oben)
        • definiert wie viele Epochen pro Tiefe das Modell trainiert wird
      • '-np' oder '--num_pics': eine Ganzezahl
        • definiert, wie viele Bilder generiert werden sollen
    • der ProGAN trainiert aufsteigend. Er beginnt mit der Auflösung 8x8 und mit jeder weiteren Tiefe steigt die Auflösung um 2^(n+1)

    • Beispiel Aufruf: python main.py -model=progan -method=train -i=./models/CGAN/ZeldaALinkToThePast-Split -o=./trained_model -ep=20-40-60-100-150-200 -f=50

    • Beispiel Ausgabe:

      Using model: progan
      Using method: train
      Input directory: ./models/CGAN/ZeldaALinkToThePast-Split
      Output directory: ./trained_model
      Fade ins in %: [50, 50, 50, 50, 50, 50]
      Epochs per resolution (1-6): [20, 40, 60, 100, 150, 200]
      
      Dataset was initialized
      Dataset ImageFolder
        Number of datapoints: 688
        Root location: ./models/CGAN/ZeldaALinkToThePast-Split
        StandardTransform
      Transform: ToTensor()
      [torch.Size([3, 256, 256])]
      Generator is being initialized
      Initialization complete
      
      Starting the training process ...
      
      Currently working on Depth:  1
      Current resolution: 8 x 8
      Ticker 1
      
      Epoch: 1
      Elapsed: [0:00:15.227995]  batch: 1  d_loss: -0.450853  g_loss: 3.245314
      
  • Pix2Pix

    • Pix2Pix unterstüzt zwei Methoden: train und generate

    • Für beide Methoden sind die Argumente -i/--input (), -o/--output, -w/--weights notwendig, siehe folgende Ordner-Struktur.

      .
      ├── input
      │   ├── drawing
      │   │   ├── 1.png
      │   │   └── 2.png
      │   └── original
      │       ├── 1.png
      │       └── 2.png
      ├── output
      └── weights
          ├── best_weights.h5
          └── generator.h5
      
      6 directories, 6 files
      
      • Im übergebenen Input-Ordner erwartet das Modell die Unterordner drawing und original mit den jeweiligen Tiles des Kartensatzes und den dazugehörigen Zeichnungen.
      • Im Output-Ordner werden die Samples sowie die CSV-Dateien mit den Losses angelegt.
      • Im Weights-Ordner werden die Gewichte abgelegt und ggf. bereits vorhandene Gewichte mit den Dateinamen bes_weights.h5 und generator.h5 geladen.
    • Bei der Methode generate wird zusätzlich ein Ordner generated im Ordner output angelegt, der die Zeichnungen aus input/drawing in Kartendaten umwandelt. Der Ordner input/original ist in dem Fall nicht erforderlich.

    • Beispiel

      python main.py \
        --model pix2pix \
        --method train
        -i ./dataset \
        -o ./ \
        -w ./weights
      
      python main.py \
        --model pix2pix \
        --method generate
        -i ./dataset \
        -o ./ \
        -w ./weights
      

deepl's People

Contributors

kvnp avatar r-function avatar tsarovek0 avatar

Watchers

 avatar

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.