Giter Club home page Giter Club logo

Comments (12)

oravus avatar oravus commented on June 8, 2024

Hi @XinLan12138,

For using any other dataset, you are right about generating .db (for training) and .npy (global descriptors) files.

Regarding global descriptors .npy files:
We used Nanne/pytorch-NetVlad repo to generate global descriptors using their pittsburgh trained model. You can also use our Patch-NetVLAD repo to do the same. I will be updating this (SeqNet) repo by tomorrow integrating global descriptor extraction using Patch-NetVLAD.

from seqnet.

XinLan12138 avatar XinLan12138 commented on June 8, 2024

Oh! Thanks for updating! I will read through the updates once you finished. BTW, how can I generate .db? Is that also included in the repo?

from seqnet.

oravus avatar oravus commented on June 8, 2024

Generating .db is not currently in the repo. The easiest way of creating them is by using the dbStruct declaration and then calling it as:

db = dbStruct(splitName, datasetName, dbImageList, utmDb, qImageList, utmQ, numDb, numQ, d, d**2, d2**2, None, None, None, None),

which can then be saved and parsed using save_db_struct and parse_db_struct functions.

Edit: d and d2 are posDistSqThr, nonTrivPosDistSqThr as explained here

from seqnet.

oravus avatar oravus commented on June 8, 2024

Hi @XinLan12138,

Single image descriptor extraction is now enabled, please see this Readme subsection.

from seqnet.

XinLan12138 avatar XinLan12138 commented on June 8, 2024

Hi @XinLan12138,

Single image descriptor extraction is now enabled, please see this Readme subsection.

Hi @oravus , I have seen it and currently trying to extract the feature of pittsburgh250k dataset. It seems to process well now. process as follows:
//////////////////////
python feature_extract.py --config_path patchnetvlad/configs/seqnet.ini --dataset_file_path /home/lx/lx/new_seqnet_data/pitts250k.txt --dataset_root_dir /home/lx/lx/new_seqnet_data --output_features_fullpath ../../data/descData/netvlad-pytorch/pitts250k.npy
Namespace(config_path='patchnetvlad/configs/seqnet.ini', dataset_file_path='/home/lx/lx/new_seqnet_data/pitts250k.txt', dataset_root_dir='/home/lx/lx/new_seqnet_data', nocuda=False, output_features_dir='/home/lx/lx/seqNet/thirdparty/Patch-NetVLAD/patchnetvlad/output_features', output_features_fullpath='../../data/descData/netvlad-pytorch/pitts250k.npy')
Parsing dataset...
Done! Found 254064 images
=> loading checkpoint '/home/lx/lx/seqNet/thirdparty/Patch-NetVLAD/patchnetvlad/./pretrained_models/pitts_orig_WPCA4096.pth.tar'
=> loaded checkpoint '/home/lx/lx/seqNet/thirdparty/Patch-NetVLAD/patchnetvlad/./pretrained_models/pitts_orig_WPCA4096.pth.tar'
====> Extracting Features
/////////////////////

However, I do not have oxford dataset as your dataset_root_dir so I can't reproduce the .npy as you. Can you send a copy of the source of Oxford dataset?

Also, regarding the generation of .db files, should I just write a python file to execute the two functions —— save_db_struct and parse_db_struct functions? Sorry for disturbance but I am new in this area :) Thank you for your help!

from seqnet.

oravus avatar oravus commented on June 8, 2024

The Oxford Robotcar dataset is already public (and its re-hosting might be restricted by its license). You can download particular traverses (and sensor/camera types) from here and use their official sdk to convert images to RGB format. Please refer to the imagenames files for this dataset specific to our project here.

If you are only meaning to test SeqNet on a readily available public dataset, you can download the Nordland dataset from here.

For .db files, you can import those functions in your python project, then create and save the dbstruct as per your requirement.

As you are using Pitts250K probably only to test feature extraction part, you would ideally need a sequence-based dataset for SeqNet.

from seqnet.

oravus avatar oravus commented on June 8, 2024

Hi @XinLan12138, please feel free to re-open if need be. Cheers!

from seqnet.

XinLan12138 avatar XinLan12138 commented on June 8, 2024

Hi, @oravus . Thank you for your quick reply. I have downloaded oxford dataset of 2014-12-16-18-44-24 and nordland dataset. Also, I tried to figure out how to generate .db files under ./structFiles. But things show that I only get the image list and corresponding images. No utmDb, utmQ, posDistThr, nonTrivPosDistSqThr can be found to construct the .db file.

I also downloaded pitts 250k from https://data.ciirc.cvut.cz/public/projects/2015netVLAD/Pittsburgh250k/ , in ./groundtruth files, I can get several these data but still do not know how to extract the .db. Maybe could u plz update a little more in repository on these part so that we can understand more about the adaption to other dataset using Seqnet if you re free? Or could you explain a bit more to help me out?

Besides, in your SeqNet paper GPS information is needed, is that represents for the utmDb and tumQ parameter?

Thanks for your patience and help to my project!!!

from seqnet.

oravus avatar oravus commented on June 8, 2024

Yes, the GPS information is stored as utmDb and utmQ. It is also 'abused' a bit when using the Nordland dataset; there, it represents the image index since the Nordland dataset traverses are exactly aligned, thus Nordland evaluation is done in terms of frames instead of meters (based on utm).

Regarding terminology and meaning of other parameters in db files, see Nanne/pytorch-NetVlad#26 and Nanne/pytorch-NetVlad#50, we follow the same convention for SeqNet. You can take help from that repository to process Pittsburgh dataset.

I am planning to release a seqnet feature extraction code, which might help solve part of your requirements with regards to testing any external traverse-based dataset.

from seqnet.

XinLan12138 avatar XinLan12138 commented on June 8, 2024

OK, I will check pytorch-NetVlad codes for references. And waiting for your newly updated codes! :)

from seqnet.

snakehaihai avatar snakehaihai commented on June 8, 2024

Generating .db is not currently in the repo. The easiest way of creating them is by using the dbStruct declaration and then calling it as:

db = dbStruct(splitName, datasetName, dbImageList, utmDb, qImageList, utmQ, numDb, numQ, d, d**2, d2**2, None, None, None, None),

which can then be saved and parsed using save_db_struct and parse_db_struct functions.

Hi thx for your work.

If I understand correctly, you only need to call db=dbStruct.... to create a new DB right?

May I know what the expected field in splitName, datasetName, dbImageList, utmDb, qImageList, utmQ, numDb, numQ, d, d2, d22,

The imagelist should be a txt file containing all the image
UTM can be txt or csv files that contain x and y locations right?
and num* should be integer number

What's the d d2 and d22?

from seqnet.

oravus avatar oravus commented on June 8, 2024

Hi @snakehaihai,

d and d2 are posDistSqThr, nonTrivPosDistSqThr as explained here. We use d and d2 as shorthand variables to name the .db files. I have updated this information in my earlier comment as well.

For a more detailed understanding of a .db file and the namedtuple (dbStruct), you can try the following (after git pull to the latest version):

from datasets import  parse_db_struct, print_db_concise
my_db =  parse_db_struct('./structFiles/oxford-v1.0_2015-03-17-11-08-44_2014-12-16-18-44-24_test_d-10_d2-5.db')
print_db_concise(my_db)

Hope that helps!

from seqnet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.