65 lines
2.0 KiB
Python
Executable File
65 lines
2.0 KiB
Python
Executable File
#!/usr/bin/python3
|
|
#
|
|
# XXX This does not work yet XXX
|
|
#
|
|
# wut-ml-load
|
|
#
|
|
# Vet a SatNOGS image using machine learning (guessing).
|
|
# It will vet the image located at test/unvetted/waterfall.png.
|
|
# Load data/wut.h5 file.
|
|
#
|
|
# Note, there is an issue to fix where it will vet everything
|
|
# under the data/test directory, so fix that. For now, just delete
|
|
# everything else. :)
|
|
#
|
|
# Usage:
|
|
# wut-ml-load
|
|
# Example:
|
|
# wut-ml-load
|
|
|
|
import os
|
|
import numpy as np
|
|
import tensorflow.python.keras
|
|
from tensorflow.python.keras import Sequential
|
|
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
|
|
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
|
|
from tensorflow.python.keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D
|
|
from tensorflow.python.keras import optimizers
|
|
from tensorflow.python.keras.preprocessing import image
|
|
from tensorflow.python.keras.models import load_model
|
|
from tensorflow.python.keras.preprocessing.image import load_img
|
|
from tensorflow.python.keras.preprocessing.image import img_to_array
|
|
|
|
model = load_model('/srv/satnogs/data/wut.h5')
|
|
img_width=256
|
|
img_height=256
|
|
model = Sequential()
|
|
model.add(Convolution2D(32, 3, 3, input_shape=(img_width, img_height,3)))
|
|
model.add(Activation('relu'))
|
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
|
model.add(Convolution2D(32, 3, 3))
|
|
model.add(Activation('relu'))
|
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
|
model.add(Convolution2D(64, 3, 3))
|
|
model.add(Activation('relu'))
|
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
|
model.add(Flatten())
|
|
model.add(Dense(64))
|
|
model.add(Activation('relu'))
|
|
model.add(Dropout(0.5))
|
|
model.add(Dense(1))
|
|
model.add(Activation('sigmoid'))
|
|
model.compile(loss='binary_crossentropy',
|
|
optimizer='rmsprop',
|
|
metrics=['accuracy'])
|
|
|
|
prediction = model.predict(x=test_it, batch_size=None, verbose=0, steps=None, use_multiprocessing=True, workers=16)
|
|
print(prediction)
|
|
|
|
if prediction[0][0] == 1:
|
|
rating = 'bad'
|
|
else:
|
|
rating = 'good'
|
|
print('Observation: %s' % (rating))
|
|
|