From c4a787596e016e10552944b6e0e52006025ee668 Mon Sep 17 00:00:00 2001 From: Felix Date: Thu, 3 Jun 2021 19:33:43 +0800 Subject: [PATCH 1/3] Create pairwisecosface.py --- ppcls/loss/pairwisecosface.py | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ppcls/loss/pairwisecosface.py diff --git a/ppcls/loss/pairwisecosface.py b/ppcls/loss/pairwisecosface.py new file mode 100644 index 000000000..beb806863 --- /dev/null +++ b/ppcls/loss/pairwisecosface.py @@ -0,0 +1,55 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import math +import paddle +import paddle.nn as nn +import paddle.nn.functional as F + + +class PairwiseCosface(nn.Layer): + def __init__(self, margin, gamma): + super(PairwiseCosface, self).__init__() + self.margin = margin + self.gamma = gamma + + def forward(self, embedding, targets): + if isinstance(embedding, dict): + embedding = embedding['features'] + # Normalize embedding features + embedding = F.normalize(embedding, axis=1) + dist_mat = paddle.matmul(embedding, embedding, transpose_y=True) + + N = dist_mat.shape[0] + is_pos = targets.reshape([N,1]).expand([N,N]).equal(paddle.t(targets.reshape([N,1]).expand([N,N]))).astype('float') + is_neg = targets.reshape([N,1]).expand([N,N]).not_equal(paddle.t(targets.reshape([N,1]).expand([N,N]))).astype('float') + + # Mask scores related to itself + is_pos = is_pos - paddle.eye(N, N) + + s_p = dist_mat * is_pos + s_n = dist_mat * is_neg + + logit_p = -self.gamma * s_p + (-99999999.) * (1 - is_pos) + logit_n = self.gamma * (s_n + self.margin) + (-99999999.) * (1 - is_neg) + + loss = F.softplus(paddle.logsumexp(logit_p, axis=1) + paddle.logsumexp(logit_n, axis=1)).mean() + + return {"PairwiseCosface": loss} + + From 19a23780255e1a534a5dbefb56eda33179e30d48 Mon Sep 17 00:00:00 2001 From: Felix Date: Thu, 3 Jun 2021 19:36:26 +0800 Subject: [PATCH 2/3] Update __init__.py --- ppcls/loss/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ppcls/loss/__init__.py b/ppcls/loss/__init__.py index 129e9b3f8..0e4d38d60 100644 --- a/ppcls/loss/__init__.py +++ b/ppcls/loss/__init__.py @@ -11,6 +11,7 @@ from .msmloss import MSMLoss from .npairsloss import NpairsLoss from .trihardloss import TriHardLoss from .triplet import TripletLoss, TripletLossV2 +from .pairwisecosface import PairwiseCosface class CombinedLoss(nn.Layer): From e61af9cf05e16bc8ab14952508925c6654ad2d5c Mon Sep 17 00:00:00 2001 From: Felix Date: Fri, 4 Jun 2021 13:50:49 +0800 Subject: [PATCH 3/3] update vector search license (#784) * Update interface.cc * Update config.h * Update data.h * Update graph.h --- deploy/vector_search/interface.cc | 40 +++++++++++++++--------------- deploy/vector_search/src/config.h | 41 ++++++++++++++++--------------- deploy/vector_search/src/data.h | 40 +++++++++++++++--------------- deploy/vector_search/src/graph.h | 41 ++++++++++++++++--------------- 4 files changed, 82 insertions(+), 80 deletions(-) diff --git a/deploy/vector_search/interface.cc b/deploy/vector_search/interface.cc index 5e6e44a58..401366869 100644 --- a/deploy/vector_search/interface.cc +++ b/deploy/vector_search/interface.cc @@ -1,26 +1,26 @@ -#MIT License -# -#Copyright (c) 2021 Mobius Authors -# -#Permission is hereby granted, free of charge, to any person obtaining a copy -#of this software and associated documentation files (the "Software"), to deal -#in the Software without restriction, including without limitation the rights -#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -#copies of the Software, and to permit persons to whom the Software is -#furnished to do so, subject to the following conditions: +//MIT License +// +//Copyright (c) 2021 Mobius Authors -#The above copyright notice and this permission notice shall be included in all -#copies or substantial portions of the Software. +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -#SOFTWARE. +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. -#from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/main.cc +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + +//from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/main.cc #include #include diff --git a/deploy/vector_search/src/config.h b/deploy/vector_search/src/config.h index 253477730..352d68433 100644 --- a/deploy/vector_search/src/config.h +++ b/deploy/vector_search/src/config.h @@ -1,26 +1,27 @@ - # MIT License - # - #Copyright (c) 2021 Mobius Authors - # - #Permission is hereby granted, free of charge, to any person obtaining a copy - #of this software and associated documentation files (the "Software"), to deal - #in the Software without restriction, including without limitation the rights - #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - #copies of the Software, and to permit persons to whom the Software is - #furnished to do so, subject to the following conditions: +//MIT License +// +//Copyright (c) 2021 Mobius Authors - #The above copyright notice and this permission notice shall be included in all - #copies or substantial portions of the Software. +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: - #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - #SOFTWARE. +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. -#from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/config.h +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + + +//from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/config.h #pragma once diff --git a/deploy/vector_search/src/data.h b/deploy/vector_search/src/data.h index 330959c09..ea65e70ad 100644 --- a/deploy/vector_search/src/data.h +++ b/deploy/vector_search/src/data.h @@ -1,26 +1,26 @@ - # MIT License - # - #Copyright (c) 2021 Mobius Authors - # - #Permission is hereby granted, free of charge, to any person obtaining a copy - #of this software and associated documentation files (the "Software"), to deal - #in the Software without restriction, including without limitation the rights - #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - #copies of the Software, and to permit persons to whom the Software is - #furnished to do so, subject to the following conditions: +//MIT License +// +//Copyright (c) 2021 Mobius Authors - #The above copyright notice and this permission notice shall be included in all - #copies or substantial portions of the Software. +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: - #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - #SOFTWARE. +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. -#from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/data.h +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + +//from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/data.h #pragma once diff --git a/deploy/vector_search/src/graph.h b/deploy/vector_search/src/graph.h index bdcfff3c3..d54353ba4 100644 --- a/deploy/vector_search/src/graph.h +++ b/deploy/vector_search/src/graph.h @@ -1,26 +1,27 @@ - # MIT License - # - #Copyright (c) 2021 Mobius Authors - # - #Permission is hereby granted, free of charge, to any person obtaining a copy - #of this software and associated documentation files (the "Software"), to deal - #in the Software without restriction, including without limitation the rights - #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - #copies of the Software, and to permit persons to whom the Software is - #furnished to do so, subject to the following conditions: +//MIT License +// +//Copyright (c) 2021 Mobius Authors - #The above copyright notice and this permission notice shall be included in all - #copies or substantial portions of the Software. +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: - #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - #SOFTWARE. +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. + +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. + +//from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/graph.h -#from https://github.com/sunbelbd/mobius/blob/e2d166547d61d791da8f06747a63b9cd38f02c71/graph.h #pragma once #include