Vinay Kaushik

29 papers A 3B 1Misc 2Journal 12Unranked 11
YearRankTypeTitle / Venue / Authors
2025 A conf
ICME
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2025 J jnl
Comput. Graph.
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2025 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2024 J jnl
CoRR
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2024 conf
ACCV Workshops (2)
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2024 J jnl
CoRR
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2024 conf
ICPR (34)
Swati Bhugra, Prerana Mukherjee, Vinay Kaushik, Siddharth Srivastava, Manoj Sharma, Viswanathan Chinnusamy, Brejesh Lall, Santanu Chaudhary
2024 Misc conf
IVCNZ
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2024 A conf
ICME
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2023 A conf
WACV
Swati Bhugra, Vinay Kaushik, Amit Gupta, Brejesh Lall, Santanu Chaudhury
2023 B conf
ICIP
Siddharth Srivastava, Swati Bhugra, Vinay Kaushik, Brejesh Lall
2023 conf
ICME Workshops
Vinay Kaushik, Swati Bhugra, Amit Gupta, Brejesh Lall
2023 J jnl
CoRR
Sanhita Pathak, Vinay Kaushik, Brejesh Lall
2022 J jnl
CoRR
Prerana Mukherjee, Vinay Kaushik, Ronak Gupta, Ritika Jha, Daneshwari Kankanwadi, Brejesh Lall
2022 conf
ICVGIP
Swati Bhugra, Prerana Mukherjee, Vinay Kaushik, Ritika Jha, Brejesh Lall, Santanu Chaudhury
2021 J jnl
CoRR
Vinay Kaushik, Kartik Jindgar, Brejesh Lall
2021 J jnl
IEEE Robotics Autom. Lett.
Vinay Kaushik, Kartik Jindgar, Brejesh Lall
2021 conf
PReMI
Prerana Mukherjee, Vinay Kaushik, Ronak Gupta, Ritika Jha, Daneshwari Kankanwadi, Brejesh Lall
2021 Misc conf
IVCNZ
Swati Bhugra, Vinay Kaushik, Isaac Castro-Mateos, Santanu Chaudhury, Brejesh Lall
2020 conf
NCC
Ajit Jadhav, Prerana Mukherjee, Vinay Kaushik, Brejesh Lall
2020 conf
NCC
Ronak Gupta, Aditya Kumar, Santanu Chaudhury, Brejesh Lall, Vinay Kaushik
2020 J jnl
CoRR
Vinay Kaushik, Brejesh Lall
2019 J jnl
CoRR
Ajit Jadhav, Prerana Mukherjee, Vinay Kaushik, Brejesh Lall
2019 conf
PReMI (1)
Ronak Gupta, Prashant Anand, Vinay Kaushik, Santanu Chaudhury, Brejesh Lall
2019 J jnl
CoRR
Vinay Kaushik, Brejesh Lall
2019 conf
3DV
Vinay Kaushik, Brejesh Lall
2019 conf
ICCV Workshops
Longyin Wen, Yue Zhang, Liefeng Bo, Hailin Shi, Rui Zhu, Ajit Jadhav, Bing Dong, Brejesh Lall, Chang Liu, Chunhui Zhang, Dong Wang, Pengfei Zhu, Feng Ni, Filiz Bunyak, Gaoang Wang, Guizhong Liu, Guna Seetharaman, Guorong Li, Håkan Ardö, Haotian Zhang, Hongyang Yu, Huchuan Lu, Dawei Du, Jenq-Neng Hwang, Jiatong Mu, Jinrong Hu, Kannappan Palaniappan, Long Chen, Lu Ding, Martin Lauer, Mikael G. Nilsson, Noor M. Al-Shakarji, Prerana Mukherjee, Xiao Bian, Qingming Huang, Robert Laganière, Shuhao Chen, Siyang Pan, Vinay Kaushik, Wei Shi, Wei Tian, Weiqiang Li, Xin Chen, Xinyu Zhang, Haibin Ling, Yanting Zhang, Yanyun Zhao, Yong Wang, Yuduo Song, Yuehan Yao, Zhaotang Chen, Zhenyu Xu, Zhibin Xiao, Zhihang Tong, Zhipeng Luo, Qinghua Hu, Zhuojin Sun, Jiayu Zheng, Tao Peng, Xinyao Wang
2018 conf
ICVGIP
Vinay Kaushik, Prerana Mukherjee, Brejesh Lall
2018 J jnl
CoRR
Vinay Kaushik, Prerana Mukherjee, Brejesh Lall
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