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