Nathan Inkawhich

45 papers A* 5A 3B 1Journal 23Unranked 12
YearRankTypeTitle / Venue / Authors
2025 conf
CVPR Workshops
Dylan Bowald, Justice Wheelwright, Oliver Nina, Ángel D. Sappa, Riad I. Hammoud, Erik Blasch, Nathan Inkawhich
2025 conf
CVPR Workshops
Nathan Inkawhich, Claire Thorp, Justice Wheelwright, Oliver Nina, Dylan Bowald, Ángel D. Sappa, Erik Blasch
2025 conf
CVPR Workshops
Amol Khanna, Chenyi Ling, Derek Everett, Edward Raff, Nathan Inkawhich
2025 J jnl
CoRR
Amol Khanna, Chenyi Ling, Derek Everett, Edward Raff, Nathan Inkawhich
2025 J jnl
CoRR
Nathan Inkawhich
2024 J jnl
CoRR
Anish Lakkapragada, Amol Khanna, Edward Raff, Nathan Inkawhich
2024 conf
CVPR Workshops
Spencer Low, Oliver Nina, Dylan Bowald, Angel Domingo Sappa, Nathan Inkawhich, Peter Bruns
2024 conf
CVPR Workshops
Spencer Low, Oliver Nina, Dylan Bowald, Angel Domingo Sappa, Nathan Inkawhich, Peter Bruns
2024 B conf
IEEE Big Data
Matthew Inkawhich, Nathan Inkawhich, Hao Yang, Jingyang Zhang, Randolph Linderman, Yiran Chen
2024 J jnl
CoRR
Matthew Inkawhich, Nathan Inkawhich, Hao Yang, Jingyang Zhang, Randolph Linderman, Yiran Chen
2024 A* conf
ICML
Chenhui Xu, Fuxun Yu, Zirui Xu, Nathan Inkawhich, Xiang Chen
2024 J jnl
CoRR
Chenhui Xu, Fuxun Yu, Zirui Xu, Nathan Inkawhich, Xiang Chen
2024 conf
SaTML
Amol Khanna, Edward Raff, Nathan Inkawhich
2024 J jnl
CoRR
Amol Khanna, Edward Raff, Nathan Inkawhich
2024 A conf
WACV
Matthew Inkawhich, Nathan Inkawhich, Hai Li, Yiran Chen
2023 J jnl
CoRR
Nathan Inkawhich
2023 J jnl
IEEE Geosci. Remote. Sens. Lett.
Nathan Inkawhich
2023 J jnl
CoRR
Nathan Inkawhich, Gwendolyn McDonald, Ryan Luley
2023 J jnl
CoRR
Noah Fleischmann, Walter D. Bennette, Nathan Inkawhich
2023 conf
CoLLAs
Randolph Linderman, Jingyang Zhang, Nathan Inkawhich, Hai Helen Li, Yiran Chen
2023 A conf
WACV
Jingyang Zhang, Nathan Inkawhich, Randolph Linderman, Yiran Chen, Hai Li
2023 conf
CVPR Workshops
Spencer Low, Oliver Nina, Angel Domingo Sappa, Erik Blasch, Nathan Inkawhich
2023 conf
CVPR Workshops
Spencer Low, Oliver Nina, Angel Domingo Sappa, Erik Blasch, Nathan Inkawhich
2023 J jnl
CoRR
Jingyang Zhang, Nathan Inkawhich, Randolph Linderman, Ryan Luley, Yiran Chen, Hai Helen Li
2022 J jnl
CoRR
Randolph Linderman, Jingyang Zhang, Nathan Inkawhich, Hai Helen Li, Yiran Chen
2022 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Nathan Inkawhich, Jingyang Zhang, Eric K. Davis, Ryan Luley, Yiran Chen
2022 conf
CVPR Workshops
Spencer Low, Oliver Nina, Ángel D. Sappa, Erik Blasch, Nathan Inkawhich
2022 J jnl
CoRR
Matthew Inkawhich, Nathan Inkawhich, Hai Helen Li, Yiran Chen
2022 A conf
WACV
Matthew Inkawhich, Nathan Inkawhich, Eric K. Davis, Hai Li, Yiran Chen
2021
Nathan Inkawhich
2021 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Nathan Inkawhich, Matthew Inkawhich, Eric K. Davis, Uttam K. Majumder, Erin E. Tripp, Chris Capraro, Yiran Chen
2021 conf
ICCVW
Nathan Inkawhich, Kevin J. Liang, Jingyang Zhang, Huanrui Yang, Hai Li, Yiran Chen
2021 J jnl
CoRR
Nathan Inkawhich, Kevin J. Liang, Jingyang Zhang, Huanrui Yang, Hai Li, Yiran Chen
2021 J jnl
CoRR
Jingyang Zhang, Nathan Inkawhich, Yiran Chen, Hai Li
2021 conf
CVPR Workshops
Jerrick Liu, Nathan Inkawhich, Oliver Nina, Radu Timofte
2021 J jnl
CoRR
Matthew Inkawhich, Nathan Inkawhich, Eric K. Davis, Hai Li, Yiran Chen
2021 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Nathan Inkawhich, Eric K. Davis, Matthew Inkawhich, Uttam K. Majumder, Yiran Chen
2020 A* conf
NeurIPS
Huanrui Yang, Jingyang Zhang, Hongliang Dong, Nathan Inkawhich, Andrew Gardner, Andrew Touchet, Wesley Wilkes, Heath Berry, Hai Li
2020 J jnl
CoRR
Huanrui Yang, Jingyang Zhang, Hongliang Dong, Nathan Inkawhich, Andrew Gardner, Andrew Touchet, Wesley Wilkes, Heath Berry, Hai Li
2020 A* conf
NeurIPS
Nathan Inkawhich, Kevin J. Liang, Binghui Wang, Matthew Inkawhich, Lawrence Carin, Yiran Chen
2020 J jnl
CoRR
Nathan Inkawhich, Kevin J. Liang, Binghui Wang, Matthew Inkawhich, Lawrence Carin, Yiran Chen
2020 A* conf
ICLR
Nathan Inkawhich, Kevin J. Liang, Lawrence Carin, Yiran Chen
2020 J jnl
CoRR
Nathan Inkawhich, Kevin J. Liang, Lawrence Carin, Yiran Chen
2019 A* conf
CVPR
Nathan Inkawhich, Wei Wen, Hai (Helen) Li, Yiran Chen
2018 J jnl
CoRR
Nathan Inkawhich, Matthew Inkawhich, Yiran Chen, Hai Li
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS