日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSD列子

發布時間:2023/12/10 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSD列子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹
本博文主要介紹實現通過SSD物體檢測方式實現工件裂紋檢測。裂紋圖像如下所示:

二、關于SSD算法


具體算法不再闡述,詳細請參考:
https://blog.csdn.net/u013989576/article/details/73439202
https://blog.csdn.net/xiaohu2022/article/details/79833786
https://www.sohu.com/a/168738025_717210

三、訓練數據的制作
訓練數據制作的時候選擇LabelImg,關于LabelImg的安裝使用請參考:https://blog.csdn.net/xunan003/article/details/78720189

關于選取裂紋數據的一點建議:建議選的檢測框數據一定要小,這樣方便收斂。

這里使用的是VOC2007的數據格式,文件夾下面一共三個子文件夾。

其中,Annotations文件夾存放的是LbaelImg制作數據生成的xml文件。


JPEGImages存放的是原圖像,.jpg格式。

ImageSets下面有一個Main文件夾,Main文件夾下面主要是四個txt文件。

分別對應訓練集、測試集、驗證集等。該文件夾中的四個txt文件,是從Annotations文件夾中隨機選取的圖像名稱,并按照一定的比例劃分。

從xml文件生成Main文件夾的四個txt文件,實現源碼如下:

import os
import random

trainval_percent = 0.9
train_percent = 0.9
xmlfilepath = 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_two_class/Annotations'
txtsavepath = 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_two_class/ImageSets/Main'
total_xml = os.listdir(xmlfilepath)

num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)

ftrainval = open(txtsavepath+'/trainval.txt', 'w')
ftest = open(txtsavepath+'/test.txt', 'w')
ftrain = open(txtsavepath+'/train.txt', 'w')
fval = open(txtsavepath+'/val.txt', 'w')

for i ?in list:
? ? name=total_xml[i][:-4]+'\n'
? ? if i in trainval:
? ? ? ? ftrainval.write(name)
? ? ? ? if i in train:
? ? ? ? ? ? ftrain.write(name)
? ? ? ? else:
? ? ? ? ? ? fval.write(name)
? ? else:
? ? ? ? ftest.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest .close()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
四、訓練數據
訓練數據的文件為train_ssd300.py,顧名思義就是圖像的輸入是300x300,不過不用擔心,代碼內部已經實現轉換的程序,可以輸入任意尺寸的圖像,源碼如下:

from keras.optimizers import Adam, SGD
from keras.callbacks import ModelCheckpoint, LearningRateScheduler, TerminateOnNaN, CSVLogger
from keras import backend as K
from keras.models import load_model
from math import ceil
import numpy as np
from matplotlib import pyplot as plt

from models.keras_ssd300 import ssd_300
from keras_loss_function.keras_ssd_loss import SSDLoss
from keras_layers.keras_layer_AnchorBoxes import AnchorBoxes
from keras_layers.keras_layer_DecodeDetections import DecodeDetections
from keras_layers.keras_layer_DecodeDetectionsFast import DecodeDetectionsFast
from keras_layers.keras_layer_L2Normalization import L2Normalization

from ssd_encoder_decoder.ssd_input_encoder import SSDInputEncoder
from ssd_encoder_decoder.ssd_output_decoder import decode_detections, decode_detections_fast

from data_generator.object_detection_2d_data_generator import DataGenerator
from data_generator.object_detection_2d_geometric_ops import Resize
from data_generator.object_detection_2d_photometric_ops import ConvertTo3Channels
from data_generator.data_augmentation_chain_original_ssd import SSDDataAugmentation
from data_generator.object_detection_2d_misc_utils import apply_inverse_transforms
import tensorflow as tf

from keras import backend as K
from focal_loss import focal_loss


img_height = 300 # Height of the model input images
img_width = 300 # Width of the model input images
img_channels = 3 # Number of color channels of the model input images
mean_color = [123, 117, 104] # The per-channel mean of the images in the dataset. Do not change this value if you're using any of the pre-trained weights.
swap_channels = [2, 1, 0] # The color channel order in the original SSD is BGR, so we'll have the model reverse the color channel order of the input images.
n_classes = 1 # 類的數量,不算背景
scales_pascal = [0.1, 0.2, 0.37, 0.54, 0.71, 0.88, 1.05] # The anchor box scaling factors used in the original SSD300 for the Pascal VOC datasets
#一共在六個不同scale層次上進行采樣,最后一個1.05應該是無效的,scales中的數字代表生成檢測框的長度是feature map的長度的0.1,0.2,0.37,0.54.。。倍,
# 長寬比例對應在aspect_ratios中,不同scale采樣的anchor數量和比例也不相同
scales_coco = [0.07, 0.15, 0.33, 0.51, 0.69, 0.87, 1.05] # The anchor box scaling factors used in the original SSD300 for the MS COCO datasets
scales = scales_pascal
aspect_ratios = [[1.0, 2.0, 0.5],
? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5],
? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5]] # The anchor box aspect ratios used in the original SSD300; the order matters
two_boxes_for_ar1 = True
steps = [8, 16, 32, 64, 100, 300] # The space between two adjacent anchor box center points for each predictor layer.
offsets = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5] # The offsets of the first anchor box center points from the top and left borders of the image as a fraction of the step size for each predictor layer.
clip_boxes = False # Whether or not to clip the anchor boxes to lie entirely within the image boundaries
variances = [0.1, 0.1, 0.2, 0.2] # The variances by which the encoded target coordinates are divided as in the original implementation
normalize_coords = True

# 加載或者重新建立一個模型,二者選其一
# 1: Build the Keras model.

K.clear_session() # Clear previous models from memory.

model = ssd_300(image_size=(img_height, img_width, img_channels),
? ? ? ? ? ? ? ? n_classes=n_classes,
? ? ? ? ? ? ? ? mode='training',
? ? ? ? ? ? ? ? l2_regularization=0.0005,
? ? ? ? ? ? ? ? scales=scales,
? ? ? ? ? ? ? ? aspect_ratios_per_layer=aspect_ratios,
? ? ? ? ? ? ? ? two_boxes_for_ar1=two_boxes_for_ar1,
? ? ? ? ? ? ? ? steps=steps,
? ? ? ? ? ? ? ? offsets=offsets,
? ? ? ? ? ? ? ? clip_boxes=clip_boxes,
? ? ? ? ? ? ? ? variances=variances,
? ? ? ? ? ? ? ? normalize_coords=normalize_coords,
? ? ? ? ? ? ? ? subtract_mean=mean_color,
? ? ? ? ? ? ? ? swap_channels=swap_channels)

# 2: Load some weights into the model.

# TODO: Set the path to the weights you want to load.
weights_path = 'VGG_ILSVRC_16_layers_fc_reduced.h5'

model.load_weights(weights_path, by_name=True)
model.summary()
# 3: Instantiate an optimizer and the SSD loss function and compile the model.
# ? ?If you want to follow the original Caffe implementation, use the preset SGD
# ? ?optimizer, otherwise I'd recommend the commented-out Adam optimizer.

# adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
sgd = SGD(lr=0.0001, momentum=0.9, decay=0.001, nesterov=False)

ssd_loss = SSDLoss(neg_pos_ratio=3, alpha=1.0)

model.compile(optimizer=sgd, loss=ssd_loss.compute_loss, metrics=['accuracy'])


# model.compile(optimizer=sgd, ?loss='categorical_crossentropy', metrics=['accuracy'])
#模型加載結束

# 注意,這里出現了梯度爆炸

#加載數據

# 1: Instantiate two `DataGenerator` objects: One for training, one for validation.

# Optional: If you have enough memory, consider loading the images into memory for the reasons explained above.

train_dataset = DataGenerator(load_images_into_memory=False, hdf5_dataset_path=None)
val_dataset = DataGenerator(load_images_into_memory=False, hdf5_dataset_path=None)

# 2: Parse the image and label lists for the training and validation datasets. This can take a while.

# TODO: Set the paths to the datasets here.

# The directories that contain the images.
VOC_2007_images_dir ? ? ?= 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/JPEGImages/'
# VOC_2012_images_dir ? ? ?= '../../datasets/VOCdevkit/VOC2012/JPEGImages/'

# The directories that contain the annotations.
VOC_2007_annotations_dir ? ? ?= 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/Annotations/'
# VOC_2012_annotations_dir ? ? ?= '../../datasets/VOCdevkit/VOC2012/Annotations/'

# The paths to the image sets.
VOC_2007_train_image_set_filename ? ?= 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/ImageSets/Main/train.txt'
# VOC_2012_train_image_set_filename ? ?= '../../datasets/VOCdevkit/VOC2012/ImageSets/Main/train.txt'
VOC_2007_val_image_set_filename ? ? ?= 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/ImageSets/Main/val.txt'
# VOC_2012_val_image_set_filename ? ? ?= '../../datasets/VOCdevkit/VOC2012/ImageSets/Main/val.txt'
VOC_2007_trainval_image_set_filename = 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/ImageSets/Main/trainval.txt'
# VOC_2012_trainval_image_set_filename = '../../datasets/VOCdevkit/VOC2012/ImageSets/Main/trainval.txt'
VOC_2007_test_image_set_filename ? ? = 'F:/competition code/ssd_keras-master/ssd_keras-master/data/liewen_expand/ImageSets/Main/test.txt'

# The XML parser needs to now what object class names to look for and in which order to map them to integers.
# classes = ['background',
# ? ? ? ? ? ?'aeroplane', 'bicycle', 'bird', 'boat',
# ? ? ? ? ? ?'bottle', 'bus', 'car', 'cat',
# ? ? ? ? ? ?'chair', 'cow', 'diningtable', 'dog',
# ? ? ? ? ? ?'horse', 'motorbike', 'person', 'pottedplant',
# ? ? ? ? ? ?'sheep', 'sofa', 'train', 'tvmonitor']

classes = ['background','neg']#類的名稱,此時要加上background

train_dataset.parse_xml(images_dirs=[VOC_2007_images_dir],
? ? ? ? ? ? ? ? ? ? ? ? image_set_filenames=[VOC_2007_trainval_image_set_filename],
? ? ? ? ? ? ? ? ? ? ? ? annotations_dirs=[VOC_2007_annotations_dir],
? ? ? ? ? ? ? ? ? ? ? ? classes=classes,
? ? ? ? ? ? ? ? ? ? ? ? include_classes='all',
? ? ? ? ? ? ? ? ? ? ? ? exclude_truncated=False,
? ? ? ? ? ? ? ? ? ? ? ? exclude_difficult=False,
? ? ? ? ? ? ? ? ? ? ? ? ret=False)

val_dataset.parse_xml(images_dirs=[VOC_2007_images_dir],
? ? ? ? ? ? ? ? ? ? ? image_set_filenames=[VOC_2007_test_image_set_filename],
? ? ? ? ? ? ? ? ? ? ? annotations_dirs=[VOC_2007_annotations_dir],
? ? ? ? ? ? ? ? ? ? ? classes=classes,
? ? ? ? ? ? ? ? ? ? ? include_classes='all',
? ? ? ? ? ? ? ? ? ? ? exclude_truncated=False,
? ? ? ? ? ? ? ? ? ? ? exclude_difficult=True,
? ? ? ? ? ? ? ? ? ? ? ret=False)

# Optional: Convert the dataset into an HDF5 dataset. This will require more disk space, but will
# speed up the training. Doing this is not relevant in case you activated the `load_images_into_memory`
# option in the constructor, because in that cas the images are in memory already anyway. If you don't
# want to create HDF5 datasets, comment out the subsequent two function calls.

train_dataset.create_hdf5_dataset(file_path='dataset_pascal_voc_07+12_trainval.h5',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? resize=False,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? variable_image_size=True,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? verbose=True)

val_dataset.create_hdf5_dataset(file_path='dataset_pascal_voc_07_test.h5',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? resize=False,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? variable_image_size=True,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? verbose=True)


# 3: Set the batch size.

batch_size = 8 # Change the batch size if you like, or if you run into GPU memory issues.

# 4: Set the image transformations for pre-processing and data augmentation options.

# For the training generator:
ssd_data_augmentation = SSDDataAugmentation(img_height=img_height,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? img_width=img_width,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? background=mean_color)

# For the validation generator:
convert_to_3_channels = ConvertTo3Channels()
resize = Resize(height=img_height, width=img_width)

# 5: Instantiate an encoder that can encode ground truth labels into the format needed by the SSD loss function.

# The encoder constructor needs the spatial dimensions of the model's predictor layers to create the anchor boxes.
predictor_sizes = [model.get_layer('conv4_3_norm_mbox_conf').output_shape[1:3],
? ? ? ? ? ? ? ? ? ?model.get_layer('fc7_mbox_conf').output_shape[1:3],
? ? ? ? ? ? ? ? ? ?model.get_layer('conv6_2_mbox_conf').output_shape[1:3],
? ? ? ? ? ? ? ? ? ?model.get_layer('conv7_2_mbox_conf').output_shape[1:3],
? ? ? ? ? ? ? ? ? ?model.get_layer('conv8_2_mbox_conf').output_shape[1:3],
? ? ? ? ? ? ? ? ? ?model.get_layer('conv9_2_mbox_conf').output_shape[1:3]]

ssd_input_encoder = SSDInputEncoder(img_height=img_height,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? img_width=img_width,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? n_classes=n_classes,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? predictor_sizes=predictor_sizes,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scales=scales,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? aspect_ratios_per_layer=aspect_ratios,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? two_boxes_for_ar1=two_boxes_for_ar1,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? steps=steps,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? offsets=offsets,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? clip_boxes=clip_boxes,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? variances=variances,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? matching_type='multi',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pos_iou_threshold=0.5,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? neg_iou_limit=0.5,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? normalize_coords=normalize_coords)

# 6: Create the generator handles that will be passed to Keras' `fit_generator()` function.

train_generator = train_dataset.generate(batch_size=batch_size,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?shuffle=True,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?transformations=[ssd_data_augmentation],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?label_encoder=ssd_input_encoder,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?returns={'processed_images',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'encoded_labels'},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?keep_images_without_gt=False)

val_generator = val_dataset.generate(batch_size=batch_size,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?shuffle=False,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?transformations=[convert_to_3_channels,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? resize],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?label_encoder=ssd_input_encoder,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?returns={'processed_images',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'encoded_labels'},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?keep_images_without_gt=False)

# Get the number of samples in the training and validations datasets.
train_dataset_size = train_dataset.get_dataset_size()
val_dataset_size ? = val_dataset.get_dataset_size()

print("Number of images in the training dataset:\t{:>6}".format(train_dataset_size))
print("Number of images in the validation dataset:\t{:>6}".format(val_dataset_size))
print("cuiwei")

def lr_schedule(epoch):#通過回調函數設置學習率
? ? if epoch < 80:
? ? ? ? return 0.0001
? ? elif epoch < 100:
? ? ? ? return 0.0001
? ? else:
? ? ? ? return 0.00001

# Define model callbacks.

# TODO: Set the filepath under which you want to save the model.
model_checkpoint = ModelCheckpoint(filepath='ssd300_model_liehen_expand.h5',#模型保存名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?monitor='val_loss',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?verbose=1,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?save_best_only=True,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?save_weights_only=False,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mode='auto',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?period=1)
#model_checkpoint.best =

csv_logger = CSVLogger(filename='ssd300_pascal_07+12_training_log.csv',
? ? ? ? ? ? ? ? ? ? ? ?separator=',',
? ? ? ? ? ? ? ? ? ? ? ?append=True)

learning_rate_scheduler = LearningRateScheduler(schedule=lr_schedule,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? verbose=1)

terminate_on_nan = TerminateOnNaN()

callbacks = [model_checkpoint,
? ? ? ? ? ? ?csv_logger,
? ? ? ? ? ? ?learning_rate_scheduler,
? ? ? ? ? ? ?terminate_on_nan]

# If you're resuming a previous training, set `initial_epoch` and `final_epoch` accordingly.
initial_epoch ? = 0
final_epoch ? ? = 20
steps_per_epoch = 80

history = model.fit_generator(generator=train_generator,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? steps_per_epoch=steps_per_epoch,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? epochs=final_epoch,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? callbacks=callbacks,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? validation_data=val_generator,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? validation_steps=ceil(val_dataset_size/batch_size),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? initial_epoch=initial_epoch)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
五、測試數據
訓練完成后,對模型進行測試,test_ssd300.py文件,源代碼如下:

from keras import backend as K
from keras.models import load_model
from keras.preprocessing import image
from keras.optimizers import Adam
from imageio import imread
import numpy as np
from matplotlib import pyplot as plt

from models.keras_ssd300 import ssd_300
from keras_loss_function.keras_ssd_loss import SSDLoss
from keras_layers.keras_layer_AnchorBoxes import AnchorBoxes
from keras_layers.keras_layer_DecodeDetections import DecodeDetections
from keras_layers.keras_layer_DecodeDetectionsFast import DecodeDetectionsFast
from keras_layers.keras_layer_L2Normalization import L2Normalization

from ssd_encoder_decoder.ssd_output_decoder import decode_detections, decode_detections_fast

from data_generator.object_detection_2d_data_generator import DataGenerator
from data_generator.object_detection_2d_photometric_ops import ConvertTo3Channels
from data_generator.object_detection_2d_geometric_ops import Resize
from data_generator.object_detection_2d_misc_utils import apply_inverse_transforms
import cv2

# Set the image size.
img_height = 300
img_width = 300

# # TODO: Set the path to the `.h5` file of the model to be loaded.
# # model_path = 'ssd300_model.h5'
# model_path = 'VGG_VOC0712Plus_SSD_300x300_iter_240000.h5'
# # We need to create an SSDLoss object in order to pass that to the model loader.
# ssd_loss = SSDLoss(neg_pos_ratio=3, n_neg_min=0, alpha=1.0)
#
# K.clear_session() # Clear previous models from memory.
#
# model = load_model(model_path, custom_objects={'AnchorBoxes': AnchorBoxes,
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'L2Normalization': L2Normalization,
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'DecodeDetections': DecodeDetections,
# ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'compute_loss': ssd_loss.compute_loss})
K.clear_session() # Clear previous models from memory.

model = ssd_300(image_size=(img_height, img_width, 3),
? ? ? ? ? ? ? ? n_classes=1,
? ? ? ? ? ? ? ? mode='inference',
? ? ? ? ? ? ? ? l2_regularization=0.0005,
? ? ? ? ? ? ? ? scales=[0.1, 0.2, 0.37, 0.54, 0.71, 0.88, 1.05], # The scales for MS COCO are [0.07, 0.15, 0.33, 0.51, 0.69, 0.87, 1.05]
? ? ? ? ? ? ? ? aspect_ratios_per_layer=[[1.0, 2.0, 0.5],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[1.0, 2.0, 0.5]],
? ? ? ? ? ? ? ? two_boxes_for_ar1=True,
? ? ? ? ? ? ? ? steps=[8, 16, 32, 64, 100, 300],
? ? ? ? ? ? ? ? offsets=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
? ? ? ? ? ? ? ? clip_boxes=False,
? ? ? ? ? ? ? ? variances=[0.1, 0.1, 0.2, 0.2],
? ? ? ? ? ? ? ? normalize_coords=True,
? ? ? ? ? ? ? ? subtract_mean=[123, 117, 104],
? ? ? ? ? ? ? ? swap_channels=[2, 1, 0],
? ? ? ? ? ? ? ? confidence_thresh=0.5,
? ? ? ? ? ? ? ? iou_threshold=0.45,
? ? ? ? ? ? ? ? top_k=200,
? ? ? ? ? ? ? ? nms_max_output_size=400)

# 2: Load the trained weights into the model.

# TODO: Set the path of the trained weights.
# weights_path ='VGG_VOC0712Plus_SSD_300x300_iter_240000.h5'
# weights_path ='ssd300_model_liehen_small.h5'
# weights_path ='ssd300_model_liehen_expand.h5'
weights_path ='ssd300_model_liehen.h5'
model.load_weights(weights_path, by_name=True)

# 3: Compile the model so that Keras won't complain the next time you load it.

adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

ssd_loss = SSDLoss(neg_pos_ratio=3, alpha=1.0)

model.compile(optimizer=adam, loss=ssd_loss.compute_loss)
model.summary()

orig_images = [] # Store the images here.
input_images = [] # Store resized versions of the images here.

# We'll only load one image in this example.
# img_path = 'VOC2007/JPEGImages/16.jpg'
img_path='F:/Data/crack image/ChallengeDataset/ChallengeDataset/train/neg/428.jpg'
image_opencv=cv2.imread(img_path)
# img_path='VOCtest_06-Nov-2007/VOCdevkit/VOC2007/JPEGImages/000001.jpg'
orig_images.append(imread(img_path))
img = image.load_img(img_path, target_size=(img_height, img_width))
img = image.img_to_array(img)
input_images.append(img)
input_images = np.array(input_images)

#對新的圖像進行預測
y_pred = model.predict(input_images)
#
confidence_threshold = 0

y_pred_thresh = [y_pred[k][y_pred[k,:,1] > confidence_threshold] for k in range(y_pred.shape[0])]

np.set_printoptions(precision=2, suppress=True, linewidth=90)
print("Predicted boxes:\n")
print(' ? class ? conf xmin ? ymin ? xmax ? ymax')
print(y_pred_thresh[0])


# Display the image and draw the predicted boxes onto it.

# Set the colors for the bounding boxes
colors = plt.cm.hsv(np.linspace(0, 1, 21)).tolist()
# classes = ['background',
# ? ? ? ? ? ?'aeroplane', 'bicycle', 'bird', 'boat',
# ? ? ? ? ? ?'bottle', 'bus', 'car', 'cat',
# ? ? ? ? ? ?'chair', 'cow', 'diningtable', 'dog',
# ? ? ? ? ? ?'horse', 'motorbike', 'person', 'pottedplant',
# ? ? ? ? ? ?'sheep', 'sofa', 'train', 'tvmonitor']

classes=['background','neg']

plt.figure(figsize=(20,12))
plt.imshow(orig_images[0])

current_axis = plt.gca()

for box in y_pred_thresh[0]:
? ? # Transform the predicted bounding boxes for the 300x300 image to the original image dimensions.
? ? xmin = box[2] * orig_images[0].shape[1] / img_width
? ? ymin = box[3] * orig_images[0].shape[0] / img_height
? ? xmax = box[4] * orig_images[0].shape[1] / img_width
? ? ymax = box[5] * orig_images[0].shape[0] / img_height
? ? color = colors[int(box[0])]
? ? label = '{}: {:.2f}'.format(classes[int(box[0])], box[1])
? ? current_axis.add_patch(plt.Rectangle((xmin, ymin), xmax-xmin, ymax-ymin, color=color, fill=False, linewidth=2))
? ? current_axis.text(xmin, ymin, label, size='x-large', color='white', bbox={'facecolor':color, 'alpha':1.0})
? ? cv2.putText(image_opencv, label, (int(xmin), int(ymin)-10), cv2.FONT_HERSHEY_COMPLEX, 0.8, (255, 255, 0), 1)
? ? cv2.rectangle(image_opencv, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)

cv2.namedWindow("Canvas",0)
cv2.imshow("Canvas", image_opencv)
cv2.waitKey(0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
測試結果:


六、源代碼和數據
SSD裂紋檢測源代碼:https://download.csdn.net/download/qq_29462849/10748838
裂紋圖像數據:https://download.csdn.net/download/qq_29462849/10748828

七、需要注意的問題
該SSD源代碼,在設置學習率的時候,需要設置小些,本代碼中設置0.0001,設置過大,會導致梯度爆炸,這個親身體驗過~~~
在制作數據的時候,需要把前景和背景區別開來,對裂紋比較明顯的特征,檢測框可以設置小些,而且盡量不要包含無關的背景;對裂紋不明顯的特征,需要設置檢測框大些,不明顯的特征只能通過長裂紋來和背景區分。
八、另外一個思路
如果不需要定位裂紋在圖像中的位置,只需要識別整幅圖像是否有裂紋,并以此來做識別分類。有一個思路很好,那就是對整幅圖像進行切分,比如在y軸方向做切割,切割成四份圖像,如下圖所示。因為裂紋大都是處于同一水平位置上的,研y軸進行切割,可以最大程度保留完整的裂紋。把切割好的裂紋和非裂紋圖像挑選出來,分別給予標簽,這樣送進分類網絡,比如DenseNet中進行訓練。

網絡訓練完成后,就可以對場景圖像進行識別了,只不過在識別的過程中同樣需要對場景圖像進行切分,然后對每一個切片圖像進行分類識別。判斷依據,只要場景圖像的切片圖像有一個被分類為有裂紋的,那該場景圖像就是有裂紋的。

關于切片的方向和數量,可以根據自己工況的需要來完成,不一定非得是四份。

如有疑問,歡迎加企鵝516999497交流~


————————————————
版權聲明:本文為CSDN博主「Oliver Cui」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_29462849/article/details/83472430

總結

以上是生活随笔為你收集整理的SSD列子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91完整版观看 | 久久一区精品 | 狠狠地操| 国产在线视频一区二区 | 国内一区二区视频 | 精品国产aⅴ麻豆 | 日本黄网站| 国产123av | 午夜精品一区二区三区四区 | 不卡国产在线 | 丝袜美女在线 | 日韩久久一区 | 最近中文字幕 | 久久电影色 | 亚洲成人免费在线观看 | 久久夜靖品 | 夜夜澡人模人人添人人看 | 中文资源在线观看 | 亚洲麻豆精品 | av中文字幕电影 | 国产精品久久久久久av | 日韩三级av| 免费看一级片 | 国产成人在线免费观看 | 欧美 亚洲 另类 激情 另类 | 免费观看日韩av | 国产原创av片 | 欧美日韩国产网站 | 久久午夜电影院 | 久久久久久久福利 | 在线观看你懂的网址 | 中文字幕精品一区二区三区电影 | 免费在线电影网址大全 | 亚洲激情综合 | 永久免费毛片在线观看 | 亚洲一二三久久 | 五月婷婷久久综合 | 免费成人av网站 | 中文字幕av专区 | 五月花丁香婷婷 | 免费日p视频 | 中文字幕亚洲精品在线观看 | 98精品国产自产在线观看 | 国产成在线观看免费视频 | 国产精品成人一区二区三区 | 国产一区网址 | 亚洲国产一二三 | а天堂中文最新一区二区三区 | 欧美精品中文 | 国产精品自产拍 | 国产97超碰| 超碰在线观看97 | 久草爱视频 | 在线免费黄色 | 成人小视频在线观看免费 | 亚洲国产人午在线一二区 | 国内精品久久久久久 | 日日干精品 | 国产精品久久久久久久久久久久久久 | 国产韩国日本高清视频 | 99草在线视频 | 伊人中文在线 | 欧美色图p | 91女人18片女毛片60分钟 | 丁香六月婷婷激情 | 午夜色性片| 日韩高清www| 久草在线这里只有精品 | 日韩在线网址 | 成人国产精品久久久久久亚洲 | 2022中文字幕在线观看 | 亚洲高清av | 91精品办公室少妇高潮对白 | 天天操天天操天天操天天操天天操天天操 | 亚洲涩涩涩涩涩涩 | 亚洲高清精品在线 | 99久久99久久精品免费 | 国产精品成人久久 | 久久精品国产亚洲精品2020 | 亚洲一二视频 | 国产黄色免费观看 | 97精品伊人| 国产一区成人在线 | 亚洲va欧美 | 亚洲激情在线观看 | 亚洲天天草 | 国产高清在线 | 国产一级精品绿帽视频 | 81精品国产乱码久久久久久 | 91av视屏| 96在线| 亚洲欧美综合精品久久成人 | 成人影片在线播放 | 久草在线 | 天天色综合天天 | 亚洲国产成人久久 | 国产色综合 | 超碰在线国产 | 国产国产人免费人成免费视频 | 国产精品一区在线观看 | 在线观看播放av | 午夜久久久影院 | av电影亚洲 | 日本中文字幕久久 | 日韩在线观看一区二区三区 | 久久人人精品 | 日本一区二区三区免费观看 | 欧美午夜性生活 | 中日韩免费视频 | 国产96在线视频 | 日韩午夜在线观看 | 97天天综合网| 国产精品久久99综合免费观看尤物 | 国产黄色精品网站 | 天天做天天爱夜夜爽 | 18岁免费看片 | v片在线看 | 亚洲乱码在线观看 | 国产免费一区二区三区最新 | 亚洲精品久久久久久中文传媒 | 免费一级片在线观看 | 中文字幕日韩一区二区三区不卡 | 国产不卡在线观看 | 久久久久久久国产精品 | 日韩黄色免费看 | 91一区二区三区久久久久国产乱 | 在线成人短视频 | 超碰人人av | avav99| 国产在线观看地址 | 日韩电影黄色 | 国产99一区视频免费 | 国产精品99久久久精品免费观看 | 国产精品一区二区在线观看 | 99精品免费久久久久久久久日本 | 天天做天天干 | 狠狠干我 | 日韩簧片在线观看 | 久久综合精品一区 | 国内精品久久久久久久久久久 | 色吊丝在线永久观看最新版本 | 色多多视频在线观看 | 在线观看成人福利 | 亚洲视频精品 | 中文字幕精品一区久久久久 | 日韩欧美精选 | 黄色毛片网站在线观看 | 不卡在线一区 | 91色影院 | 超级碰99| 国产午夜精品免费一区二区三区视频 | 五月天婷婷免费视频 | 国产成人中文字幕 | 国产黑丝一区二区 | 在线免费高清一区二区三区 | 色中色资源站 | 97色资源| 国产涩涩在线观看 | 日本爽妇网 | 成人av片免费看 | 97超碰福利久久精品 | 在线欧美a| 国产黄色片一级三级 | 中文字幕视频在线播放 | 成人黄色av免费在线观看 | 日韩美在线观看 | 久久视频二区 | 一区二区三区免费在线观看 | a午夜在线| 亚洲国产av精品毛片鲁大师 | 国产精品夜夜夜一区二区三区尤 | 久久精品欧美日韩精品 | 成人av片免费看 | 爱干视频 | 欧美精品乱码久久久久久 | 国产午夜不卡 | 色a网 | 在线精品国产 | 成 人 黄 色 视频免费播放 | 手机成人免费视频 | 久久精品精品电影网 | 99热最新地址 | av资源免费观看 | 九九有精品 | 精品国产久 | 日韩av男人的天堂 | 夜夜澡人模人人添人人看 | 在线免费观看国产精品 | 国产成人精品一区二区在线 | 日本久久久久久久久 | 狠狠狠狠狠狠狠狠干 | 国产色女人 | 最近中文字幕免费 | 日韩久久久久久久久久 | 视频在线观看亚洲 | 色在线中文字幕 | 午夜国产福利在线 | 少妇搡bbbb搡bbb搡69 | 国产精品免费高清 | 久久影视精品 | 99精品视频中文字幕 | 色的网站在线观看 | 国产九九九视频 | 国产麻豆精品久久一二三 | 久久人人爽人人爽人人片 | 又湿又紧又大又爽a视频国产 | 高清不卡一区二区三区 | 欧美日韩国产精品久久 | 最新影院 | 成年人视频免费在线播放 | 在线视频一区二区 | 久久久久久久久久久久久国产精品 | 亚洲自拍自偷 | 蜜臀av网址 | 国产在线色视频 | 精品国产一区二区三区久久影院 | 最近中文字幕mv免费高清在线 | 成人免费中文字幕 | 久久久久久久久福利 | 中文字幕免费在线看 | 97视频一区 | 最近中文字幕视频网 | 国产丝袜在线 | 韩国一区二区三区在线观看 | 久久精品国产亚洲a | 99在线播放 | 一区二区三区不卡在线 | 成人va天堂| 999成人网| 国产精品成人一区二区 | 国产裸体无遮挡 | 99精品视频在线 | 天天鲁一鲁摸一摸爽一爽 | 激情综合电影网 | 亚洲精品乱码久久久久久 | 人人干人人干人人干 | 黄免费在线观看 | 免费在线观看av不卡 | www五月婷婷| 在线免费试看 | 国产精品大片免费观看 | 欧美aa一级片 | 69中文字幕 | 精品久久九九 | 在线国产日韩 | 久草视频在线看 | 亚洲特级片 | 精品国产一区二区三区久久久蜜臀 | 日韩精品黄 | 欧美精品中文在线免费观看 | 久久不卡日韩美女 | 91亚·色| 一区二区三区高清不卡 | 国产欧美精品一区二区三区 | 美女视频黄免费网站 | 国产精品久久久久久久久蜜臀 | 日本精品视频在线观看 | 国产在线 一区二区三区 | 久久成人国产精品一区二区 | 日韩高清免费在线 | 九九热精品在线 | 干 操 插 | 国产精品一区专区欧美日韩 | 久久在线免费观看 | 香蕉免费在线 | 色999精品 | 超碰在线98 | 成人av一二三区 | 91福利国产在线观看 | av在线h| 99r精品视频在线观看 | 久热电影| 91精品综合在线观看 | 国产一区在线免费 | 国产精品一区二区三区在线播放 | 中文字幕国产视频 | 久草在线免费资源 | 精品一区二区电影 | 欧美日韩视频精品 | 日韩av黄| 午夜91视频 | 亚洲国产成人久久 | 天天激情在线 | 成人av资源网站 | 久久久免费网站 | 91精选 | 免费无遮挡动漫网站 | 日韩字幕在线观看 | 精品中文字幕在线 | 中文字幕免费高清在线 | 91高清免费观看 | 91女子私密保健养生少妇 | 99视频+国产日韩欧美 | 丁香婷婷综合五月 | 亚洲精品午夜一区人人爽 | 亚洲人成免费 | 日本二区三区在线 | 在线成人av| 99精品网站| 久久久福利视频 | 91精品在线观看入口 | 欧美日韩亚洲第一 | 天天综合网天天综合色 | 色99之美女主播在线视频 | 男女激情网址 | 国产女人40精品一区毛片视频 | 国产日产高清dvd碟片 | 99国产视频在线 | 人人爽人人爽人人爽学生一级 | 免费在线播放视频 | av福利电影 | 999久久久国产精品 高清av免费观看 | 国产精品露脸在线 | 五月婷婷香蕉 | av免费在线观 | 免费a v观看| 日韩精品欧美专区 | 成人免费一级片 | 国产色爽| 国产精品久久久久久高潮 | 日韩理论片| 天堂av观看 | 在线观看视频三级 | 美女黄频视频大全 | 国产精品日韩久久久久 | 欧美精品免费一区二区 | 香蕉日日 | 91豆麻精品91久久久久久 | 久久午夜精品影院一区 | 久久黄色影院 | 欧美日韩午夜在线 | 黄网站免费大全入口 | 国产在线观看你懂的 | 国产成人99久久亚洲综合精品 | 国产专区免费 | 天天干天天干天天干天天干天天干天天干 | 亚洲国产片色 | 欧美日韩免费观看一区=区三区 | 久久激情五月婷婷 | 久久久精品小视频 | 国产精品久久久久久一区二区 | 免费看成人 | 亚洲视频 一区 | 婷婷丁香色综合狠狠色 | 中文字幕免费高清在线观看 | 夜夜夜夜操 | 成人羞羞视频在线观看免费 | 玖玖玖在线观看 | www.国产精品 | 最新av在线免费观看 | www日日夜夜 | 黄色免费网站大全 | 亚洲精品欧美精品 | 伊人久久婷婷 | 女人魂免费观看 | 最近中文字幕视频完整版 | 久草资源免费 | 久久国产精品二国产精品中国洋人 | 国产精品久久久久久久久软件 | 91理论电影 | 亚洲精品乱码久久久久久久久久 | 九九九九色 | 国产精品黑丝在线观看 | 福利网址在线观看 | 久久精品一区 | 亚洲区另类春色综合小说校园片 | 国产视频久久 | 天堂av中文字幕 | 精品国产一区二区三区av性色 | 在线观看免费av网站 | 久久久久亚洲最大xxxx | 国产亚洲欧美日韩高清 | 韩国一区二区在线观看 | 久久久久久久久久免费视频 | 91成人精品一区在线播放69 | 国产精品videossex国产高清 | 欧美无极色 | 99爱这里只有精品 | 亚洲免费永久精品国产 | www.在线观看av | 波多野结衣精品视频 | 天天玩天天干天天操 | 视频在线91| 黄色特一级片 | 成人免费在线观看电影 | 美国av大片| 免费福利在线观看 | 久久情网| 精品福利视频在线 | 成人在线免费观看视视频 | 色婷婷精品大在线视频 | 久久热亚洲 | 99热最新 | 麻豆影视在线观看 | 亚洲精品午夜一区人人爽 | 中文字幕欧美三区 | 日韩av成人在线观看 | 国产免费精彩视频 | 欧美在线视频一区二区 | 播五月综合 | 国产喷水在线 | av久久在线| 91亚洲精品久久久蜜桃网站 | 97国产超碰在线 | 香蕉视频一级 | 天天插天天干天天操 | 在线免费观看黄色小说 | 国产精品99久久久久久宅男 | 精品免费久久久久 | 婷婷激情综合网 | 超碰在线97免费 | 国产又黄又爽又猛视频日本 | 丁香婷五月 | 久久精品免费观看 | 91在线日韩 | 欧美在线视频二区 | 69国产盗摄一区二区三区五区 | 中文字幕一区二区在线播放 | 婷婷精品国产一区二区三区日韩 | 91在线播 | 91精品国产高清自在线观看 | 成人在线免费视频 | 97视频免费看 | 国产视频在线观看一区二区 | 99国产精品视频免费观看一公开 | 色婷婷久久一区二区 | 天天干,天天射,天天操,天天摸 | 欧美色婷婷 | 成人免费视频视频在线观看 免费 | 91av社区| 天天超碰 | 亚洲一级黄色大片 | 国产精品美女久久久久久久网站 | 国产色网站 | 国产精品午夜免费福利视频 | 激情 婷婷| 天天草天天干天天射 | 91亚洲精品久久久 | 国产精品免费人成网站 | 91毛片在线观看 | 亚洲成成品网站 | 激情丁香久久 | 亚洲爱爱视频 | 国产免费久久 | 狠狠色丁香婷婷综合橹88 | 久久y| 日韩在线观看视频在线 | 99久久电影 | 91免费在线播放 | 国产又粗又猛又爽又黄的视频先 | 国产黄大片 | 欧美另类网站 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 欧美精品你懂的 | 97狠狠操 | 亚洲一区二区三区毛片 | 天天操天天操天天操 | 欧美天天综合网 | 国产日韩精品一区二区在线观看播放 | 成人h电影 | 欧美一区二区三区在线观看 | 婷婷综合导航 | 欧美精品三级在线观看 | 91视频在线观看免费 | 日日干夜夜草 | 色资源二区在线视频 | 最近中文字幕在线 | 国产成人61精品免费看片 | 超碰在线免费福利 | 麻豆高清免费国产一区 | 91完整版观看 | av免费电影在线 | 97精品国产97久久久久久春色 | 国产一级一片免费播放放 | 午夜免费福利视频 | 嫩草伊人久久精品少妇av | 日韩免费三级 | 制服丝袜亚洲 | www色网站 | 日日躁你夜夜躁你av蜜 | 久久精品免视看 | 国产精品激情在线观看 | 免费看国产精品 | 99视频一区 | 日韩欧美aaa | 国产超碰在线 | 久久99久久99精品中文字幕 | 蜜臀av.com| 亚洲免费在线观看视频 | 日本精品一区二区三区在线观看 | 日韩 在线观看 | 国产精品国产三级在线专区 | 免费看91的网站 | 99精品国产高清在线观看 | 五月婷婷丁香综合 | 激情视频亚洲 | 欧美国产日韩一区 | 国产一级免费视频 | 成人小电影在线看 | 天天爱天天操天天爽 | 午夜av一区二区三区 | 国产亚洲人成网站在线观看 | 国产亚洲精品久久久久久久久久 | 精品中文字幕在线观看 | 91九色视频在线播放 | 国产91精品在线观看 | 亚洲三级国产 | 91av免费观看 | 国内久久久久 | 特级a老妇做爰全过程 | 国产精品麻豆欧美日韩ww | 玖玖精品在线 | 日韩女同一区二区三区在线观看 | 91色综合| 麻花豆传媒一二三产区 | 深爱婷婷 | 日韩二级毛片 | 国产黄色视 | 国产在线更新 | 色婷婷视频网 | 日韩国产精品久久久久久亚洲 | 久久久免费毛片 | av成人资源 | 四虎影视成人永久免费观看亚洲欧美 | 天天色天天操天天爽 | 99视频在线免费 | 亚州日韩中文字幕 | 欧美激情精品久久久久久免费 | 国产一区二区在线看 | 久久精选视频 | 波多野结衣在线播放一区 | 808电影 | 亚洲免费公开视频 | 久久亚洲私人国产精品 | 欧美性天天 | 在线观看亚洲视频 | 久久久国产精品电影 | 午夜av一区 | 国产成人精品一区二三区 | 奇米影视在线99精品 | 国产成人精品一区二区三区 | 97精品国自产拍在线观看 | 国产视频一区精品 | 精品国产乱码久久久久久久 | 99精品视频免费全部在线 | 一区二区影院 | 久久一线 | 久操视频在线观看 | 日本色小说视频 | 欧美日韩中文字幕综合视频 | 国产精品18久久久久久不卡孕妇 | 在线免费观看黄网站 | 欧美不卡视频在线 | 中文字幕在线有码 | 久久看片 | 伊人婷婷 | 天天综合久久综合 | 尤物97国产精品久久精品国产 | 亚洲精品视频免费在线观看 | 婷婷中文在线 | 久久久影院| 精精国产xxxx视频在线播放 | 国产亚洲精品久久久久秋 | 国产精品3 | 91精品国产乱码久久桃 | 免费a视频| 最新91在线视频 | 91九色视频 | 亚洲成人av片在线观看 | av在线色 | 亚洲精品久久久久久久蜜桃 | 欧美日韩性视频 | 国产精品免费久久久久久 | 日韩在线观看小视频 | 日本中文字幕网站 | 日韩丝袜 | 色资源网免费观看视频 | 亚洲视频免费在线观看 | 久久国产精品系列 | 久久久这里有精品 | 精品一区电影 | 天天爽夜夜操 | 毛片网站在线看 | 日韩中文字幕国产 | 久久99精品久久久久久秒播蜜臀 | 亚洲97在线 | 免费69视频 | 91成年视频 | 久久深爱网| 美女视频黄免费的 | 国产精品青青 | 国产视频 亚洲精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 日日干天天爽 | 久久精选| av黄色免费在线观看 | 成人动漫一区二区三区 | 久久综合色播五月 | 蜜桃av人人夜夜澡人人爽 | 综合天天久久 | 色婷婷综合激情 | 久久免费的视频 | 日韩视频一区二区在线 | 国产福利网站 | 日韩免费av网址 | 日韩在线视频在线观看 | 国产精品视频免费看 | 天天操天天操一操 | 久久激情视频 久久 | 美女视频黄,久久 | 91av久久| 日韩在线视频免费播放 | 亚洲午夜精品电影 | 天天综合网 天天综合色 | 成人性生爱a∨ | 欧美aaa大片| 亚洲三级国产 | 欧美色一色 | 亚洲国产福利视频 | 91网在线观看 | 国产做爰视频 | 在线观看中文字幕视频 | 香蕉视频91| 2019国产精品 | 中文字幕在线国产精品 | 国产剧情一区在线 | 九色精品免费永久在线 | 色综合亚洲精品激情狠狠 | 亚洲成人av片 | 91成人网在线观看 | 日韩黄色中文字幕 | 久草视频在线新免费 | 亚洲激情视频在线 | 在线亚洲天堂网 | 成人在线网站观看 | 手机成人在线 | 久久激情视频免费观看 | 国产麻豆精品一区 | 射久久久 | 97色资源 | 日b视频在线观看网址 | 日本性动态图 | 天天撸夜夜操 | 欧美天堂视频在线 | 国内精品久久久久久久久久清纯 | 中文字幕在线观看视频网站 | 亚洲精品乱码久久久久久写真 | 精品国产aⅴ麻豆 | 天天狠狠 | 亚洲成人家庭影院 | 欧美大片第1页 | 久久人人爽人人片 | 91香蕉嫩草 | 综合网伊人 | 婷婷九月激情 | 成人a视频| 日韩免费在线看 | 激情自拍av| 亚洲国产免费看 | 伊人久久精品久久亚洲一区 | 96超碰在线 | 777奇米四色 | 亚洲欧洲成人精品av97 | 91麻豆国产福利在线观看 | 国产在线自 | 黄色小网站在线 | 97超碰人人看| 毛片1000部免费看 | 日韩女同一区二区三区在线观看 | 人人爽人人爽av | 国产精品亚洲人在线观看 | 国产一级淫片在线观看 | 成人av久久 | 欧美一级特黄高清视频 | 99在线精品视频 | 在线天堂亚洲 | 97超碰人人模人人人爽人人爱 | 国产黄a三级三级三级三级三级 | 日韩电影中文字幕在线观看 | 国产精品视频app | 亚洲黄在线观看 | 国内久久看 | 免费在线激情电影 | 日本xxxxav| av中文字幕网站 | 狠狠综合网 | 国产视频日韩视频欧美视频 | 日韩免费观看一区二区三区 | 丁香久久久 | 日韩电影在线观看一区 | 丁香综合av | 日日夜夜草 | 久久久精品二区 | 精品在线亚洲视频 | 久久亚洲影视 | 国产一级视频在线免费观看 | 超碰在线人 | 国产精品久久久一区二区 | 六月色播| 亚洲天堂色婷婷 | 国内精品中文字幕 | 夜夜骑天天操 | 黄色成人小视频 | 色人久久| 色在线免费观看 | 亚洲九九九在线观看 | 久久精品毛片基地 | 国产一级在线 | 激情综合色图 | 狠狠狠色丁香婷婷综合久久88 | 成人h电影在线观看 | 亚洲欧美日韩一区二区三区在线观看 | 高清日韩一区二区 | 国产69精品久久久久久久久久 | 国产裸体视频网站 | 91视频免费网址 | 国产99久久久久久免费看 | 久久精品视频观看 | 天天色官网 | 日韩美女免费线视频 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 天天操天天玩 | 亚洲精品国产精品国自产观看 | 久久国产区 | 国产精品12345 | 久久精品一区二区三区国产主播 | www.天天干 | 国产成人免费在线观看 | 特级a老妇做爰全过程 | 一区二区三区影院 | 亚洲国产日本 | 99久免费精品视频在线观看 | 成片免费观看视频大全 | 国产亚洲一级高清 | 国产丝袜一区二区三区 | 中午字幕在线观看 | 深爱激情五月综合 | 国产aaa免费视频 | 天天天干天天天操 | 精品国产一区二区三区久久久蜜臀 | 国产精品精品久久久 | 在线电影a| 国内精品久久久久影院一蜜桃 | 日本黄色免费在线 | 久久99影院 | 在线观看 国产 | 91高清免费| 夜夜嗨av色一区二区不卡 | 黄色三级免费观看 | 久久网站最新地址 | 99热官网 | 国产成人精品综合久久久久99 | 天天爽夜夜爽人人爽一区二区 | 色婷婷久久| 精品久久久久久亚洲综合网站 | 久久精品三 | 51久久夜色精品国产麻豆 | 国产中文字幕一区二区三区 | 日韩免费观看一区二区 | 9999精品| 中文字幕视频三区 | 精品国产伦一区二区三区观看说明 | 久久久久欧美精品 | 高清视频一区二区三区 | www.狠狠色 | 久久久九色精品国产一区二区三区 | 欧美一级免费在线 | 国产不卡精品 | 国产精品国产三级国产aⅴ入口 | 毛片一区二区 | 婷婷在线色| 久久不色 | 麻豆视频一区二区 | 97精品久久 | 免费电影一区二区三区 | 91伊人久久大香线蕉蜜芽人口 | 日本三级吹潮在线 | 免费aa大片 | 伊色综合久久之综合久久 | 久久国产精品99久久人人澡 | 午夜国产一区二区 | avcom在线| 91试看 | 狠狠久久伊人 | 波多在线视频 | 国产在线免费av | 在线导航福利 | 欧美激情另类 | 成人在线观看资源 | 色噜噜噜 | 久久精品爱视频 | 超碰97av在线 | 又黄又刺激的网站 | 亚洲精品中文字幕视频 | 亚洲美女久久 | 激情电影影院 | 国产精品久久久久久久久搜平片 | 又黄又爽又无遮挡免费的网站 | 日韩成年视频 | 成人a级黄色片 | 最新av在线播放 | 永久精品视频 | 亚洲国产精品第一区二区 | 久久免费精品一区二区三区 | 五月婷网站| 久久精品国产一区二区电影 | 久草在线中文视频 | 国产精品永久免费观看 | 天天爱天天干天天爽 | 奇米网网址 | 国产成人在线免费观看 | 91福利在线导航 | 国产精品av免费观看 | 麻豆视频国产精品 | 久久国产精品影片 | 大型av综合网站 | 免费看色的网站 | 亚洲国产成人精品在线观看 | 国产精品免费成人 | 久久电影网站中文字幕 | 国产日韩欧美在线影视 | 久草网在线观看 | 日韩a在线 | 久久免费视频播放 | 国产伦理精品一区二区 | 国产精品理论片在线观看 | 亚洲电影一区二区 | 国产黄色免费在线观看 | av中文字幕网 | 精品视频不卡 | 97成人在线观看 | 欧美小视频在线观看 | 精品专区一区二区 | 伊人色**天天综合婷婷 | 少妇bbb搡bbbb搡bbbb′ | 日韩久久精品 | 国产精品美女视频 | 中文字幕免费成人 | 中文字幕视频观看 | 日日夜夜精品免费视频 | 欧美一二区在线 | 国产精品成人aaaaa网站 | 中文字幕 国产 一区 | 麻豆av电影 | 欧美a视频在线观看 | 国产不卡在线视频 | 国产成人久久精品亚洲 | 日日添夜夜添 | 超碰av在线免费观看 | 免费黄色av电影 | 国产专区视频 | 国产视频导航 | 久久久久国产精品一区二区 | 精品女同一区二区三区在线观看 | 欧美午夜精品久久久久 | 天天干天天想 | 日韩1级片 | 伊人婷婷 | 欧美-第1页-屁屁影院 | 国内精品福利视频 | 大胆欧美gogo免费视频一二区 | 在线视频久 | 在线高清av | 男女激情免费网站 | 国产日韩在线一区 | 久章草在线 | 久久成人综合视频 | 在线国产一区二区三区 | 中文字幕在线日亚洲9 | 国产精品 中文字幕 亚洲 欧美 | 99精品视频在线播放观看 | 九九免费在线观看视频 | 国产 欧美 日产久久 | 中文av字幕在线观看 | 日韩精品久久久免费观看夜色 | 日本h视频在线观看 | 黄色国产区 | 免费在线观看视频a | 国产69精品久久99不卡的观看体验 | 五月婷网站 | 这里只有精品视频在线观看 | 欧美性爽爽| 特级a老妇做爰全过程 | 免费在线观看成年人视频 | 日日爽夜夜操 | 亚洲午夜激情网 | 狠狠五月婷婷 | 精品国产伦一区二区三区观看方式 | 2020天天干夜夜爽 | 久草热久草视频 | 国产午夜三级一区二区三 | 狠狠干在线 | 亚洲欧美视频在线 | av中文字幕网站 | 日韩91在线 | 亚洲免费视频观看 | 天天色综合三 | 欧美日韩久久 | 国产在线污 | 欧美一级电影 | 中文字幕一区二区三区四区久久 | 亚洲午夜精品一区 | 激情综合网婷婷 | 91在线日韩 | 中文字幕在线免费观看 | 久久黄色影院 | 一本色道久久综合亚洲二区三区 | 久久久久久久久免费 | 欧美专区国产专区 | 国产91亚洲| 色婷婷婷| 91九色网站 | 国产成人中文字幕 | 亚洲国产精品一区二区久久hs | 97色婷婷成人综合在线观看 | 911久久 | 午夜久久视频 | 99性视频| 98涩涩国产露脸精品国产网 | 免费瑟瑟网站 | 伊人宗合网 | 久久久久国产成人免费精品免费 | 国产在线视频不卡 | 西西人体www444 | 日韩高清免费电影 | 精品产品国产在线不卡 | 国产91精品看黄网站在线观看动漫 | 日本三级久久 | 91夜夜夜| 国产黄色片一级三级 | 国产精品毛片久久蜜 | 色狠狠婷婷 | 综合成人在线 | 深爱五月激情网 | 99久久久国产精品免费观看 | 天天操天天舔天天爽 | 女人高潮一级片 | 狠狠久久伊人 | 亚洲专区 国产精品 | 99精品热视频只有精品10 | 69热国产视频 | 国产精品成人久久久 | 五月亚洲婷婷 | 99电影 | 婷婷丁香av | 国产精品久久久久免费a∨ 欧美一级性生活片 | av中文字幕网址 | 色.www| 免费看十八岁美女 | 久久久久国产精品免费 | 久久国产午夜精品理论片最新版本 | 日日夜夜精品视频 | 日韩一级黄色av | 国产爽妇网 | 天天插天天操天天干 | 亚洲爱av| 国产精品一区二区麻豆 | 97香蕉视频| 91在线中文| 国产三级视频在线 | 久久久国产一区 | 日韩成人免费电影 | 99精品免费久久久久久日本 | 成人小视频在线播放 | 超碰午夜| 色婷婷福利视频 | 九九久久精品 | 久久久久女教师免费一区 | 亚洲理论片在线观看 | 久久婷婷一区二区三区 | 五月天视频网站 | 国产精品亚洲精品 | 香蕉在线视频播放网站 | 国产视频91在线 | 国产成人一区二区啪在线观看 | 中文字幕超清在线免费 | 黄色影院在线免费观看 | 韩国三级在线一区 | 精品国产成人在线 | 毛片美女网站 | 在线a人片免费观看视频 | 国产精品99页 | 日女人免费视频 | 日本精品午夜 | 国产玖玖在线 | 日韩经典一区二区三区 | 99久久99久久精品国产片果冰 | 91看毛片 | 久草视频精品 | 人人干人人做 | 97视频亚洲| 在线观看黄色小视频 | 美腿丝袜av| 国产精品99蜜臀久久不卡二区 | av大片免费 | 久久久久久久久久影视 | 91免费黄视频 | 人人爽人人看 |