Domain Adaptation in Unmanned Aerial Vehicles Navigation and Obstacle Avoidance using Deep Reinforcement Learning
Abstract:
Recent advancements in deep reinforcement learning (RL) inspired end-to-end learning of Unmanned Aerial Vehicles (UAV) navigation. However, they can be slow to train and require lots of interactions with the environment, as these reinforcement learning algorithms have no prior knowledge about the environments or tasks. Transfer learning was shown to useful to help in some problems in transferring knowledge from a source task to a target task. But most RL problems direct TL with fine-tuning might not be the best solution to transfer knowledge between tasks, environments. Our work presents an adversarial domain adaption method for UAV navigation and obstacle avoidance. We align state representations of pre-trained source domain with target domains and demonstrate in a realistic drone simulator that initialization with domain adaption showed significant performance improvements over RL task learned from scratch.
Downlaod indoor_updown environment. Link to download Download env and place it under unreal_envs/indoor_updown
Link to report - https://github.com/hemanthkandula/Drone-Navigation-Domain-Adaption-Deep-RL/blob/main/Report.pdf
Link to presentation - https://docs.google.com/presentation/d/1uxtALIXzihvG79XEEwhaFvZsndUPv903F-BUoFHG6PY/edit?usp=sharing
pip install requirements.txt
-
Edit in
configs/config.cfg
files- set Target: false
- set data_collect: false
- set mode : train
-
Run
python main.py
-
Edit in
configs/config.cfg
files- set Target: true
- set data_collect: false
- set mode : train
-
Run
python main.py
-
Edit in
configs/config.cfg
files- set Target: false
- set data_collect: true
- set mode : train
-
Edit
configs/DeepQLearning.cfg
file- set custom_load: true
- set custom_load_path: trained model here
- set epsilon_saturation: 100 because we want model to be greedy
-
Run
python main.py
-
Stop once if data collection is enough for training. 32 images collected for every 100 training steps
-
Edit in
configs/config.cfg
files- set Target: true
- set data_collect: true
- set mode : train
-
Run
python main.py
-
Stop once if data collection is enough for training. 32 images collected for every 100 training steps
- Collect path for Source model encoder.ckpt,classifier.ckpt files.
- data path is already set
- Run
python adda_main.py
-
Edit in
configs/config.cfg
files- set Target: true
- set data_collect: false
- set mode : train
-
Edit
configs/DeepQLearning.cfg
file- set custom_load: true
- set custom_load_path: 'adda/adapted_target/'
-
Run
python main.py
-
Edit in
configs/config.cfg
files- set Target: true
- set data_collect: false
- set mode : infer
-
Edit
configs/DeepQLearning.cfg
file- set custom_load: true
- set custom_load_path: scratch trained model here
-
Run
python main.py
-
Edit in
configs/config.cfg
files- set Target: true
- set data_collect: false
- set mode : infer
-
Edit
configs/DeepQLearning.cfg
file- set custom_load: true
- set custom_load_path: path to retrained model after adaption
-
Run
python main.py