diff --git a/.gitignore b/.gitignore index abb4b76..714f57d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,5 +31,8 @@ clean **__pycache__ -# Exlude buckets from AWS S3 -images \ No newline at end of file +# Datasets +data + +# Models +**.h5 \ No newline at end of file diff --git a/research/01_radialImageProcessing/README.org b/research/01_radialImageProcessing/README.org index 83a9db3..3ec102a 100644 --- a/research/01_radialImageProcessing/README.org +++ b/research/01_radialImageProcessing/README.org @@ -1,10 +1,7 @@ -#+latex_header: \usepackage{../research} -#+bind: org-latex-minted-options (("bgcolor" "code")) -#+bind: org-latex-default-figure-position "H" -#+bind: org-latex-image-default-width "\\linewidth" -#+property: header-args :eval no-export :exports both +#+setupfile: ../research.org #+title: Radial Image Processing +#+author: Lewis Collum #+date: Updated: \today *Started 12/17/2019* diff --git a/research/01_radialImageProcessing/README.pdf b/research/01_radialImageProcessing/README.pdf index e4b888e..5b6f746 100644 Binary files a/research/01_radialImageProcessing/README.pdf and b/research/01_radialImageProcessing/README.pdf differ diff --git a/research/02_kerasIntroduction/.python-version b/research/02_TrafficSignClassification/.python-version similarity index 100% rename from research/02_kerasIntroduction/.python-version rename to research/02_TrafficSignClassification/.python-version diff --git a/research/02_kerasIntroduction/README.org b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org similarity index 50% rename from research/02_kerasIntroduction/README.org rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org index e70bae2..4e21f98 100644 --- a/research/02_kerasIntroduction/README.org +++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org @@ -1,70 +1,62 @@ -#+latex_header: \usepackage{../research} -#+bind: org-latex-minted-options (("bgcolor" "code")) -#+bind: org-latex-default-figure-position "H" -#+bind: org-latex-image-default-width "\\linewidth" -#+property: header-args :eval no-export :exports both :dir source +#+setupfile: ../../research.org -#+title: Sign Detection +#+title: Common Objects Image Recognition +#+author: Lewis Collum #+date: Updated: \today *Started 1/28/2020* -** Keras Demo -*** Pyenv - As of now, Tensorflow requires python 3.7, and the current python - version is 3.8. To provide python 3.7 to this project only, I used - =pyenv= (https://github.com/pyenv/pyenv). Since I'm using Arch - Linux, I used =pacman= to install pyenv, ~sudo pacman -S - pyenv~. Then I added the following lines to my bash_profile: +* Pyenv + As of now, Tensorflow requires python 3.7, and the current python + version is 3.8. To provide python 3.7 to this project only, I used + =pyenv= (https://github.com/pyenv/pyenv). Since I'm using Arch + Linux, I used =pacman= to install pyenv, ~sudo pacman -S + pyenv~. Then I added the following lines to my bash_profile: - #+begin_src bash + #+begin_src bash export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi - #+end_src - - Then I restarted my shell and went to my project directory and ran - ~pyenv local 3.7.6~. Finally, to install python 3.7.6: ~pyenv install 3.7.6~. - - In this directory I installed packages, via pip, for this - version. For example, ~sudo pip install matplotlib~. Refer to the - github link above for more information. - -*** Emacs Pyenv Mode - Emacs has the =pyenv-mode-auto= package which, when installed, - will automatically detect the project's python version (via the - .python-version file generated with ~pyenv local 3.7.6~ - above). This means that we can run org-mode python code blocks - will use the python version detected, instead of the system python - version (which is currently python 3.8). -*** Data Preperation -**** Downloading Images from AWS S3 Bucket - #+begin_src bash :async :exports code :dir "" -if [[ ! -d "images" ]]; then + #+end_src + + Then I restarted my shell and went to my project directory and ran + ~pyenv local 3.7.6~. Finally, to install python 3.7.6: ~pyenv install 3.7.6~. + + In this directory I installed packages, via pip, for this + version. For example, ~sudo pip install matplotlib~. Refer to the + github link above for more information. + +* Emacs Pyenv Mode + Emacs has the =pyenv-mode-auto= package which, when installed, + will automatically detect the project's python version (via the + .python-version file generated with ~pyenv local 3.7.6~ + above). This means that we can run org-mode python code blocks + will use the python version detected, instead of the system python + version (which is currently python 3.8). +* Downloading Images from AWS S3 Bucket + #+begin_src bash +if [[ ! -d "data" ]]; then wget https://s3.us-east-2.amazonaws.com/naturalimages02/images.tar.gz tar -xzf images.tar.gz rm -f images.tar.gz* fi; echo "DONE!" - #+end_src + #+end_src - #+RESULTS: - : DONE! - -**** Common Variables - =common.py= - #+begin_src python :tangle source/common.py -trainPath = '../images/train/' -testPath = '../images/test/' +* Common Variables + =common.py= + #+begin_src python :tangle source/common.py +trainPath = '../data/train/' +testPath = '../data/test/' classCount = 8 imageSize = 224 - #+end_src + #+end_src -**** Preparing Training Data - =batch.py= - #+begin_src python :results silent :tangle source/batch.py +* Preparing Training Data + =batch.py= + #+begin_src python :tangle source/batch.py from keras.preprocessing.image import ImageDataGenerator import numpy as np import common @@ -87,10 +79,10 @@ trainingBatchIterator = trainingBatchGenerator.flow_from_directory( x, y = trainingBatchIterator.next() sampleSize = trainingBatchIterator.n - #+end_src + #+end_src -**** Let's See the Batch - #+begin_src python :results file :var figureFile="../figure/generatedTrainingImages.png" +* Let's See the Batch + #+begin_src python :results silent import matplotlib.pyplot as pyplot import numpy @@ -104,18 +96,17 @@ for i in range(1, columns*rows+1): randomImageIndex = numpy.random.randint(batch.size) randomImage = batch.x[randomImageIndex].astype(numpy.int) figure.add_subplot(rows, columns, i) + pyplot.axis('off') pyplot.imshow(randomImage) -pyplot.savefig(figureFile) -return figureFile - #+end_src +pyplot.savefig("../figure/generatedTrainingImages.png") + #+end_src - #+RESULTS: - [[file:figure/generatedTrainingImages.png]] + [[./figure/generatedTrainingImages.png]] -**** Model Creation from VGG16 - =model.py= - #+begin_src python :results output :async :tangle source/model.py +* Model Creation from VGG16 + =model.py= + #+begin_src python :tangle source/model.py import keras from keras.models import Model, load_model from keras.layers import Activation, Dropout, Flatten, Dense @@ -142,10 +133,10 @@ model.add(Dense(common.classCount, activation='softmax')) if __name__ == '__main__': print(model.summary()) - #+end_src + #+end_src - #+RESULTS: - #+begin_example + #+RESULTS: + #+begin_example Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # @@ -165,11 +156,11 @@ if __name__ == '__main__': Non-trainable params: 14,714,688 _________________________________________________________________ None - #+end_example + #+end_example -**** Training - =training.py= - #+begin_src python :tangle source/training.py :async +* Training + =training.py= + #+begin_src python :tangle source/training.py from keras.optimizers import SGD import batch @@ -180,34 +171,65 @@ model.compile( optimizer = SGD(lr=1e-3), metrics = ['accuracy']) -# # Start the training process -# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2) - -# # #save the model -# model.save('catdog.h5') - -history = model.fit_generator( +model.fit_generator( batch.trainingBatchIterator, steps_per_epoch = batch.sampleSize/batch.size, - epochs = 10) + epochs = 2) model.save('fine_tune.h5') - #+end_src + #+end_src - #+RESULTS: - : 723bc9aae56987359e8608626ea62441 +* Testing Our Model + #+begin_src python :tangle source/testing.py +import keras +from keras.models import load_model +from keras.preprocessing.image import ImageDataGenerator -**** Summarize History - #+begin_src python import matplotlib.pyplot as pyplot -import training +import numpy as np +import common + +model = load_model('fine_tune.h5') + +test_datagen = ImageDataGenerator() + +test_generator = test_datagen.flow_from_directory( + directory=common.testPath, + target_size=(common.imageSize, common.imageSize), + color_mode='rgb', + shuffle=False, + class_mode='categorical', + batch_size=1) + +filenames = test_generator.filenames +nb_samples = len(filenames) + +fig=pyplot.figure() +columns = 4 +rows = 4 +for i in range(1, columns*rows): + x_batch, y_batch = test_generator.next() + + name = model.predict(x_batch) + name = np.argmax(name, axis=-1) + true_name = y_batch + true_name = np.argmax(true_name, axis=-1) + + label_map = (test_generator.class_indices) + label_map = dict((v,k) for k,v in label_map.items()) #flip k,v + predictions = [label_map[k] for k in name] + true_value = [label_map[k] for k in true_name] + + image = x_batch[0].astype(np.int) + fig.add_subplot(rows, columns, i) + pyplot.axis('off') + pyplot.title(f"guess: {predictions[0]}\nactual: {true_value[0]}") + pyplot.imshow(image) -pyplot.plot(training.history.history['loss']) -pyplot.title('loss') -pyplot.ylabel('loss') -pyplot.xlabel('epoch') -pyplot.legend(['loss'], loc='upper left') pyplot.show() - #+end_src + #+end_src + + [[./figure/testSetPredictions.png]] - #+RESULTS: +* Reference + - https://www.guru99.com/keras-tutorial.html diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf new file mode 100644 index 0000000..0f7d022 Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf differ diff --git a/research/02_kerasIntroduction/data.csv b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/data.csv similarity index 100% rename from research/02_kerasIntroduction/data.csv rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/data.csv diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png new file mode 100644 index 0000000..aa7d0a1 Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png differ diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png new file mode 100644 index 0000000..fcbc401 Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png differ diff --git a/research/02_kerasIntroduction/source/batch.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/batch.py similarity index 100% rename from research/02_kerasIntroduction/source/batch.py rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/batch.py diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py new file mode 100644 index 0000000..402adb7 --- /dev/null +++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py @@ -0,0 +1,4 @@ +trainPath = '../data/train/' +testPath = '../data/test/' +classCount = 8 +imageSize = 224 diff --git a/research/02_kerasIntroduction/source/model.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/model.py similarity index 100% rename from research/02_kerasIntroduction/source/model.py rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/model.py diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py new file mode 100644 index 0000000..91a8573 --- /dev/null +++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py @@ -0,0 +1,46 @@ +import keras +from keras.models import load_model +from keras.preprocessing.image import ImageDataGenerator + +import matplotlib.pyplot as pyplot +import numpy as np +import common + +model = load_model('fine_tune.h5') + +test_datagen = ImageDataGenerator() + +test_generator = test_datagen.flow_from_directory( + directory=common.testPath, + target_size=(common.imageSize, common.imageSize), + color_mode='rgb', + shuffle=False, + class_mode='categorical', + batch_size=1) + +filenames = test_generator.filenames +nb_samples = len(filenames) + +fig=pyplot.figure() +columns = 4 +rows = 4 +for i in range(1, columns*rows): + x_batch, y_batch = test_generator.next() + + name = model.predict(x_batch) + name = np.argmax(name, axis=-1) + true_name = y_batch + true_name = np.argmax(true_name, axis=-1) + + label_map = (test_generator.class_indices) + label_map = dict((v,k) for k,v in label_map.items()) #flip k,v + predictions = [label_map[k] for k in name] + true_value = [label_map[k] for k in true_name] + + image = x_batch[0].astype(np.int) + fig.add_subplot(rows, columns, i) + pyplot.axis('off') + pyplot.title(f"guess: {predictions[0]}\nactual: {true_value[0]}") + pyplot.imshow(image) + +pyplot.show() diff --git a/research/02_kerasIntroduction/source/training.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py similarity index 59% rename from research/02_kerasIntroduction/source/training.py rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py index c2def5e..1b253f2 100644 --- a/research/02_kerasIntroduction/source/training.py +++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py @@ -8,15 +8,9 @@ optimizer = SGD(lr=1e-3), metrics = ['accuracy']) -# # Start the training process -# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2) - -# # #save the model -# model.save('catdog.h5') - -history = model.fit_generator( +model.fit_generator( batch.trainingBatchIterator, steps_per_epoch = batch.sampleSize/batch.size, - epochs = 10) + epochs = 2) model.save('fine_tune.h5') diff --git a/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org new file mode 100644 index 0000000..32d89d0 --- /dev/null +++ b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org @@ -0,0 +1,41 @@ +#+setupfile: ../../research.org + +#+title: Traffic Sign Classification +#+date: Updated: \today +#+author: Lewis Collum +*Started 02/09/2020* + +* Downloading German Traffic Sign Recognition Benchmark GTSRB + #+begin_src bash +dataset=GTSRB-Training_fixed.zip + +if [[ ! -d "data" ]]; then + wget https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/$dataset + unzip $dataset -d "data" + rm -f $dataset +fi; + +if [[ -d "data/GTSRB/Training" ]]; then + mv "data/GTSRB/Training/" "data/train" + rm -rf "data/GTSRB" + mv "data/train/Readme.txt" "data/README_GTSRB" +fi; + +echo "DONE!" + #+end_src + +* Load the Data + =common.py= + #+begin_src python :tangle source_signs/common.py +trainPath = "../image/train" + + #+end_src +* Resources + \scriptsize + - Tutorial + - https://towardsdatascience.com/recognizing-traffic-signs-with-over-98-accuracy-using-deep-learning-86737aedc2ab + - https://github.com/kenshiro-o/CarND-Traffic-Sign-Classifier-Project + - https://github.com/kenshiro-o/CarND-Traffic-Sign-Classifier-Project/blob/master/Traffic_Sign_Classifier.ipynb + - Dataset + - https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/published-archive.html + - http://benchmark.ini.rub.de/?section=gtsrb&subsection=dataset diff --git a/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf new file mode 100644 index 0000000..3d82609 Binary files /dev/null and b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf differ diff --git a/research/02_kerasIntroduction/README.html b/research/02_kerasIntroduction/README.html deleted file mode 100644 index c17c2d3..0000000 --- a/research/02_kerasIntroduction/README.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - -Sign Detection - - - - - -
-

Sign Detection

-

-Started 1/28/2020 -

- -
-

Keras Demo

-
-
-
-

Pyenv

-
-

-As of now, Tensorflow requires python 3.7, and the current python -version is 3.8. To provide python 3.7 to this project only, I used -pyenv (https://github.com/pyenv/pyenv). Since I'm using Arch -Linux, I used pacman to install pyenv, sudo pacman -S - pyenv. Then I added the following lines to my bash_profile: -

- -
-
export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-
-if command -v pyenv 1>/dev/null 2>&1; then
-    eval "$(pyenv init -)"
-fi
-
-
- -

-Then I restarted my shell and went to my project directory and ran -pyenv local 3.7.6. Finally, to install python 3.7.6: pyenv install 3.7.6. -

- -

-In this directory I installed packages, via pip, for this -version. For example, sudo pip install matplotlib. Refer to the -github link above for more information. -

-
-
- -
-

Emacs Pyenv Mode

-
-

-Emacs has the pyenv-mode-auto package which, when installed, -will automatically detect the project's python version (via the -.python-version file generated with pyenv local 3.7.6 -above). This means that we can run org-mode python code blocks -will use the python version detected, instead of the system python -version (which is currently python 3.8). -

-
-
-
-

Data Preperation

-
-
-
-

Downloading Images from AWS S3 Bucket

-
-
-
if [[ ! -d "images" ]]; then
-    wget https://s3.us-east-2.amazonaws.com/naturalimages02/images.tar.gz
-    tar -xzf images.tar.gz
-    rm -f images.tar.gz*
-fi;
-echo "DONE!"
-
-
-
-
- -
-

Common Variables

-
-

-common.py -

-
-
trainPath = '../images/train/'
-testPath = '../images/test/'
-classCount = 8
-imageSize = 224
-
-
-
-
- -
-

Preparing Training Data

-
-

-batch.py -

-
-
from keras.preprocessing.image import ImageDataGenerator
-import numpy as np
-import common
-
-size = 16
-
-trainingBatchGenerator = ImageDataGenerator(
-    validation_split = 0.3,
-    shear_range = 0.2,
-    zoom_range = 0.2,
-    horizontal_flip = True)
-
-trainingBatchIterator = trainingBatchGenerator.flow_from_directory(
-    directory = common.trainPath,
-    target_size = (common.imageSize, common.imageSize),
-    batch_size = size,
-    class_mode = 'categorical',
-    color_mode = 'rgb',
-    shuffle = True)
-
-x, y = trainingBatchIterator.next()
-sampleSize = trainingBatchIterator.n
-
-
-
-
- -
-

Let's See the Batch

-
-
-
import matplotlib.pyplot as pyplot
-import numpy
-
-import batch
-
-figure = pyplot.figure()
-columns = 4
-rows = 4
-
-for i in range(1, columns*rows+1):
-    randomImageIndex = numpy.random.randint(batch.size)
-    randomImage = batch.x[randomImageIndex].astype(numpy.int)
-    figure.add_subplot(rows, columns, i)
-    pyplot.imshow(randomImage)
-
-pyplot.savefig(figureFile)
-return figureFile
-
-
- - -
-

generatedTrainingImages.png -

-
-
-
- -
-

Model Creation from VGG16

-
-

-model.py -

-
-
import keras
-from keras.models import Model, load_model
-from keras.layers import Activation, Dropout, Flatten, Dense
-from keras.preprocessing.image import ImageDataGenerator
-from keras.applications.vgg16 import VGG16
-
-import common
-
-baseModel = VGG16(
-    weights = 'imagenet',
-    include_top = False,
-    input_shape = (common.imageSize, common.imageSize, 3))
-
-for layer in baseModel.layers: 
-    layer.trainable = False
- 
-model = keras.models.Sequential()
-model.add(baseModel)
-
-model.add(Flatten())
-model.add(Dense(1024, activation='relu'))
-model.add(Dense(1024, activation='relu'))
-model.add(Dense(common.classCount, activation='softmax'))
-
-if __name__ == '__main__':
-    print(model.summary())
-
-
- -
-     Model: "sequential_1"
-     _________________________________________________________________
-     Layer (type)                 Output Shape              Param #   
-     =================================================================
-     vgg16 (Model)                (None, 7, 7, 512)         14714688  
-     _________________________________________________________________
-     flatten_1 (Flatten)          (None, 25088)             0         
-     _________________________________________________________________
-     dense_1 (Dense)              (None, 1024)              25691136  
-     _________________________________________________________________
-     dense_2 (Dense)              (None, 1024)              1049600   
-     _________________________________________________________________
-     dense_3 (Dense)              (None, 8)                 8200      
-     =================================================================
-     Total params: 41,463,624
-     Trainable params: 26,748,936
-     Non-trainable params: 14,714,688
-     _________________________________________________________________
-     None
-
-
-
- -
-

Training

-
-

-training.py -

-
-
from keras.optimizers import SGD
-
-import batch
-from model import model
-
-model.compile(
-    loss = 'categorical_crossentropy',
-    optimizer = SGD(lr=1e-3),
-    metrics = ['accuracy'])
-
-# # Start the training process
-# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2)
-
-# # #save the model
-# model.save('catdog.h5')
-
-history = model.fit_generator(
-    batch.trainingBatchIterator,
-    steps_per_epoch = batch.sampleSize/batch.size,
-    epochs = 10)
-        
-model.save('fine_tune.h5')
-
-
- -
-723bc9aae56987359e8608626ea62441
-
-
-
- -
-

Summarize History

-
-
-
import matplotlib.pyplot as pyplot
-import training
-
-pyplot.plot(training.history.history['loss'])
-pyplot.title('loss')
-pyplot.ylabel('loss')
-pyplot.xlabel('epoch')
-pyplot.legend(['loss'], loc='upper left')
-pyplot.show()
-
-
-
-
-
-
-
-
-

Date: Updated: \today

-

Created: 2020-01-29 Wed 11:57

-

Validate

-
- - diff --git a/research/02_kerasIntroduction/README.pdf b/research/02_kerasIntroduction/README.pdf deleted file mode 100644 index 6bf982f..0000000 Binary files a/research/02_kerasIntroduction/README.pdf and /dev/null differ diff --git a/research/02_kerasIntroduction/figure/generatedTrainingImages.png b/research/02_kerasIntroduction/figure/generatedTrainingImages.png deleted file mode 100644 index d90bd0b..0000000 Binary files a/research/02_kerasIntroduction/figure/generatedTrainingImages.png and /dev/null differ diff --git a/research/02_kerasIntroduction/source/common.py b/research/02_kerasIntroduction/source/common.py deleted file mode 100644 index fb78ed1..0000000 --- a/research/02_kerasIntroduction/source/common.py +++ /dev/null @@ -1,4 +0,0 @@ -trainPath = '../images/train/' -testPath = '../images/test/' -classCount = 8 -imageSize = 224 diff --git a/research/research.org b/research/research.org new file mode 100644 index 0000000..63abc39 --- /dev/null +++ b/research/research.org @@ -0,0 +1,7 @@ +#+latex_header: \usepackage{$HOME/frostAV/research/research} +#+bind: org-latex-minted-options (("bgcolor" "code")) +#+bind: org-latex-default-figure-position "H" +#+bind: org-latex-image-default-width "\\linewidth" +#+property: header-args :eval no-export :async +#+property: header-args:bash :exports code :results silent +#+property: header-args:python :dir source :exports both :results output