28.04.2020 Views

Sách Deep Learning cơ bản

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

142 Chương 10. Ứng dụng CNN cho ô tô tự lái

model = Sequential()

model.add(Lambda(lambda x: x/127.5-1.0, input_shape=INPUT_SHAPE))

model.add(Conv2D(24, 5, 5, activation='elu', subsample=(2, 2)))

model.add(Conv2D(36, 5, 5, activation='elu', subsample=(2, 2)))

model.add(Conv2D(48, 5, 5, activation='elu', subsample=(2, 2)))

model.add(Conv2D(64, 3, 3, activation='elu'))

model.add(Conv2D(64, 3, 3, activation='elu'))

model.add(Dropout(0.5))

model.add(Flatten())

model.add(Dense(100, activation='elu'))

model.add(Dropout(0.5))

model.add(Dense(50, activation='elu'))

model.add(Dense(10, activation='elu'))

model.add(Dense(1))

model.summary()

nb_epoch = 10

samples_per_epoch = 1000

batch_size = 32

save_best_only = True

learning_rate = 1e-4

# Checkpoint này để nói cho model lưu lại model nếu validation loss thấp nhất

checkpoint = ModelCheckpoint('models/model-{epoch:03d}.h5',

monitor='val_loss',

verbose=0,

save_best_only=save_best_only,

mode='auto')

# Dùng mean_squrared_error làm loss function

model.compile(loss='mean_squared_error', optimizer=Adam(lr=learning_rate))

# Train model

H = model.fit_generator(batch_generator(data_dir, X_train, y_train, batch_size, True),

steps_per_epoch = samples_per_epoch,

epochs = nb_epoch,

max_q_size=1,

validation_data=batch_generator(data_dir, X_valid, y_valid, \

batch_size, False),

nb_val_samples=len(X_valid),

callbacks=[checkpoint],

verbose=1)

10.4 Áp dụng model cho ô tô tự lái

Khi ta bật chế độ autonomous mode trong phần mềm mô phỏng, ta sẽ dùng socket để lấy được dữ

liệu từ camera giữa của ô tô sau đó dùng model để dự đoán góc lại. Cuối cùng ta sẽ chuyển lại dữ

liệu về góc lái, tốc độ lại cho phần mềm để ô tô di chuyển.

Code cụ thể trong file drive.py trong github nhưng đây là những phần quan trọng nhất

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!