- Most of the code exists to collect data and label it
- Actual training code is minimal (you will find prototxt files for all 3 DeepNav networks in the 'ml' directory)
- For implementing the geographically weighted loss functions, use the
SoftmaxWeightedLossandEuclideanWeightedLosslayers from my fork of caffe. - Unfortunately I haven't had the time to extensively document everything, but here's what the important executables do:
test_graph_makermakes a city graph given the datasettest_searchdemonstrates A* searchtest_dataset_makergenerates labels for a city and stores them in the city's directorytest_testerapplies the learned model for navigating in a city graphtest_evalevaluates the learned model
- Data directory structure:
- Each city has its own directory in
data/datasete.g.data/dataset/new_york - The data collection script stores the images, nodes and links in this directory
- Once that is done, the
test_dataset_makerexecutable generates labels in caffe-readable format in a subdirectory e.g.new_york/pairforDeepNav-pair,new_york/distanceforDeepNav-distanceetc. - You will have to collect your own data but I have provided some sample labels in
data/dataset/smallso that you can understand the format of training data - Each dataset folder (e.g.
/data/dataset/san_francisco) should have abox.txt.box.txthas 2 lines: first line is top left limit of the city inlatitude, longitudeformat and second line is bottom right limit of the city inlatitude, longitudeformat. You can use Google Maps to figure out these limits for your city/area. For example,data/dataset/small/box.txtis for San Francisco. - The
python/combine_datasets.pyscript can be used to combine the labels of multiple cities for large experiments
- Each city has its own directory in
@InProceedings{Brahmbhatt_2017_CVPR,
author = {Brahmbhatt, Samarth and Hays, James},
title = {DeepNav: Learning to Navigate Large Cities},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {July},
year = {2017}
}