From 5723ddf349dcdcb5d0a837bf447cb784ff0f77f6 Mon Sep 17 00:00:00 2001 From: jianjiang Date: Tue, 25 Apr 2023 20:01:16 +0800 Subject: [PATCH] SuperGlue-Image-Matching --- .gitattributes | 33 ++ .gitea/workflows/build.yaml | 47 ++ Dockerfile | 15 + README.md | 12 + app.py | 129 +++++ models/__init__.py | 0 models/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 149 bytes models/__pycache__/matching.cpython-38.pyc | Bin 0 -> 1665 bytes models/__pycache__/superglue.cpython-38.pyc | Bin 0 -> 9798 bytes models/__pycache__/superpoint.cpython-38.pyc | Bin 0 -> 5660 bytes models/__pycache__/utils.cpython-38.pyc | Bin 0 -> 16418 bytes models/matching.py | 84 +++ models/superglue.py | 285 ++++++++++ models/superpoint.py | 202 +++++++ models/utils.py | 567 +++++++++++++++++++ models/weights/superglue_indoor.pth | 3 + models/weights/superglue_outdoor.pth | 3 + models/weights/superpoint_v1.pth | 3 + outdoor-1.JPEG | Bin 0 -> 115363 bytes outdoor-2.JPEG | Bin 0 -> 68288 bytes requirements.txt | 61 ++ taj-1.jpg | Bin 0 -> 489663 bytes taj-2.jpg | Bin 0 -> 48540 bytes 23 files changed, 1444 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitea/workflows/build.yaml create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app.py create mode 100644 models/__init__.py create mode 100644 models/__pycache__/__init__.cpython-38.pyc create mode 100644 models/__pycache__/matching.cpython-38.pyc create mode 100644 models/__pycache__/superglue.cpython-38.pyc create mode 100644 models/__pycache__/superpoint.cpython-38.pyc create mode 100644 models/__pycache__/utils.cpython-38.pyc create mode 100644 models/matching.py create mode 100644 models/superglue.py create mode 100644 models/superpoint.py create mode 100644 models/utils.py create mode 100644 models/weights/superglue_indoor.pth create mode 100644 models/weights/superglue_outdoor.pth create mode 100644 models/weights/superpoint_v1.pth create mode 100644 outdoor-1.JPEG create mode 100644 outdoor-2.JPEG create mode 100644 requirements.txt create mode 100644 taj-1.jpg create mode 100644 taj-2.jpg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..e2e6830 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,33 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..1966567 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,47 @@ +name: Build +run-name: ${{ github.actor }} is upgrade release 🚀 +on: [push] +env: + REPOSITORY: ${{ github.repository }} + COMMIT_ID: ${{ github.sha }} +jobs: + Build-Deploy-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v3 + - + name: Setup Git LFS + run: | + git lfs install + git lfs fetch + git lfs checkout + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - + name: Docker Image Info + id: image-info + run: | + echo "::set-output name=image_name::$(echo $REPOSITORY | tr '[:upper:]' '[:lower:]')" + echo "::set-output name=image_tag::${COMMIT_ID:0:10}" + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: artifacts.iflytek.com + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build and push + run: | + docker version + docker buildx build -t artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} . --file ${{ github.workspace }}/Dockerfile --load + docker push artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + docker rmi artifacts.iflytek.com/docker-private/atp/${{ steps.image-info.outputs.image_name }}:${{ steps.image-info.outputs.image_tag }} + - run: echo "🍏 This job's status is ${{ job.status }}." diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b7fde67 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +#FROM python:3.8.13 +FROM artifacts.iflytek.com/docker-private/atp/base_image_for_ailab:0.0.1 + +WORKDIR /app + +COPY . /app + +RUN pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple +RUN pip install -r requirements.txt + +RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list +RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y + + +CMD ["python", "app.py"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..83fe879 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +--- +title: SuperGlue Image Matching +emoji: 🧚‍♀️ +colorFrom: purple +colorTo: indigo +sdk: gradio +sdk_version: 3.8.1 +app_file: app.py +pinned: false +--- + +Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference diff --git a/app.py b/app.py new file mode 100644 index 0000000..564c962 --- /dev/null +++ b/app.py @@ -0,0 +1,129 @@ +import matplotlib.cm as cm +import torch +import gradio as gr +from models.matching import Matching +from models.utils import (make_matching_plot_fast, process_image) + +torch.set_grad_enabled(False) + +# Load the SuperPoint and SuperGlue models. +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +resize = [640, 640] +max_keypoints = 1024 +keypoint_threshold = 0.005 +nms_radius = 4 +sinkhorn_iterations = 20 +match_threshold = 0.2 +resize_float = False + +config_indoor = { + 'superpoint': { + 'nms_radius': nms_radius, + 'keypoint_threshold': keypoint_threshold, + 'max_keypoints': max_keypoints + }, + 'superglue': { + 'weights': "indoor", + 'sinkhorn_iterations': sinkhorn_iterations, + 'match_threshold': match_threshold, + } +} + +config_outdoor = { + 'superpoint': { + 'nms_radius': nms_radius, + 'keypoint_threshold': keypoint_threshold, + 'max_keypoints': max_keypoints + }, + 'superglue': { + 'weights': "outdoor", + 'sinkhorn_iterations': sinkhorn_iterations, + 'match_threshold': match_threshold, + } +} + +matching_indoor = Matching(config_indoor).eval().to(device) +matching_outdoor = Matching(config_outdoor).eval().to(device) + +def run(input0, input1, superglue): + if superglue == "indoor": + matching = matching_indoor + else: + matching = matching_outdoor + + name0 = 'image1' + name1 = 'image2' + + # If a rotation integer is provided (e.g. from EXIF data), use it: + rot0, rot1 = 0, 0 + + # Load the image pair. + image0, inp0, scales0 = process_image(input0, device, resize, rot0, resize_float) + image1, inp1, scales1 = process_image(input1, device, resize, rot1, resize_float) + + if image0 is None or image1 is None: + print('Problem reading image pair') + return + + # Perform the matching. + pred = matching({'image0': inp0, 'image1': inp1}) + pred = {k: v[0].detach().numpy() for k, v in pred.items()} + kpts0, kpts1 = pred['keypoints0'], pred['keypoints1'] + matches, conf = pred['matches0'], pred['matching_scores0'] + + valid = matches > -1 + mkpts0 = kpts0[valid] + mkpts1 = kpts1[matches[valid]] + mconf = conf[valid] + + + # Visualize the matches. + color = cm.jet(mconf) + text = [ + 'SuperGlue', + 'Keypoints: {}:{}'.format(len(kpts0), len(kpts1)), + '{}'.format(len(mkpts0)), + ] + + if rot0 != 0 or rot1 != 0: + text.append('Rotation: {}:{}'.format(rot0, rot1)) + + # Display extra parameter info. + k_thresh = matching.superpoint.config['keypoint_threshold'] + m_thresh = matching.superglue.config['match_threshold'] + small_text = [ + 'Keypoint Threshold: {:.4f}'.format(k_thresh), + 'Match Threshold: {:.2f}'.format(m_thresh), + 'Image Pair: {}:{}'.format(name0, name1), + ] + + output = make_matching_plot_fast( + image0, image1, kpts0, kpts1, mkpts0, mkpts1, color, + text, show_keypoints=True, small_text=small_text) + + print('Source Image - {}, Destination Image - {}, {}, Match Percentage - {}'.format(name0, name1, text[2], len(mkpts0)/len(kpts0))) + return output, text[2], str((len(mkpts0)/len(kpts0))*100.0) + '%' + +if __name__ == '__main__': + + glue = gr.Interface( + fn=run, + inputs=[ + gr.Image(label='Input Image'), + gr.Image(label='Match Image'), + gr.Radio(choices=["indoor", "outdoor"], value="indoor", type="value", label="SuperGlueType", interactive=True), + ], + outputs=[gr.Image( + type="pil", + label="Result"), + gr.Textbox(label="Keypoints Matched"), + gr.Textbox(label="Match Percentage") + ], + examples=[ + ['./taj-1.jpg', './taj-2.jpg', "outdoor"], + ['./outdoor-1.JPEG', './outdoor-2.JPEG', "outdoor"] + ] + ) + glue.queue() + glue.launch(server_name = "0.0.0.0") diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/models/__pycache__/__init__.cpython-38.pyc b/models/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c84b2a53fe2317bae82c985043351a65b6cdfe9 GIT binary patch literal 149 zcmWIL<>g`kg152J$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vCKO;XkRX;JY zxFjP{Ke)6Ywa7iEG&P_owWKI9GcPs8FSVpRzbIQjH$Npcr&vEeJ~J<~BtBlRpz;=n R4N$N&C)EyQ=4T*g001h;BfS6s literal 0 HcmV?d00001 diff --git a/models/__pycache__/matching.cpython-38.pyc b/models/__pycache__/matching.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..792bf951b11a7f0243ceeea38397e7d95a72693e GIT binary patch literal 1665 zcmbtUOK%%D5GJ_~J!&^@kT!5nEYQLh5=d5>Ltz+3iv|gLh!NE2p_>|u#gdX3?aL%p z*TVWF1Ni|3dbW=S`e%COwWl2V2YTv|E6ZwnETx$xxwA7LznS3=o10w(5rQT z{b?8L!-vJ!AnGen3^AOc2rw*v|dT%l*j5=mlZ{3oj81IeHVk2^U_}V)z*K zTJPX%bo35`?qSnCo>g4FDn+4T)p4sA*^H;wYJJ$~cBsdoIEpYs5n(v;1RCMDAQs7G zC-Rxkf=d(yZ;_9p5F&=A{W8(%L=@xs6Z&1Aj5)pCpwDGlXkIY7dk2I*qAMIdni3bc zQFb1Hcp&NtD2*2A3ST3PG^z2G$FM-xWPxiG`#NwtWVI7A1bDn7(^dA=l|8lTxcL~) z+-sS@ElfL(MIm$?OB={|W3FWgGih0nEl@pTe8sbo3DdF|iSZ4P7sqLqC>6&y=gVk|fN$`}2g0my8&q_HRg*uAnw*%)D(R@HM{hYN!;OrP{OHJwprp8v*;! z*|U{>YiaL;ecRdl>-IIS348}po}rW7i@;`}4z`i@v_B#XA}bwSfls@44OVqy7T9ieSW#>JbKz*zz?9%0MJB_taR82)yaYn_6 zzTTPgbC+DTxAU0Zt%f@%l>Z`>rlNpUV$Cx zvWKW9zmiiQc)|wn$$MaP;~CQ5Gk9w7&u*hpTky(s4=n1m%&S9J4Yo8w_nUvdDxy&- z&l1V{2U(dWnL6y>eY6IAxI{esKZu77wvPeEdr;*z>^%o@h2CK7wOykDW18p6bcGUy z(n*nW<7bdL6X;o$ad?z6oj||pB%L-L8Ojg9m+@`tj9*F4qQL6C<}s8H{|mvimQ2_? z)zOba-)lq1eS)11+QdE|cpsAa*8B9qg#kB3k>os%O*f9AmuH!sZ^ZHGEXkH{T5-(E z6fP6n*zyYta&viCq&&;uh0STB;NnNp=26;q9)dV>+Stcif!hOyKC|y_UfuQNPVa6e fLyE$LFC7YJyXM%1a0SvnXmB1rT6rfMc*FY#1GbW~ literal 0 HcmV?d00001 diff --git a/models/__pycache__/superglue.cpython-38.pyc b/models/__pycache__/superglue.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdbbec26830d8eb9dd315c3310e55a4e5d3b9a71 GIT binary patch literal 9798 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 literal 0 HcmV?d00001 diff --git a/models/__pycache__/superpoint.cpython-38.pyc b/models/__pycache__/superpoint.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de670a62812dbc75b16c582fe47f2864ba15a6d6 GIT binary patch literal 5660 zcmZ`-&2JmW72lct;F6LkS(a_d&d0_rk`QquOLm+^-`dh0zLK**i(z1bm*<87LEIRvrCGMlO^`; z%$u+G-n{v}H+*kmqNL&Z*R2n0e|uKb{z;YL$3W!`ym0~|G{G8LlT{g`GH>uI$5(Ig zre4*V<{QFz$b>1ZyGGUY4f=_~LtWUS2#$qX3GHKI9JPWtih3FKNilWTtlC#JaYRht z)x@-~Zx#3SYDw_xT4m+{D{B>&8mnHixq<=@!$&MFh0WNNo(Q(%8mBJ#Q^eQ8tK*G7 z2DuNZ>t;NjXdknC+By?l=y&ZdPuM>1Xg$`|J6Z>&Jyz#kBhiJi$CkBQ7rQ37#=g-* z3uZ977DkvItAqYMy<6xM&|XlZ?2gf~JJuvj^_JE(ZeLJ64a}?ebm(BVFF0>|apJ5* z;mb|$PSD(LI`MX^CH*)KqR>eqNBYfZ$9F>ClWQM2ttbeS*pUnh)QI#SDwBFg@y5@9 zB-$3+;#&}k6rI7goWP5+{=mS}#>xR%=YYmN($lfJFGIiK#zEUptvHc^@Y6!e6CwyV zDn@E1k*sY>GG1C*-wtaD#Pb?y2~xYQC~7PT>;StX$uS;j|GBuZ88!U{56W$N3)i<> zzP!@d_E)8!NG}L|vEnDYk*qH?BjGpV1t{%HrQCe$qtx!tdJeP2;~*Nd8P`f0*ZAZ1 zQ*qF2HGCI4J%6zg)x1W0X}&*1k`*deT7EN*eMw?|U&=^Ink6l@eHq1WBdGhSDZOw5 zpY=xMC8@c)=}W&-gz~ir=9eb=%V`>9szFsHRMU&=DRZku+9j82)iG7fMpef{e;4dK zs!2}K9ApuBgeEE-%DsSkJOiTfaXxO8*f@SutgNU!1%5?Ot+hxBU#8ZkA8c%rjDbit zYb06!u~DD}F5`_`ARTPBV4rZo*ZCa$w{Cugqj&hMR)CM4l!>Zd|p<$nIwT-AxUuXO>mwRhBJhr^L-xiQmM)m`tPbGwcjpM?Qx#IcU8` zF5G{}a%4?qz4It^cmfOJ?3!{0nljQb!7+lq9Cqao^qah!A%jjJ>u*LbXi0(fm6*$k5}fO9~a zkuvd!GQ_1|3j(KWjkftg^Zv{{7&U8t#m&g$@)p_W+<8~qi|2Jf+b z0yie0^wS!RRfuBDq73sG!i2%@2ul$1FGvBUOD08sSm=`ge*#vbTh)?sk4@%DoAPM8opG`z%jgdf*r&;lUEj+YF4 z&LJS6;|_Er2-v`j=kKqtC~s@)i}UBw39k`sgf32a=*#%V!DBq|C}2=(uLTVNlP4eX zl(poyFt#$5n(?LwWK!T^C4Lx3GUZ8>j=Am*X25c;t58u+U_d&y0pN6FkKidab^?Dl zEryY7Vp-s70k}fbRcz%D>DZ7evO?q8TFPoE+e{f8-IE(nc*t}%w>va)6$9gW5RI1s zA!iwX%<)=$oE=xFS$=E`cs3hX7;15O2_tGWZ1^F|(G!0c#Mi1!Xo%&ks#A2twwR#S zL$hkAh*=Q!UAt=1mfpoly$2|&7O-VwX-Pr;Dn+aIzYojK`+i^pHTw584Bs|s^QnXwIGakg4*Uh)^aYtzk2P1GtSc4#aHK@ z%_M2XuPrQi@=mZbAIXgcZ!KO}d}VQI{_HCkmR`-IKhO|a4+vm3em?X2EB|OGugjNE ztC(r|aPwRMhKe-lbpO!1$tJl;)DY?K_k8g}rn!Hm8k@IF=kwPVBL*SuuV}g}(i{tbR~>)IV# zl4rl5*~f zdGH36-v&AO1(mK4d4mXT_5tm-B%nW_Fqg&Cw@_-&?W#0kIGJ*H7Ux@VsAcL&?$>_t z^oUcPcADEbMr%GY%Q#2^WSTgRr(a$?-9GVd) zYe^oqiJR(3gVWOc9`aU|LZ)U*0?&{m8Zq!lUZp8{Z4vKMmDkSUJ&*T0&!zBNjJ@%z#?%4~+0kPFzn zee`f|=KFgwf)M0T1B5sU8{B96^dhnfHiw9gYYxwOINyUhlEk4Fq=ADL8jTELP#^6H z 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 z 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 literal 0 HcmV?d00001 diff --git a/models/matching.py b/models/matching.py new file mode 100644 index 0000000..5d17420 --- /dev/null +++ b/models/matching.py @@ -0,0 +1,84 @@ +# %BANNER_BEGIN% +# --------------------------------------------------------------------- +# %COPYRIGHT_BEGIN% +# +# Magic Leap, Inc. ("COMPANY") CONFIDENTIAL +# +# Unpublished Copyright (c) 2020 +# Magic Leap, Inc., All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains the property +# of COMPANY. The intellectual and technical concepts contained herein +# are proprietary to COMPANY and may be covered by U.S. and Foreign +# Patents, patents in process, and are protected by trade secret or +# copyright law. Dissemination of this information or reproduction of +# this material is strictly forbidden unless prior written permission is +# obtained from COMPANY. Access to the source code contained herein is +# hereby forbidden to anyone except current COMPANY employees, managers +# or contractors who have executed Confidentiality and Non-disclosure +# agreements explicitly covering such access. +# +# The copyright notice above does not evidence any actual or intended +# publication or disclosure of this source code, which includes +# information that is confidential and/or proprietary, and is a trade +# secret, of COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, +# PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS +# SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF COMPANY IS +# STRICTLY PROHIBITED, AND IN VIOLATION OF APPLICABLE LAWS AND +# INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS SOURCE +# CODE AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS +# TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, +# USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR IN PART. +# +# %COPYRIGHT_END% +# ---------------------------------------------------------------------- +# %AUTHORS_BEGIN% +# +# Originating Authors: Paul-Edouard Sarlin +# +# %AUTHORS_END% +# --------------------------------------------------------------------*/ +# %BANNER_END% + +import torch + +from .superpoint import SuperPoint +from .superglue import SuperGlue + + +class Matching(torch.nn.Module): + """ Image Matching Frontend (SuperPoint + SuperGlue) """ + def __init__(self, config={}): + super().__init__() + self.superpoint = SuperPoint(config.get('superpoint', {})) + self.superglue = SuperGlue(config.get('superglue', {})) + + def forward(self, data): + """ Run SuperPoint (optionally) and SuperGlue + SuperPoint is skipped if ['keypoints0', 'keypoints1'] exist in input + Args: + data: dictionary with minimal keys: ['image0', 'image1'] + """ + pred = {} + + # Extract SuperPoint (keypoints, scores, descriptors) if not provided + if 'keypoints0' not in data: + pred0 = self.superpoint({'image': data['image0']}) + pred = {**pred, **{k+'0': v for k, v in pred0.items()}} + if 'keypoints1' not in data: + pred1 = self.superpoint({'image': data['image1']}) + pred = {**pred, **{k+'1': v for k, v in pred1.items()}} + + # Batch all features + # We should either have i) one image per batch, or + # ii) the same number of local features for all images in the batch. + data = {**data, **pred} + + for k in data: + if isinstance(data[k], (list, tuple)): + data[k] = torch.stack(data[k]) + + # Perform the matching + pred = {**pred, **self.superglue(data)} + + return pred diff --git a/models/superglue.py b/models/superglue.py new file mode 100644 index 0000000..5a89b03 --- /dev/null +++ b/models/superglue.py @@ -0,0 +1,285 @@ +# %BANNER_BEGIN% +# --------------------------------------------------------------------- +# %COPYRIGHT_BEGIN% +# +# Magic Leap, Inc. ("COMPANY") CONFIDENTIAL +# +# Unpublished Copyright (c) 2020 +# Magic Leap, Inc., All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains the property +# of COMPANY. The intellectual and technical concepts contained herein +# are proprietary to COMPANY and may be covered by U.S. and Foreign +# Patents, patents in process, and are protected by trade secret or +# copyright law. Dissemination of this information or reproduction of +# this material is strictly forbidden unless prior written permission is +# obtained from COMPANY. Access to the source code contained herein is +# hereby forbidden to anyone except current COMPANY employees, managers +# or contractors who have executed Confidentiality and Non-disclosure +# agreements explicitly covering such access. +# +# The copyright notice above does not evidence any actual or intended +# publication or disclosure of this source code, which includes +# information that is confidential and/or proprietary, and is a trade +# secret, of COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, +# PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS +# SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF COMPANY IS +# STRICTLY PROHIBITED, AND IN VIOLATION OF APPLICABLE LAWS AND +# INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS SOURCE +# CODE AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS +# TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, +# USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR IN PART. +# +# %COPYRIGHT_END% +# ---------------------------------------------------------------------- +# %AUTHORS_BEGIN% +# +# Originating Authors: Paul-Edouard Sarlin +# +# %AUTHORS_END% +# --------------------------------------------------------------------*/ +# %BANNER_END% + +from copy import deepcopy +from pathlib import Path +from typing import List, Tuple + +import torch +from torch import nn + + +def MLP(channels: List[int], do_bn: bool = True) -> nn.Module: + """ Multi-layer perceptron """ + n = len(channels) + layers = [] + for i in range(1, n): + layers.append( + nn.Conv1d(channels[i - 1], channels[i], kernel_size=1, bias=True)) + if i < (n-1): + if do_bn: + layers.append(nn.BatchNorm1d(channels[i])) + layers.append(nn.ReLU()) + return nn.Sequential(*layers) + + +def normalize_keypoints(kpts, image_shape): + """ Normalize keypoints locations based on image image_shape""" + _, _, height, width = image_shape + one = kpts.new_tensor(1) + size = torch.stack([one*width, one*height])[None] + center = size / 2 + scaling = size.max(1, keepdim=True).values * 0.7 + return (kpts - center[:, None, :]) / scaling[:, None, :] + + +class KeypointEncoder(nn.Module): + """ Joint encoding of visual appearance and location using MLPs""" + def __init__(self, feature_dim: int, layers: List[int]) -> None: + super().__init__() + self.encoder = MLP([3] + layers + [feature_dim]) + nn.init.constant_(self.encoder[-1].bias, 0.0) + + def forward(self, kpts, scores): + inputs = [kpts.transpose(1, 2), scores.unsqueeze(1)] + return self.encoder(torch.cat(inputs, dim=1)) + + +def attention(query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> Tuple[torch.Tensor,torch.Tensor]: + dim = query.shape[1] + scores = torch.einsum('bdhn,bdhm->bhnm', query, key) / dim**.5 + prob = torch.nn.functional.softmax(scores, dim=-1) + return torch.einsum('bhnm,bdhm->bdhn', prob, value), prob + + +class MultiHeadedAttention(nn.Module): + """ Multi-head attention to increase model expressivitiy """ + def __init__(self, num_heads: int, d_model: int): + super().__init__() + assert d_model % num_heads == 0 + self.dim = d_model // num_heads + self.num_heads = num_heads + self.merge = nn.Conv1d(d_model, d_model, kernel_size=1) + self.proj = nn.ModuleList([deepcopy(self.merge) for _ in range(3)]) + + def forward(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor: + batch_dim = query.size(0) + query, key, value = [l(x).view(batch_dim, self.dim, self.num_heads, -1) + for l, x in zip(self.proj, (query, key, value))] + x, _ = attention(query, key, value) + return self.merge(x.contiguous().view(batch_dim, self.dim*self.num_heads, -1)) + + +class AttentionalPropagation(nn.Module): + def __init__(self, feature_dim: int, num_heads: int): + super().__init__() + self.attn = MultiHeadedAttention(num_heads, feature_dim) + self.mlp = MLP([feature_dim*2, feature_dim*2, feature_dim]) + nn.init.constant_(self.mlp[-1].bias, 0.0) + + def forward(self, x: torch.Tensor, source: torch.Tensor) -> torch.Tensor: + message = self.attn(x, source, source) + return self.mlp(torch.cat([x, message], dim=1)) + + +class AttentionalGNN(nn.Module): + def __init__(self, feature_dim: int, layer_names: List[str]) -> None: + super().__init__() + self.layers = nn.ModuleList([ + AttentionalPropagation(feature_dim, 4) + for _ in range(len(layer_names))]) + self.names = layer_names + + def forward(self, desc0: torch.Tensor, desc1: torch.Tensor) -> Tuple[torch.Tensor,torch.Tensor]: + for layer, name in zip(self.layers, self.names): + if name == 'cross': + src0, src1 = desc1, desc0 + else: # if name == 'self': + src0, src1 = desc0, desc1 + delta0, delta1 = layer(desc0, src0), layer(desc1, src1) + desc0, desc1 = (desc0 + delta0), (desc1 + delta1) + return desc0, desc1 + + +def log_sinkhorn_iterations(Z: torch.Tensor, log_mu: torch.Tensor, log_nu: torch.Tensor, iters: int) -> torch.Tensor: + """ Perform Sinkhorn Normalization in Log-space for stability""" + u, v = torch.zeros_like(log_mu), torch.zeros_like(log_nu) + for _ in range(iters): + u = log_mu - torch.logsumexp(Z + v.unsqueeze(1), dim=2) + v = log_nu - torch.logsumexp(Z + u.unsqueeze(2), dim=1) + return Z + u.unsqueeze(2) + v.unsqueeze(1) + + +def log_optimal_transport(scores: torch.Tensor, alpha: torch.Tensor, iters: int) -> torch.Tensor: + """ Perform Differentiable Optimal Transport in Log-space for stability""" + b, m, n = scores.shape + one = scores.new_tensor(1) + ms, ns = (m*one).to(scores), (n*one).to(scores) + + bins0 = alpha.expand(b, m, 1) + bins1 = alpha.expand(b, 1, n) + alpha = alpha.expand(b, 1, 1) + + couplings = torch.cat([torch.cat([scores, bins0], -1), + torch.cat([bins1, alpha], -1)], 1) + + norm = - (ms + ns).log() + log_mu = torch.cat([norm.expand(m), ns.log()[None] + norm]) + log_nu = torch.cat([norm.expand(n), ms.log()[None] + norm]) + log_mu, log_nu = log_mu[None].expand(b, -1), log_nu[None].expand(b, -1) + + Z = log_sinkhorn_iterations(couplings, log_mu, log_nu, iters) + Z = Z - norm # multiply probabilities by M+N + return Z + + +def arange_like(x, dim: int): + return x.new_ones(x.shape[dim]).cumsum(0) - 1 # traceable in 1.1 + + +class SuperGlue(nn.Module): + """SuperGlue feature matching middle-end + + Given two sets of keypoints and locations, we determine the + correspondences by: + 1. Keypoint Encoding (normalization + visual feature and location fusion) + 2. Graph Neural Network with multiple self and cross-attention layers + 3. Final projection layer + 4. Optimal Transport Layer (a differentiable Hungarian matching algorithm) + 5. Thresholding matrix based on mutual exclusivity and a match_threshold + + The correspondence ids use -1 to indicate non-matching points. + + Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, and Andrew + Rabinovich. SuperGlue: Learning Feature Matching with Graph Neural + Networks. In CVPR, 2020. https://arxiv.org/abs/1911.11763 + + """ + default_config = { + 'descriptor_dim': 256, + 'weights': 'indoor', + 'keypoint_encoder': [32, 64, 128, 256], + 'GNN_layers': ['self', 'cross'] * 9, + 'sinkhorn_iterations': 100, + 'match_threshold': 0.2, + } + + def __init__(self, config): + super().__init__() + self.config = {**self.default_config, **config} + + self.kenc = KeypointEncoder( + self.config['descriptor_dim'], self.config['keypoint_encoder']) + + self.gnn = AttentionalGNN( + feature_dim=self.config['descriptor_dim'], layer_names=self.config['GNN_layers']) + + self.final_proj = nn.Conv1d( + self.config['descriptor_dim'], self.config['descriptor_dim'], + kernel_size=1, bias=True) + + bin_score = torch.nn.Parameter(torch.tensor(1.)) + self.register_parameter('bin_score', bin_score) + + assert self.config['weights'] in ['indoor', 'outdoor'] + path = Path(__file__).parent + path = path / 'weights/superglue_{}.pth'.format(self.config['weights']) + self.load_state_dict(torch.load(str(path))) + print('Loaded SuperGlue model (\"{}\" weights)'.format( + self.config['weights'])) + + def forward(self, data): + """Run SuperGlue on a pair of keypoints and descriptors""" + desc0, desc1 = data['descriptors0'], data['descriptors1'] + kpts0, kpts1 = data['keypoints0'], data['keypoints1'] + + if kpts0.shape[1] == 0 or kpts1.shape[1] == 0: # no keypoints + shape0, shape1 = kpts0.shape[:-1], kpts1.shape[:-1] + return { + 'matches0': kpts0.new_full(shape0, -1, dtype=torch.int), + 'matches1': kpts1.new_full(shape1, -1, dtype=torch.int), + 'matching_scores0': kpts0.new_zeros(shape0), + 'matching_scores1': kpts1.new_zeros(shape1), + } + + # Keypoint normalization. + kpts0 = normalize_keypoints(kpts0, data['image0'].shape) + kpts1 = normalize_keypoints(kpts1, data['image1'].shape) + + # Keypoint MLP encoder. + desc0 = desc0 + self.kenc(kpts0, data['scores0']) + desc1 = desc1 + self.kenc(kpts1, data['scores1']) + + # Multi-layer Transformer network. + desc0, desc1 = self.gnn(desc0, desc1) + + # Final MLP projection. + mdesc0, mdesc1 = self.final_proj(desc0), self.final_proj(desc1) + + # Compute matching descriptor distance. + scores = torch.einsum('bdn,bdm->bnm', mdesc0, mdesc1) + scores = scores / self.config['descriptor_dim']**.5 + + # Run the optimal transport. + scores = log_optimal_transport( + scores, self.bin_score, + iters=self.config['sinkhorn_iterations']) + + # Get the matches with score above "match_threshold". + max0, max1 = scores[:, :-1, :-1].max(2), scores[:, :-1, :-1].max(1) + indices0, indices1 = max0.indices, max1.indices + mutual0 = arange_like(indices0, 1)[None] == indices1.gather(1, indices0) + mutual1 = arange_like(indices1, 1)[None] == indices0.gather(1, indices1) + zero = scores.new_tensor(0) + mscores0 = torch.where(mutual0, max0.values.exp(), zero) + mscores1 = torch.where(mutual1, mscores0.gather(1, indices1), zero) + valid0 = mutual0 & (mscores0 > self.config['match_threshold']) + valid1 = mutual1 & valid0.gather(1, indices1) + indices0 = torch.where(valid0, indices0, indices0.new_tensor(-1)) + indices1 = torch.where(valid1, indices1, indices1.new_tensor(-1)) + + return { + 'matches0': indices0, # use -1 for invalid match + 'matches1': indices1, # use -1 for invalid match + 'matching_scores0': mscores0, + 'matching_scores1': mscores1, + } diff --git a/models/superpoint.py b/models/superpoint.py new file mode 100644 index 0000000..b837d93 --- /dev/null +++ b/models/superpoint.py @@ -0,0 +1,202 @@ +# %BANNER_BEGIN% +# --------------------------------------------------------------------- +# %COPYRIGHT_BEGIN% +# +# Magic Leap, Inc. ("COMPANY") CONFIDENTIAL +# +# Unpublished Copyright (c) 2020 +# Magic Leap, Inc., All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains the property +# of COMPANY. The intellectual and technical concepts contained herein +# are proprietary to COMPANY and may be covered by U.S. and Foreign +# Patents, patents in process, and are protected by trade secret or +# copyright law. Dissemination of this information or reproduction of +# this material is strictly forbidden unless prior written permission is +# obtained from COMPANY. Access to the source code contained herein is +# hereby forbidden to anyone except current COMPANY employees, managers +# or contractors who have executed Confidentiality and Non-disclosure +# agreements explicitly covering such access. +# +# The copyright notice above does not evidence any actual or intended +# publication or disclosure of this source code, which includes +# information that is confidential and/or proprietary, and is a trade +# secret, of COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, +# PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS +# SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF COMPANY IS +# STRICTLY PROHIBITED, AND IN VIOLATION OF APPLICABLE LAWS AND +# INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS SOURCE +# CODE AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS +# TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, +# USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR IN PART. +# +# %COPYRIGHT_END% +# ---------------------------------------------------------------------- +# %AUTHORS_BEGIN% +# +# Originating Authors: Paul-Edouard Sarlin +# +# %AUTHORS_END% +# --------------------------------------------------------------------*/ +# %BANNER_END% + +from pathlib import Path +import torch +from torch import nn + +def simple_nms(scores, nms_radius: int): + """ Fast Non-maximum suppression to remove nearby points """ + assert(nms_radius >= 0) + + def max_pool(x): + return torch.nn.functional.max_pool2d( + x, kernel_size=nms_radius*2+1, stride=1, padding=nms_radius) + + zeros = torch.zeros_like(scores) + max_mask = scores == max_pool(scores) + for _ in range(2): + supp_mask = max_pool(max_mask.float()) > 0 + supp_scores = torch.where(supp_mask, zeros, scores) + new_max_mask = supp_scores == max_pool(supp_scores) + max_mask = max_mask | (new_max_mask & (~supp_mask)) + return torch.where(max_mask, scores, zeros) + + +def remove_borders(keypoints, scores, border: int, height: int, width: int): + """ Removes keypoints too close to the border """ + mask_h = (keypoints[:, 0] >= border) & (keypoints[:, 0] < (height - border)) + mask_w = (keypoints[:, 1] >= border) & (keypoints[:, 1] < (width - border)) + mask = mask_h & mask_w + return keypoints[mask], scores[mask] + + +def top_k_keypoints(keypoints, scores, k: int): + if k >= len(keypoints): + return keypoints, scores + scores, indices = torch.topk(scores, k, dim=0) + return keypoints[indices], scores + + +def sample_descriptors(keypoints, descriptors, s: int = 8): + """ Interpolate descriptors at keypoint locations """ + b, c, h, w = descriptors.shape + keypoints = keypoints - s / 2 + 0.5 + keypoints /= torch.tensor([(w*s - s/2 - 0.5), (h*s - s/2 - 0.5)], + ).to(keypoints)[None] + keypoints = keypoints*2 - 1 # normalize to (-1, 1) + args = {'align_corners': True} if torch.__version__ >= '1.3' else {} + descriptors = torch.nn.functional.grid_sample( + descriptors, keypoints.view(b, 1, -1, 2), mode='bilinear', **args) + descriptors = torch.nn.functional.normalize( + descriptors.reshape(b, c, -1), p=2, dim=1) + return descriptors + + +class SuperPoint(nn.Module): + """SuperPoint Convolutional Detector and Descriptor + + SuperPoint: Self-Supervised Interest Point Detection and + Description. Daniel DeTone, Tomasz Malisiewicz, and Andrew + Rabinovich. In CVPRW, 2019. https://arxiv.org/abs/1712.07629 + + """ + default_config = { + 'descriptor_dim': 256, + 'nms_radius': 4, + 'keypoint_threshold': 0.005, + 'max_keypoints': -1, + 'remove_borders': 4, + } + + def __init__(self, config): + super().__init__() + self.config = {**self.default_config, **config} + + self.relu = nn.ReLU(inplace=True) + self.pool = nn.MaxPool2d(kernel_size=2, stride=2) + c1, c2, c3, c4, c5 = 64, 64, 128, 128, 256 + + self.conv1a = nn.Conv2d(1, c1, kernel_size=3, stride=1, padding=1) + self.conv1b = nn.Conv2d(c1, c1, kernel_size=3, stride=1, padding=1) + self.conv2a = nn.Conv2d(c1, c2, kernel_size=3, stride=1, padding=1) + self.conv2b = nn.Conv2d(c2, c2, kernel_size=3, stride=1, padding=1) + self.conv3a = nn.Conv2d(c2, c3, kernel_size=3, stride=1, padding=1) + self.conv3b = nn.Conv2d(c3, c3, kernel_size=3, stride=1, padding=1) + self.conv4a = nn.Conv2d(c3, c4, kernel_size=3, stride=1, padding=1) + self.conv4b = nn.Conv2d(c4, c4, kernel_size=3, stride=1, padding=1) + + self.convPa = nn.Conv2d(c4, c5, kernel_size=3, stride=1, padding=1) + self.convPb = nn.Conv2d(c5, 65, kernel_size=1, stride=1, padding=0) + + self.convDa = nn.Conv2d(c4, c5, kernel_size=3, stride=1, padding=1) + self.convDb = nn.Conv2d( + c5, self.config['descriptor_dim'], + kernel_size=1, stride=1, padding=0) + + path = Path(__file__).parent / 'weights/superpoint_v1.pth' + self.load_state_dict(torch.load(str(path))) + + mk = self.config['max_keypoints'] + if mk == 0 or mk < -1: + raise ValueError('\"max_keypoints\" must be positive or \"-1\"') + + print('Loaded SuperPoint model') + + def forward(self, data): + """ Compute keypoints, scores, descriptors for image """ + # Shared Encoder + x = self.relu(self.conv1a(data['image'])) + x = self.relu(self.conv1b(x)) + x = self.pool(x) + x = self.relu(self.conv2a(x)) + x = self.relu(self.conv2b(x)) + x = self.pool(x) + x = self.relu(self.conv3a(x)) + x = self.relu(self.conv3b(x)) + x = self.pool(x) + x = self.relu(self.conv4a(x)) + x = self.relu(self.conv4b(x)) + + # Compute the dense keypoint scores + cPa = self.relu(self.convPa(x)) + scores = self.convPb(cPa) + scores = torch.nn.functional.softmax(scores, 1)[:, :-1] + b, _, h, w = scores.shape + scores = scores.permute(0, 2, 3, 1).reshape(b, h, w, 8, 8) + scores = scores.permute(0, 1, 3, 2, 4).reshape(b, h*8, w*8) + scores = simple_nms(scores, self.config['nms_radius']) + + # Extract keypoints + keypoints = [ + torch.nonzero(s > self.config['keypoint_threshold']) + for s in scores] + scores = [s[tuple(k.t())] for s, k in zip(scores, keypoints)] + + # Discard keypoints near the image borders + keypoints, scores = list(zip(*[ + remove_borders(k, s, self.config['remove_borders'], h*8, w*8) + for k, s in zip(keypoints, scores)])) + + # Keep the k keypoints with highest score + if self.config['max_keypoints'] >= 0: + keypoints, scores = list(zip(*[ + top_k_keypoints(k, s, self.config['max_keypoints']) + for k, s in zip(keypoints, scores)])) + + # Convert (h, w) to (x, y) + keypoints = [torch.flip(k, [1]).float() for k in keypoints] + + # Compute the dense descriptors + cDa = self.relu(self.convDa(x)) + descriptors = self.convDb(cDa) + descriptors = torch.nn.functional.normalize(descriptors, p=2, dim=1) + + # Extract descriptors + descriptors = [sample_descriptors(k[None], d[None], 8)[0] + for k, d in zip(keypoints, descriptors)] + + return { + 'keypoints': keypoints, + 'scores': scores, + 'descriptors': descriptors, + } diff --git a/models/utils.py b/models/utils.py new file mode 100644 index 0000000..1a506ec --- /dev/null +++ b/models/utils.py @@ -0,0 +1,567 @@ +# %BANNER_BEGIN% +# --------------------------------------------------------------------- +# %COPYRIGHT_BEGIN% +# +# Magic Leap, Inc. ("COMPANY") CONFIDENTIAL +# +# Unpublished Copyright (c) 2020 +# Magic Leap, Inc., All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains the property +# of COMPANY. The intellectual and technical concepts contained herein +# are proprietary to COMPANY and may be covered by U.S. and Foreign +# Patents, patents in process, and are protected by trade secret or +# copyright law. Dissemination of this information or reproduction of +# this material is strictly forbidden unless prior written permission is +# obtained from COMPANY. Access to the source code contained herein is +# hereby forbidden to anyone except current COMPANY employees, managers +# or contractors who have executed Confidentiality and Non-disclosure +# agreements explicitly covering such access. +# +# The copyright notice above does not evidence any actual or intended +# publication or disclosure of this source code, which includes +# information that is confidential and/or proprietary, and is a trade +# secret, of COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, +# PUBLIC PERFORMANCE, OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS +# SOURCE CODE WITHOUT THE EXPRESS WRITTEN CONSENT OF COMPANY IS +# STRICTLY PROHIBITED, AND IN VIOLATION OF APPLICABLE LAWS AND +# INTERNATIONAL TREATIES. THE RECEIPT OR POSSESSION OF THIS SOURCE +# CODE AND/OR RELATED INFORMATION DOES NOT CONVEY OR IMPLY ANY RIGHTS +# TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR TO MANUFACTURE, +# USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR IN PART. +# +# %COPYRIGHT_END% +# ---------------------------------------------------------------------- +# %AUTHORS_BEGIN% +# +# Originating Authors: Paul-Edouard Sarlin +# Daniel DeTone +# Tomasz Malisiewicz +# +# %AUTHORS_END% +# --------------------------------------------------------------------*/ +# %BANNER_END% + +from pathlib import Path +import time +from collections import OrderedDict +from threading import Thread +import numpy as np +import cv2 +import torch +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use('Agg') + + +class AverageTimer: + """ Class to help manage printing simple timing of code execution. """ + + def __init__(self, smoothing=0.3, newline=False): + self.smoothing = smoothing + self.newline = newline + self.times = OrderedDict() + self.will_print = OrderedDict() + self.reset() + + def reset(self): + now = time.time() + self.start = now + self.last_time = now + for name in self.will_print: + self.will_print[name] = False + + def update(self, name='default'): + now = time.time() + dt = now - self.last_time + if name in self.times: + dt = self.smoothing * dt + (1 - self.smoothing) * self.times[name] + self.times[name] = dt + self.will_print[name] = True + self.last_time = now + + def print(self, text='Timer'): + total = 0. + print('[{}]'.format(text), end=' ') + for key in self.times: + val = self.times[key] + if self.will_print[key]: + print('%s=%.3f' % (key, val), end=' ') + total += val + print('total=%.3f sec {%.1f FPS}' % (total, 1./total), end=' ') + if self.newline: + print(flush=True) + else: + print(end='\r', flush=True) + self.reset() + + +class VideoStreamer: + """ Class to help process image streams. Four types of possible inputs:" + 1.) USB Webcam. + 2.) An IP camera + 3.) A directory of images (files in directory matching 'image_glob'). + 4.) A video file, such as an .mp4 or .avi file. + """ + def __init__(self, basedir, resize, skip, image_glob, max_length=1000000): + self._ip_grabbed = False + self._ip_running = False + self._ip_camera = False + self._ip_image = None + self._ip_index = 0 + self.cap = [] + self.camera = True + self.video_file = False + self.listing = [] + self.resize = resize + self.interp = cv2.INTER_AREA + self.i = 0 + self.skip = skip + self.max_length = max_length + if isinstance(basedir, int) or basedir.isdigit(): + print('==> Processing USB webcam input: {}'.format(basedir)) + self.cap = cv2.VideoCapture(int(basedir)) + self.listing = range(0, self.max_length) + elif basedir.startswith(('http', 'rtsp')): + print('==> Processing IP camera input: {}'.format(basedir)) + self.cap = cv2.VideoCapture(basedir) + self.start_ip_camera_thread() + self._ip_camera = True + self.listing = range(0, self.max_length) + elif Path(basedir).is_dir(): + print('==> Processing image directory input: {}'.format(basedir)) + self.listing = list(Path(basedir).glob(image_glob[0])) + for j in range(1, len(image_glob)): + image_path = list(Path(basedir).glob(image_glob[j])) + self.listing = self.listing + image_path + self.listing.sort() + self.listing = self.listing[::self.skip] + self.max_length = np.min([self.max_length, len(self.listing)]) + if self.max_length == 0: + raise IOError('No images found (maybe bad \'image_glob\' ?)') + self.listing = self.listing[:self.max_length] + self.camera = False + elif Path(basedir).exists(): + print('==> Processing video input: {}'.format(basedir)) + self.cap = cv2.VideoCapture(basedir) + self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) + num_frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) + self.listing = range(0, num_frames) + self.listing = self.listing[::self.skip] + self.video_file = True + self.max_length = np.min([self.max_length, len(self.listing)]) + self.listing = self.listing[:self.max_length] + else: + raise ValueError('VideoStreamer input \"{}\" not recognized.'.format(basedir)) + if self.camera and not self.cap.isOpened(): + raise IOError('Could not read camera') + + def load_image(self, impath): + """ Read image as grayscale and resize to img_size. + Inputs + impath: Path to input image. + Returns + grayim: uint8 numpy array sized H x W. + """ + grayim = cv2.imread(impath, 0) + if grayim is None: + raise Exception('Error reading image %s' % impath) + w, h = grayim.shape[1], grayim.shape[0] + w_new, h_new = process_resize(w, h, self.resize) + grayim = cv2.resize( + grayim, (w_new, h_new), interpolation=self.interp) + return grayim + + def next_frame(self): + """ Return the next frame, and increment internal counter. + Returns + image: Next H x W image. + status: True or False depending whether image was loaded. + """ + + if self.i == self.max_length: + return (None, False) + if self.camera: + + if self._ip_camera: + #Wait for first image, making sure we haven't exited + while self._ip_grabbed is False and self._ip_exited is False: + time.sleep(.001) + + ret, image = self._ip_grabbed, self._ip_image.copy() + if ret is False: + self._ip_running = False + else: + ret, image = self.cap.read() + if ret is False: + print('VideoStreamer: Cannot get image from camera') + return (None, False) + w, h = image.shape[1], image.shape[0] + if self.video_file: + self.cap.set(cv2.CAP_PROP_POS_FRAMES, self.listing[self.i]) + + w_new, h_new = process_resize(w, h, self.resize) + image = cv2.resize(image, (w_new, h_new), + interpolation=self.interp) + image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) + else: + image_file = str(self.listing[self.i]) + image = self.load_image(image_file) + self.i = self.i + 1 + return (image, True) + + def start_ip_camera_thread(self): + self._ip_thread = Thread(target=self.update_ip_camera, args=()) + self._ip_running = True + self._ip_thread.start() + self._ip_exited = False + return self + + def update_ip_camera(self): + while self._ip_running: + ret, img = self.cap.read() + if ret is False: + self._ip_running = False + self._ip_exited = True + self._ip_grabbed = False + return + + self._ip_image = img + self._ip_grabbed = ret + self._ip_index += 1 + #print('IPCAMERA THREAD got frame {}'.format(self._ip_index)) + + + def cleanup(self): + self._ip_running = False + +# --- PREPROCESSING --- + +def process_resize(w, h, resize): + assert(len(resize) > 0 and len(resize) <= 2) + if len(resize) == 1 and resize[0] > -1: + scale = resize[0] / max(h, w) + w_new, h_new = int(round(w*scale)), int(round(h*scale)) + elif len(resize) == 1 and resize[0] == -1: + w_new, h_new = w, h + else: # len(resize) == 2: + w_new, h_new = resize[0], resize[1] + + # Issue warning if resolution is too small or too large. + if max(w_new, h_new) < 160: + print('Warning: input resolution is very small, results may vary') + elif max(w_new, h_new) > 2000: + print('Warning: input resolution is very large, results may vary') + + return w_new, h_new + + +def frame2tensor(frame, device): + return torch.from_numpy(frame/255.).float()[None, None].to(device) + + +def read_image(path, device, resize, rotation, resize_float): + image = cv2.imread(str(path), cv2.IMREAD_GRAYSCALE) + if image is None: + return None, None, None + w, h = image.shape[1], image.shape[0] + w_new, h_new = process_resize(w, h, resize) + scales = (float(w) / float(w_new), float(h) / float(h_new)) + + if resize_float: + image = cv2.resize(image.astype('float32'), (w_new, h_new)) + else: + image = cv2.resize(image, (w_new, h_new)).astype('float32') + + if rotation != 0: + image = np.rot90(image, k=rotation) + if rotation % 2: + scales = scales[::-1] + + inp = frame2tensor(image, device) + return image, inp, scales + +def process_image(image, device, resize, rotation, resize_float): + image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + if image is None: + return None, None, None + w, h = image.shape[1], image.shape[0] + w_new, h_new = process_resize(w, h, resize) + scales = (float(w) / float(w_new), float(h) / float(h_new)) + + if resize_float: + image = cv2.resize(image.astype('float32'), (w_new, h_new)) + else: + image = cv2.resize(image, (w_new, h_new)).astype('float32') + + if rotation != 0: + image = np.rot90(image, k=rotation) + if rotation % 2: + scales = scales[::-1] + + inp = frame2tensor(image, device) + return image, inp, scales + +# --- GEOMETRY --- + + +def estimate_pose(kpts0, kpts1, K0, K1, thresh, conf=0.99999): + if len(kpts0) < 5: + return None + + f_mean = np.mean([K0[0, 0], K1[1, 1], K0[0, 0], K1[1, 1]]) + norm_thresh = thresh / f_mean + + kpts0 = (kpts0 - K0[[0, 1], [2, 2]][None]) / K0[[0, 1], [0, 1]][None] + kpts1 = (kpts1 - K1[[0, 1], [2, 2]][None]) / K1[[0, 1], [0, 1]][None] + + E, mask = cv2.findEssentialMat( + kpts0, kpts1, np.eye(3), threshold=norm_thresh, prob=conf, + method=cv2.RANSAC) + + assert E is not None + + best_num_inliers = 0 + ret = None + for _E in np.split(E, len(E) / 3): + n, R, t, _ = cv2.recoverPose( + _E, kpts0, kpts1, np.eye(3), 1e9, mask=mask) + if n > best_num_inliers: + best_num_inliers = n + ret = (R, t[:, 0], mask.ravel() > 0) + return ret + + +def rotate_intrinsics(K, image_shape, rot): + """image_shape is the shape of the image after rotation""" + assert rot <= 3 + h, w = image_shape[:2][::-1 if (rot % 2) else 1] + fx, fy, cx, cy = K[0, 0], K[1, 1], K[0, 2], K[1, 2] + rot = rot % 4 + if rot == 1: + return np.array([[fy, 0., cy], + [0., fx, w-1-cx], + [0., 0., 1.]], dtype=K.dtype) + elif rot == 2: + return np.array([[fx, 0., w-1-cx], + [0., fy, h-1-cy], + [0., 0., 1.]], dtype=K.dtype) + else: # if rot == 3: + return np.array([[fy, 0., h-1-cy], + [0., fx, cx], + [0., 0., 1.]], dtype=K.dtype) + + +def rotate_pose_inplane(i_T_w, rot): + rotation_matrices = [ + np.array([[np.cos(r), -np.sin(r), 0., 0.], + [np.sin(r), np.cos(r), 0., 0.], + [0., 0., 1., 0.], + [0., 0., 0., 1.]], dtype=np.float32) + for r in [np.deg2rad(d) for d in (0, 270, 180, 90)] + ] + return np.dot(rotation_matrices[rot], i_T_w) + + +def scale_intrinsics(K, scales): + scales = np.diag([1./scales[0], 1./scales[1], 1.]) + return np.dot(scales, K) + + +def to_homogeneous(points): + return np.concatenate([points, np.ones_like(points[:, :1])], axis=-1) + + +def compute_epipolar_error(kpts0, kpts1, T_0to1, K0, K1): + kpts0 = (kpts0 - K0[[0, 1], [2, 2]][None]) / K0[[0, 1], [0, 1]][None] + kpts1 = (kpts1 - K1[[0, 1], [2, 2]][None]) / K1[[0, 1], [0, 1]][None] + kpts0 = to_homogeneous(kpts0) + kpts1 = to_homogeneous(kpts1) + + t0, t1, t2 = T_0to1[:3, 3] + t_skew = np.array([ + [0, -t2, t1], + [t2, 0, -t0], + [-t1, t0, 0] + ]) + E = t_skew @ T_0to1[:3, :3] + + Ep0 = kpts0 @ E.T # N x 3 + p1Ep0 = np.sum(kpts1 * Ep0, -1) # N + Etp1 = kpts1 @ E # N x 3 + d = p1Ep0**2 * (1.0 / (Ep0[:, 0]**2 + Ep0[:, 1]**2) + + 1.0 / (Etp1[:, 0]**2 + Etp1[:, 1]**2)) + return d + + +def angle_error_mat(R1, R2): + cos = (np.trace(np.dot(R1.T, R2)) - 1) / 2 + cos = np.clip(cos, -1., 1.) # numercial errors can make it out of bounds + return np.rad2deg(np.abs(np.arccos(cos))) + + +def angle_error_vec(v1, v2): + n = np.linalg.norm(v1) * np.linalg.norm(v2) + return np.rad2deg(np.arccos(np.clip(np.dot(v1, v2) / n, -1.0, 1.0))) + + +def compute_pose_error(T_0to1, R, t): + R_gt = T_0to1[:3, :3] + t_gt = T_0to1[:3, 3] + error_t = angle_error_vec(t, t_gt) + error_t = np.minimum(error_t, 180 - error_t) # ambiguity of E estimation + error_R = angle_error_mat(R, R_gt) + return error_t, error_R + + +def pose_auc(errors, thresholds): + sort_idx = np.argsort(errors) + errors = np.array(errors.copy())[sort_idx] + recall = (np.arange(len(errors)) + 1) / len(errors) + errors = np.r_[0., errors] + recall = np.r_[0., recall] + aucs = [] + for t in thresholds: + last_index = np.searchsorted(errors, t) + r = np.r_[recall[:last_index], recall[last_index-1]] + e = np.r_[errors[:last_index], t] + aucs.append(np.trapz(r, x=e)/t) + return aucs + + +# --- VISUALIZATION --- + + +def plot_image_pair(imgs, dpi=100, size=6, pad=.5): + n = len(imgs) + assert n == 2, 'number of images must be two' + figsize = (size*n, size*3/4) if size is not None else None + _, ax = plt.subplots(1, n, figsize=figsize, dpi=dpi) + for i in range(n): + ax[i].imshow(imgs[i], cmap=plt.get_cmap('gray'), vmin=0, vmax=255) + ax[i].get_yaxis().set_ticks([]) + ax[i].get_xaxis().set_ticks([]) + for spine in ax[i].spines.values(): # remove frame + spine.set_visible(False) + plt.tight_layout(pad=pad) + + +def plot_keypoints(kpts0, kpts1, color='w', ps=2): + ax = plt.gcf().axes + ax[0].scatter(kpts0[:, 0], kpts0[:, 1], c=color, s=ps) + ax[1].scatter(kpts1[:, 0], kpts1[:, 1], c=color, s=ps) + + +def plot_matches(kpts0, kpts1, color, lw=1.5, ps=4): + fig = plt.gcf() + ax = fig.axes + fig.canvas.draw() + + transFigure = fig.transFigure.inverted() + fkpts0 = transFigure.transform(ax[0].transData.transform(kpts0)) + fkpts1 = transFigure.transform(ax[1].transData.transform(kpts1)) + + fig.lines = [matplotlib.lines.Line2D( + (fkpts0[i, 0], fkpts1[i, 0]), (fkpts0[i, 1], fkpts1[i, 1]), zorder=1, + transform=fig.transFigure, c=color[i], linewidth=lw) + for i in range(len(kpts0))] + ax[0].scatter(kpts0[:, 0], kpts0[:, 1], c=color, s=ps) + ax[1].scatter(kpts1[:, 0], kpts1[:, 1], c=color, s=ps) + + +def make_matching_plot(image0, image1, kpts0, kpts1, mkpts0, mkpts1, + color, text, path, show_keypoints=False, + fast_viz=False, opencv_display=False, + opencv_title='matches', small_text=[]): + + if fast_viz: + make_matching_plot_fast(image0, image1, kpts0, kpts1, mkpts0, mkpts1, + color, text, path, show_keypoints, 10, + opencv_display, opencv_title, small_text) + return + + plot_image_pair([image0, image1]) + if show_keypoints: + plot_keypoints(kpts0, kpts1, color='k', ps=4) + plot_keypoints(kpts0, kpts1, color='w', ps=2) + plot_matches(mkpts0, mkpts1, color) + + fig = plt.gcf() + txt_color = 'k' if image0[:100, :150].mean() > 200 else 'w' + fig.text( + 0.01, 0.99, '\n'.join(text), transform=fig.axes[0].transAxes, + fontsize=15, va='top', ha='left', color=txt_color) + + txt_color = 'k' if image0[-100:, :150].mean() > 200 else 'w' + fig.text( + 0.01, 0.01, '\n'.join(small_text), transform=fig.axes[0].transAxes, + fontsize=5, va='bottom', ha='left', color=txt_color) + + plt.savefig(str(path), bbox_inches='tight', pad_inches=0) + plt.close() + + +def make_matching_plot_fast(image0, image1, kpts0, kpts1, mkpts0, + mkpts1, color, text, path=None, + show_keypoints=False, margin=10, + opencv_display=False, opencv_title='', + small_text=[]): + H0, W0 = image0.shape + H1, W1 = image1.shape + H, W = max(H0, H1), W0 + W1 + margin + + out = 255*np.ones((H, W), np.uint8) + out[:H0, :W0] = image0 + out[:H1, W0+margin:] = image1 + out = np.stack([out]*3, -1) + + if show_keypoints: + kpts0, kpts1 = np.round(kpts0).astype(int), np.round(kpts1).astype(int) + white = (255, 255, 255) + black = (0, 0, 0) + for x, y in kpts0: + cv2.circle(out, (x, y), 2, black, -1, lineType=cv2.LINE_AA) + cv2.circle(out, (x, y), 1, white, -1, lineType=cv2.LINE_AA) + for x, y in kpts1: + cv2.circle(out, (x + margin + W0, y), 2, black, -1, + lineType=cv2.LINE_AA) + cv2.circle(out, (x + margin + W0, y), 1, white, -1, + lineType=cv2.LINE_AA) + + mkpts0, mkpts1 = np.round(mkpts0).astype(int), np.round(mkpts1).astype(int) + color = (np.array(color[:, :3])*255).astype(int)[:, ::-1] + for (x0, y0), (x1, y1), c in zip(mkpts0, mkpts1, color): + c = c.tolist() + cv2.line(out, (x0, y0), (x1 + margin + W0, y1), + color=c, thickness=1, lineType=cv2.LINE_AA) + # display line end-points as circles + cv2.circle(out, (x0, y0), 2, c, -1, lineType=cv2.LINE_AA) + cv2.circle(out, (x1 + margin + W0, y1), 2, c, -1, + lineType=cv2.LINE_AA) + + # Scale factor for consistent visualization across scales. + sc = min(H / 640., 2.0) + + # Big text. + Ht = int(30 * sc) # text height + txt_color_fg = (255, 255, 255) + txt_color_bg = (0, 0, 0) + for i, t in enumerate(text): + cv2.putText(out, t, (int(8*sc), Ht*(i+1)), cv2.FONT_HERSHEY_DUPLEX, + 1.0*sc, txt_color_bg, 2, cv2.LINE_AA) + cv2.putText(out, t, (int(8*sc), Ht*(i+1)), cv2.FONT_HERSHEY_DUPLEX, + 1.0*sc, txt_color_fg, 1, cv2.LINE_AA) + + # Small text. + Ht = int(18 * sc) # text height + for i, t in enumerate(reversed(small_text)): + cv2.putText(out, t, (int(8*sc), int(H-Ht*(i+.6))), cv2.FONT_HERSHEY_DUPLEX, + 0.5*sc, txt_color_bg, 2, cv2.LINE_AA) + cv2.putText(out, t, (int(8*sc), int(H-Ht*(i+.6))), cv2.FONT_HERSHEY_DUPLEX, + 0.5*sc, txt_color_fg, 1, cv2.LINE_AA) + return out + + +def error_colormap(x): + return np.clip( + np.stack([2-x*2, x*2, np.zeros_like(x), np.ones_like(x)], -1), 0, 1) diff --git a/models/weights/superglue_indoor.pth b/models/weights/superglue_indoor.pth new file mode 100644 index 0000000..9692521 --- /dev/null +++ b/models/weights/superglue_indoor.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e710469be25ebe1e2ccf68edcae8b2945b0617c8e7e68412251d9d47f5052b1 +size 48233807 diff --git a/models/weights/superglue_outdoor.pth b/models/weights/superglue_outdoor.pth new file mode 100644 index 0000000..79db4b5 --- /dev/null +++ b/models/weights/superglue_outdoor.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f5f5e9bb3febf07b69df633c4c3ff7a17f8af26a023aae2b9303d22339195bd +size 48233807 diff --git a/models/weights/superpoint_v1.pth b/models/weights/superpoint_v1.pth new file mode 100644 index 0000000..7648726 --- /dev/null +++ b/models/weights/superpoint_v1.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52b6708629640ca883673b5d5c097c4ddad37d8048b33f09c8ca0d69db12c40e +size 5206086 diff --git a/outdoor-1.JPEG b/outdoor-1.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..a49cbd35d90bd624020d12cfb110ccbbcc0a946e GIT binary patch literal 115363 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 O9(2p+kb2vHX8#ZWK$6V> literal 0 HcmV?d00001 diff --git a/outdoor-2.JPEG b/outdoor-2.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..7a3d49fe184f79daff0845b4467c497e9bafa295 GIT binary patch literal 68288 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

AiE2OD8y%@+|%83`+rRl5-aWyG}>wcwclvT9r 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