• Stars
    star
    572
  • Rank 77,995 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

这是一个孪生神经网络(Siamese network)的库,可进行图片的相似性比较。

Siamese:孪生神经网络在Pytorch当中的实现


目录

  1. 仓库更新 Top News
  2. 注意事项 Attention
  3. 所需环境 Environment
  4. 文件下载 Download
  5. 预测步骤 How2predict
  6. 训练步骤 How2train
  7. 参考资料 Reference

Top News

2022-04:进行了大幅度的更新,支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整。
BiliBili视频中的原仓库地址为:https://github.com/bubbliiiing/siamese-pytorch/tree/bilibili

注意事项

训练Omniglot数据集和训练自己的数据集可以采用两种不同的格式。需要注意格式的摆放噢!

该仓库实现了孪生神经网络(Siamese network),该网络常常用于检测输入进来的两张图片的相似性。该仓库所使用的主干特征提取网络(backbone)为VGG16。

所需环境

torch==1.2.0

文件下载

训练所需的vgg16-397923af.pth可在百度网盘中下载。
链接: https://pan.baidu.com/s/14SFoKX6xTDPx2XG9rcUTDQ 提取码: 44en

Omniglot数据集下载地址为:
链接: https://pan.baidu.com/s/1pYp6vqiLLRFLn1tVeRk8ZQ 提取码: 5sa7

人脸数据集下载地址为(格式还需要简单修改一下才可以使用,请参考下方“训练自己相似性比较的模型”的格式进行修改):
链接: https://pan.baidu.com/s/1OvEFXTUZrvu4T5qSPkHOJw 提取码: aqhg

我一共会提供两个权重,分别是vgg16-397923af.pth和Omniglot_vgg.pth。
其中:
Omniglot_vgg.pth是Omniglot训练好的权重,可直接使用进行下面的预测步骤。
vgg16-397923af.pth是vgg的权重,可以用于训练其它的数据集。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载Omniglot_vgg.pth,放入model_data,运行predict.py,依次输入
img/Angelic_01.png
img/Angelic_02.png

b、使用自己训练的权重

  1. 按照训练步骤训练。
  2. 在siamese.py文件里面,在如下部分修改model_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件
_defaults = {
    "model_path": 'model_data/Omniglot_vgg.pth',
    "input_shape" : (105, 105, 3),
}
  1. 运行predict.py,输入
img/Angelic_01.png
img/Angelic_02.png

训练步骤

可参考我的CSDN博客https://blog.csdn.net/weixin_44791964/article/details/107343394

a、训练Omniglot例子

Omniglot数据集中数据存放格式有三级:

- image_background
	- Alphabet_of_the_Magi
		- character01
			- 0709_01.png
			- 0709_02.png
			- ……
		- character02
		- character03
		- ……
	- Anglo-Saxon_Futhorc
	- ……

训练步骤为:

  1. 下载数据集,放在根目录下的dataset文件夹下。
  2. 运行train.py开始训练。

b、训练自己相似性比较的模型

如果大家想要训练自己的数据集,可以将数据集按照如下格式进行摆放。

- image_background
	- character01
		- 0709_01.png
		- 0709_02.png
		- ……
	- character02
	- character03
	- ……

相比Omniglot少了一级。每一个chapter里面放同类型的图片。
训练步骤为:

  1. 按上述格式放置数据集,放在根目录下的dataset文件夹下。
  2. 之后将train.py当中的train_own_data设置成True。
  3. 运行train.py开始训练。

Reference

https://github.com/tensorfreitas/Siamese-Networks-for-One-Shot-Learning

More Repositories

1

yolov4-pytorch

这是一个YoloV4-pytorch的源码,可以用于训练自己的模型。
Python
2,100
star
2

yolo3-pytorch

这是一个yolo3-pytorch的源码,可以用于训练自己的模型。
Python
1,993
star
3

faster-rcnn-pytorch

这是一个faster-rcnn的pytorch实现的库,可以利用voc数据集格式的数据进行训练。
Python
1,559
star
4

unet-pytorch

这是一个unet-pytorch的源码,可以训练自己的模型
Python
1,314
star
5

yolov5-pytorch

这是一个YoloV5-pytorch的源码,可以用于训练自己的模型。
Python
1,019
star
6

deeplabv3-plus-pytorch

这是一个deeplabv3-plus-pytorch的源码,可以用于训练自己的模型。
Python
883
star
7

yolox-pytorch

这是一个yolox-pytorch的源码,可以用于训练自己的模型。
Python
879
star
8

yolov7-pytorch

这是一个yolov7的库,可以用于训练自己的数据集。
Python
868
star
9

yolov4-tiny-pytorch

这是一个YoloV4-tiny-pytorch的源码,可以用于训练自己的模型。
Python
778
star
10

ssd-pytorch

这是一个ssd-pytorch的源码,可以用于训练自己的模型。
Python
669
star
11

yolov8-pytorch

这是一个yolov8-pytorch的仓库,可以用于训练自己的数据集。
Python
614
star
12

yolo3-keras

这是一个yolo3-keras的源码,可以用于训练自己的模型。
Python
535
star
13

yolov4-keras

这是一个YoloV4-keras的源码,可以用于训练自己的模型。
Python
491
star
14

Semantic-Segmentation

I will upload many semantic segmentation models to this repository for you to learn
Python
433
star
15

classification-pytorch

这是各个主干网络分类模型的源码,可以用于训练自己的分类模型。
Python
387
star
16

mobilenet-yolov4-pytorch

这是一个mobilenet-yolov4的库,把yolov4主干网络修改成了mobilenet,修改了Panet的卷积组成,使参数量大幅度缩小。
Python
365
star
17

centernet-pytorch

这是一个centernet-pytorch的源码,可以用于训练自己的模型。
Python
364
star
18

pspnet-pytorch

这是一个pspnet-pytorch的源码,可以用于训练自己的模型。
Python
357
star
19

yolov4-tf2

这是一个yolo4-tf2(tensorflow2)的源码,可以用于训练自己的模型。
Python
314
star
20

mask-rcnn-keras

这是一个mask-rcnn的库,可以用于训练自己的实例分割模型。
Python
313
star
21

efficientdet-pytorch

这是一个efficientdet-pytorch的源码,可以用于训练自己的模型。
Python
305
star
22

faster-rcnn-keras

这是一个faster-rcnn的keras实现的库,可以利用voc数据集格式的数据进行训练。
Python
285
star
23

segformer-pytorch

这是一个segformer-pytorch的源码,可以用于训练自己的模型。
Python
251
star
24

GAN-keras

里面包含许多GAN算法的Keras源码,可以用于训练自己的模型。
Python
236
star
25

keras-face-recognition

这是一个基于mtcnn和facenet的人脸识别模型,可实现在线人脸识别。
Python
224
star
26

retinaface-pytorch

这是一个retinaface-pytorch的源码,可以用于训练自己的模型。
Python
211
star
27

ddpm-pytorch

这个是一个ddpm的pytorch仓库,可以用于训练自己的数据集。
Python
207
star
28

facenet-retinaface-pytorch

这是一个利用facenet和retinaface实现人脸识别的库,可以进行在线的人脸识别。
Python
193
star
29

yolov7-tiny-pytorch

这是一个yolov7-tiny-pytorch的源码,可以用于训练自己的模型。
Python
184
star
30

retinanet-pytorch

这是一个retinanet-pytorch的源码,可以用于训练自己的模型。
Python
175
star
31

faster-rcnn-tf2

这是一个faster-rcnn的tensorflow2实现的库,可以利用voc数据集格式的数据进行训练。
Python
171
star
32

ssd-keras

这是一个ssd-keras的源码,可以用于训练自己的模型。
Python
167
star
33

clip-pytorch

这是一个clip-pytorch的模型,可以训练自己的数据集。
Python
164
star
34

yolov4-tiny-keras

这是一个YoloV4-tiny-keras的源码,可以用于训练自己的模型。
Python
160
star
35

detr-pytorch

这是一个DETR-pytorch的仓库,可以训练自己的数据集
Python
158
star
36

object-detection-augmentation

这里面存放了一些目标检测算法的数据增强方法。如mosaic、mixup。
Python
150
star
37

efficientnet-yolo3-pytorch

这是一个efficientnet-yolo3-pytorch的源码,将yolov3的主干特征提取网络修改成了efficientnet
Python
142
star
38

mask-recognize

这是一个简单的人工智障识别口罩佩戴的库
Python
142
star
39

classic-convolution-network

里面会保存许多优秀的卷积神经网络结构,这些结构可以帮助我们更好的设计网络。
Python
139
star
40

ssd-tf2

这是一个ssd-tf2(tensorflow2)的源码,可以用于训练自己的模型。
Python
138
star
41

yolov4-tiny-tf2

这是一个YoloV4-tiny-tf2的源码,可以用于训练自己的模型。
Python
134
star
42

segmentation-format-fix

该仓库中放置了一些工具,用于调整语义分割算法的数据集格式,使其符合训练要求。
Python
131
star
43

arcface-pytorch

这是一个arcface-pytorch的源码,可以用于训练自己的模型。
Python
130
star
44

count-mAP-txt

这个是一个在SSD的基础上用于生成绘制mAP代码所用的txt的例子。(目的是生成txt)
Python
128
star
45

Keras-Attention

这个仓库主要包含了LSTM、卷积神经网络中,注意力机制的实现。
Python
126
star
46

mtcnn-keras

这是一个利用keras实现mtcnn的代码,可以实现人脸检测。
Python
124
star
47

yolov5-v6.1-pytorch

这是一个yolov5-v6.1-pytorch的源码,可以用于训练自己的模型。
Python
115
star
48

retinanet-keras

这是一个retinanet-keras的源码,可以用于训练自己的模型。
Python
111
star
49

unet-keras

这是一个unet-keras的源码,可以用于训练自己的模型。
Python
107
star
50

hrnet-pytorch

这是一个hrnet-pytorch的库,可用于训练自己的语义分割数据集
Python
106
star
51

mobilenet-ssd-keras

这是一个mobilenet-ssd-keras的源码,可以用于训练自己的轻量级ssd模型。
Python
105
star
52

stable-diffusion

这是一个stable-diffusion的库。
Python
102
star
53

yolov5-tf2

这是一个YoloV5-tensorflow2的源码,可以用于训练自己的模型。
Python
101
star
54

Bubbliiiing

91
star
55

efficientdet-keras

这是一个efficientdet-keras的源码,可以用于训练自己的模型。
Python
89
star
56

Transfer-Learning

这是一个有关迁移学习的仓库,在这里可以看到迁移学习的各种用法。
Python
88
star
57

yolo3-tf2

这是一个yolo3-tf2的源码,可以用于训练自己的模型。
Python
80
star
58

Mobilenet-SSD-Essay

这是Mobilenet-SSD的论文版,可用于训练与预测。
Python
78
star
59

yolox-tf2

这是一个yolox-tf2的源码,可以用于训练自己的模型。
Python
73
star
60

yolact-pytorch

这是一个yolact-pytorch的库,可用于训练自己的数据集
Python
71
star
61

mobilenet-yolov4-keras

这是一个mobilenet-yolov4的库,把yolov4主干网络修改成了mobilenet,修改了Panet的卷积组成,使参数量大幅度缩小。
Python
71
star
62

M2det-Keras

这是一个M2det的Keras实现的库,可以实时检测与训练。
Python
67
star
63

Siamese-keras

这是一个孪生神经网络(Siamese network)的库,可进行图片的相似性比较。
Python
66
star
64

classification-keras

这是各个主干网络分类模型的源码,可以用于训练自己的分类模型。
Python
66
star
65

yolox-keras

这是一个yolox-keras的源码,可以用于训练自己的模型。
Python
65
star
66

unet-tf2

这是一个unet-tf2的源码,可以用于训练自己的模型。
Python
64
star
67

RFB-keras

这是一个利用Keras实现RFBnet的库,RFBnet是SSD的改进版,其整体的结构与SSD相差不大,其主要特点是在SSD的特征提取网络上用了RFB模块。
Python
63
star
68

centernet-keras

这是一个centernet-keras的源码,可以用于训练自己的模型。
Python
63
star
69

mask-rcnn-tf2

这是一个mask-rcnn-tf2的库,可以用于训练自己的模型。
Python
63
star
70

facenet-keras

这是一个facenet-keras的源码,可以用于训练自己的模型。
Python
62
star
71

retinaface-keras

这是一个retinaface-keras的源码,可以用于训练自己的模型。
Python
60
star
72

DiT-pytorch

这是一个DiT-pytorch的代码,主要用于学习DiT结构。
Python
60
star
73

efficientdet-tf2

这是一个efficientdet-tf2(tensorflow2)的源码,可以用于训练自己的模型。
Python
59
star
74

efficientnet-yolo3-keras

这是一个efficientnet-yolo3-keras的源码,将yolov3的主干特征提取网络修改成了efficientnet
Python
55
star
75

retinaface-tf2

这是一个retinaface-tf2的源码,可以用于训练自己的模型。
Python
53
star
76

srgan-pytorch

这是一个srgan-keras的源码,可以用于训练自己的模型。
Python
53
star
77

pspnet-keras

这是一个pspnet-keras的源码,可以用于训练自己的模型。
Python
51
star
78

Siamese-tf2

这是一个孪生神经网络(Siamese network)的库,可进行图片的相似性比较。
Python
51
star
79

seq2seq-keras

这是一个利用keras实现seq2seq模型的仓库,大家可以通过这个仓库学习到许多的seq2seq的例子
Python
50
star
80

deeplabv3-plus-tf2

这是一个deeplabv3-plus-tf2的源码,可以用于训练自己的模型。
Python
49
star
81

dcgan-pytorch

这是一个dcgan-pytorch的源码,可以用于训练自己的模型。
Python
49
star
82

deeplabv3-plus-keras

这是一个deeplabv3-plus-keras的源码,可以用于训练自己的模型。
Python
49
star
83

classification-tf2

这是各个主干网络分类模型的源码,可以用于训练自己的分类模型。
Python
47
star
84

mobilenet-yolov4-tf2

这是一个mobilenet-yolov4的库,把yolov4主干网络修改成了mobilenet,修改了Panet的卷积组成,使参数量大幅度缩小。
Python
46
star
85

centernet-tf2

这是一个centernet-tf2的源码,可以用于训练自己的模型。
Python
46
star
86

dcgan-keras

这是一个dcgan-keras的源码,可以用于训练自己的模型。
Python
44
star
87

blip-pytorch

这是一个blip-pytorch简化的代码,适用于了解Attention与Transformer的结构。
Python
42
star
88

facenet-tf2

这是一个facenet-tf2的库,可以用于训练自己的人脸识别模型
Python
42
star
89

facenet-retinaface-keras

这是一个利用facenet和retinaface实现人脸识别的库,可以进行在线的人脸识别。
Python
40
star
90

QRcode-location

This is an Example about how to locate QRcode.
C++
39
star
91

poems-generator

这个例子可以用LSTM来写五言诗。
Python
37
star
92

cyclegan-pytorch

这是一个cyclegan-pytorch的源码,可以用于训练自己的模型。
Python
37
star
93

srgan-keras

这是一个srgan-keras的源码,可以用于训练自己的模型。
Python
34
star
94

yolov5-keras

这是一个YoloV5-keras的源码,可以用于训练自己的模型。
Python
34
star
95

pspnet-tf2

这是一个pspnet-tf2的源码,可以用于训练自己的模型。
Python
31
star
96

yolov7-tf2

这是一个YoloV7-tf2的源码,可以用于训练自己的模型。
Python
28
star
97

yolov7-keras

这是一个yolov7-keras的源码,可以用于训练自己的模型。
Python
26
star
98

fcos-pytorch

这是一个fcos-pytorch的仓库,可以用于训练自己的数据集。
Python
24
star
99

Colab

这是一个Colab使用的示例notebook。配合博文使用。
Jupyter Notebook
22
star
100

yolov5-v6.1-tf2

这是一个yolov5-v6.1-tf2的源码,可以用于训练自己的模型。
Python
19
star