Je travaille sur une voiture auto-conduite. Je veux prédire l'angle de braquage des images en utilisant un CNN dans tflearn. Le problème est qu'il ne sort que 0.1. Selon vous, quel est le problème? Les images sont 128x128 mais j'ai essayé de les redimensionner à 28x28 pour que je puisse utiliser le code de l'exemple mnist. Les lables sont des angles de braquage entre 0 et 180. Je peux aussi dire que la perte ne diminue pas quand on s'entraîne.Régression de sortie CNN dans tflearn
Training.py
import tflearn
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.estimator import regression
import tflearn.datasets.mnist as mnist
import numpy
from scipy import misc
import csv
nrOfFiles = 0
csv_list = []
with open('/Users/gustavoskarsson/Desktop/car/csvfile.csv', 'r') as f:
reader = csv.reader(f)
csv_list = list(reader)
nrOfFiles = len(csv_list)
pics = []
face = misc.face()
for i in range(0, nrOfFiles):
face = misc.imread('/Users/gustavoskarsson/Desktop/car/pics/' + str(i) + '.jpg')
face = misc.imresize(face[:,:,0], (28, 28))
pics.append(face)
X = numpy.array(pics)
steer = []
throt = []
for i in range(0, nrOfFiles):
steer.append(csv_list[i][1])
throt.append(csv_list[i][2])
#y__ = numpy.array([steer, throt])
Y = numpy.array(steer)
Y = Y.reshape(-1, 1)
#Strunta i gasen till att börja med.
convnet = input_data(shape=[None, 28, 28, 1], name='input')
convnet = conv_2d(convnet, 32, 2, activation='relu')
convnet = max_pool_2d(convnet, 2)
convnet = conv_2d(convnet, 64, 2, activation='relu')
convnet = max_pool_2d(convnet, 2)
convnet = fully_connected(convnet, 1024, activation='relu')
convnet = dropout(convnet, 0.8)
convnet = fully_connected(convnet, 1, activation='softmax')
convnet = regression(convnet, optimizer='adam', learning_rate=0.01, loss='mean_square', name='targets')
model = tflearn.DNN(convnet)
model.fit(X, Y, n_epoch=6, batch_size=10, show_metric=True)
model.save('mod.model')
Predict.py
import tflearn
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.estimator import regression
import tflearn.datasets.mnist as mnist
import numpy
from scipy import misc
convnet = input_data(shape=[None, 28, 28, 1], name='input')
#[none, 28, 28, 1]
convnet = conv_2d(convnet, 32, 2, activation='relu')
convnet = max_pool_2d(convnet, 2)
convnet = conv_2d(convnet, 64, 2, activation='relu')
convnet = max_pool_2d(convnet, 2)
convnet = fully_connected(convnet, 1024, activation='relu')
convnet = dropout(convnet, 0.8)
convnet = fully_connected(convnet, 1, activation='softmax')
convnet = regression(convnet, optimizer='adam', learning_rate=0.01, loss='mean_square', name='targets')
model = tflearn.DNN(convnet)
model.load('mod.model')
#load test image
face = misc.face()
pics = []
for i in range(0, 3):
face = misc.imread('/Users/gustavoskarsson/Desktop/car/pics/' + str(i) + '.jpg')
face = misc.imresize(face[:,:,0], (28, 28))
pics.append(face)
test_x = numpy.array(pics)
test_x = test_x.reshape([-1, 28, 28, 1])
print(model.predict([test_x[0]]))
Merci, ce a résolu mon problème! –
Content d'entendre ça! Veuillez approuver ma réponse pour faire savoir aux autres que votre problème est résolu. – openloop