該存儲庫包含以下論文的實施:
"D2-Net: A Trainable CNN for Joint Detection and Description of Local Features".
M. Dusmanu, I. Rocco, T. Pajdla, M. Pollefeys, J. Sivic, A. Torii, and T. Sattler. CVPR 2019.
arxiv上的論文,項目頁面
建議使用Python 3.6+來運行我們的代碼。 Conda可用於安裝所需的軟件包:
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
conda install h5py imageio imagesize matplotlib numpy scipy tqdm可以通過運行下載現成的CAFFE VGG16重量及其調諧對應物:
mkdir models
wget https://dusmanu.com/files/d2-net/d2_ots.pth -O models/d2_ots.pth
wget https://dusmanu.com/files/d2-net/d2_tf.pth -O models/d2_tf.pth
wget https://dusmanu.com/files/d2-net/d2_tf_no_phototourism.pth -O models/d2_tf_no_phototourism.pth更新 - 2019年5月23日,我們添加了一組新的重量,在沒有光效率場景的情況下對Megadepth進行了訓練(Sagrada_familia -0019 -0019,Lincoln_memorial_statue -0021 -0021,Blitiss_museum -0024 -0024,Lendon_bridge -0025,US_CAPITOL -us_capitol -0078,Mount_rush,Mount -Mount -Mount -158999999999.我們的初始結果顯示出相似的性能。為了在測試時使用這些權重,您應該添加--model_file models/d2_tf_no_phototourism.pth 。
extract_features.py可用於提取給定圖像列表的D2功能。對於1200x1600圖像,單打功能需要少於6GB的VRAM。 --multiscale標誌可用於提取多尺度功能 - 為此,我們建議至少12GB的VRAM。
輸出格式可以是npz或mat 。無論哪種情況,功能文件都封裝了三個數組:
keypoints [ N x 3 ]陣列包含Kepoints x, y和Scales s的位置。位置遵循Colmap格式, X軸指向右側,將Y軸指向底部。scores [ N ]陣列包含關鍵點的激活(較高)。descriptors [ N x 512 ]包含L2歸一化描述符的數組。 python extract_features.py --image_list_file images.txt (--multiscale)Kapture是一種基於文本和二進製文件的樞軸文件格式,用於描述SFM(MOTION中的結構)和更廣泛的傳感器獲得數據。
它可在https://github.com/naver/kapture上找到。它包含用於流行格式的轉換工具,而Kapture中直接可用幾個流行的數據集。
它可以安裝:
pip install kapture數據集可以下載:
kapture_download_dataset.py update
kapture_download_dataset.py list
# e.g.: install mapping and query of Extended-CMU-Seasons_slice22
kapture_download_dataset.py install " Extended-CMU-Seasons_slice22_* "如果您想將自己的數據集轉換為Kapture,請在此處找到一些示例。
安裝後,您可以使用以下方式提取Kapture數據集的關鍵點
python extract_kapture.py --kapture-root pathto/yourkapturedataset (--multiscale)運行python extract_kapture.py --help以獲取有關提取參數的更多信息。
此處提供的培訓管道是Tensorflow代碼的Pytorch實現,用於訓練上面可下載的模型。
更新 - 2019年6月5日,我們已修復了數據集預處理中的一個錯誤 - 重新處理現在與原始Tensorflow實現相似。
更新 - 2019年8月7日,我們發布了培訓數據集的更新,更準確的版本 - 培訓更穩定,相同性能的速度更快。
對於此部分,應安裝Colmap。請參閱官方網站以獲取安裝說明。
在下載整個Megadepth數據集(包括SFM型號)之後,第一步是生成未介紹的重建。這可以通過調用undistort_reconstructions.py來完成:
python undistort_reconstructions.py --colmap_path /path/to/colmap/executable --base_path /path/to/megadepth接下來,可以使用preprocess_megadepth.sh來檢索相機參數併計算所有場景圖像之間的重疊。
bash preprocess_undistorted_megadepth.sh /path/to/megadepth /path/to/output/folder下載和預處理概述後,可以立即開始培訓:
python train.py --use_validation --dataset_path /path/to/megadepth --scene_info_path /path/to/preprocessing/output如果您在項目中使用此代碼,請引用以下論文:
@InProceedings { Dusmanu2019CVPR ,
author = { Dusmanu, Mihai and Rocco, Ignacio and Pajdla, Tomas and Pollefeys, Marc and Sivic, Josef and Torii, Akihiko and Sattler, Torsten } ,
title = { {D2-Net: A Trainable CNN for Joint Detection and Description of Local Features} } ,
booktitle = { Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
year = { 2019 } ,
}