Skip to content

Instantly share code, notes, and snippets.

View mihaidusmanu's full-sized avatar

Mihai Dusmanu mihaidusmanu

View GitHub Profile
@mihaidusmanu
mihaidusmanu / deconv2D.py
Last active December 1, 2018 17:07
Slight modifications to Keras' Conv2DTranspose layer to make it compatible with Zeiler and Fergus' paper.
import keras.backend as K
from keras.engine import InputSpec
from keras.layers import Conv2D
from keras.utils import conv_utils
class Deconv2D(Conv2D):
"""Deconvolution layer.
@mihaidusmanu
mihaidusmanu / pool_unpool.py
Last active December 6, 2018 09:46
Keras layers for Pooling and Unpooling (Zeiler and Fergus' paper).
from keras.engine.topology import Layer
import numpy as np
import tensorflow as tf
class MaxPooling2D(Layer):
def __init__(self, pool_size = 2, stride = None, padding = 'VALID', **kwargs):
self.pool_size = pool_size
assert(isinstance(self.pool_size, int))
@mihaidusmanu
mihaidusmanu / visualize_vgg.ipynb
Last active April 17, 2019 12:45
VGG16 deconv
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@mihaidusmanu
mihaidusmanu / lightgbm_kfold.ipynb
Last active July 6, 2022 14:45
LightGBM with Stratified K-Fold CV
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@mihaidusmanu
mihaidusmanu / mutual_nn_matcher.py
Created July 22, 2019 14:41
Mutual NN Matcher (numpy)
import numpy as np
def mutual_nn_matcher(descriptors1, descriptors2):
descriptors1 = descriptors1 / np.linalg.norm(descriptors1, axis=1)[:, np.newaxis]
descriptors2 = descriptors2 / np.linalg.norm(descriptors2, axis=1)[:, np.newaxis]
similarity = descriptors1 @ descriptors2.transpose()
nn12 = np.argmax(similarity, axis=1)
nn21 = np.argmax(similarity, axis=0)
ids1 = np.arange(similarity.shape[0])
valid_matches = (ids1 == nn21[nn12])
@mihaidusmanu
mihaidusmanu / COLMAP_Leonhard.md
Last active April 19, 2022 15:44
COLMAP on Leonhard

Compiling COLMAP on Leonhard

This is a short tutorial for compiling COLMAP on Leonhard with GCC 6.3.0. Qt installation is quite large so COLMAP cannot be compiled in the home directories.

Modules and Paths

Create a file called colmap_startup.sh in your home directory containing the following:

export DATA=/cluster/project/infk/cvg/$USER
@mihaidusmanu
mihaidusmanu / rec_stats.py
Created October 24, 2020 14:48
COLMAP covisibility
def compute_reconstruction_statistics(reference_model_path):
# Images w. intrinsics and extrinsics.
with open(os.path.join(reference_model_path, 'cameras.txt'), 'r') as f:
raw_cameras = f.readlines()[3 :]
cameras = {}
for raw_line in raw_cameras:
split_line = raw_line.strip('\n').split(' ')
cameras[int(split_line[0])] = split_line[1 :]
import torch
import torch.nn as nn
import torch.nn.functional as F
class GeM(nn.Module):
def __init__(self, p=3, eps=1e-6):
# Based on https://arxiv.org/abs/1711.02512.
super().__init__()
self.p = torch.nn.parameter.Parameter(torch.ones(1) * p)
\RequirePackage[%
style = alphabetic,
autocite = inline,
backend = biber,
doi = false,
url = true,
giveninits = true,
hyperref = true,
sortcites = true,
minalphanames = 1,
from pathlib import Path
from scantools.capture import Capture
path = Path('/media/SSD2/ms_eth_dataset/datasets/release_public/v2.0')
for location in ['LIN', 'CAB', 'HGE']:
print(location)
capture = Capture.load(path / location)
for session_id in ['map', 'query_hololens', 'query_phone', 'query_val_hololens', 'query_val_phone']: