日韩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列子的全部內容,希望文章能夠幫你解決所遇到的問題。

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

97色在线观看免费视频 | 成年人网站免费观看 | 亚洲高清免费在线 | 最近中文字幕完整高清 | 国产成人一区二区三区在线观看 | 午夜久操 | 久久精品亚洲一区二区三区观看模式 | av 在线观看 | 亚洲黄色a| 国产精品九九久久久久久久 | 色综合久久88色综合天天免费 | 色五月色开心色婷婷色丁香 | 亚洲在线视频观看 | 狠狠狠狠狠狠狠 | 久草网免费| 日批在线看| 日日操狠狠干 | 日本黄区免费视频观看 | 美女久久网站 | 欧美色综合天天久久综合精品 | 亚洲精品自拍 | 久久资源总站 | 91视频链接 | 日韩视频在线不卡 | 亚洲精品在线视频播放 | 久草免费资源 | 国产无遮挡又黄又爽在线观看 | 国产a国产| 91x色| 超级碰碰免费视频 | 久久精品三级 | 久久久wwww| 久草精品视频 | 中文字幕一区二区在线观看 | 成人网页在线免费观看 | 在线综合 亚洲 欧美在线视频 | 五月婷婷六月丁香在线观看 | 成人免费网站在线观看 | 97在线免费观看视频 | 国产精品久久9 | 久久久久国产一区二区 | 国产在线一卡 | 美女视频a美女大全免费下载蜜臀 | 成人黄色电影在线观看 | 成人av电影免费观看 | 亚洲成人精品av | 三级性生活视频 | 久久精品韩国 | 韩国在线视频一区 | 亚洲高清网站 | 六月丁香在线观看 | 国产精品国内免费一区二区三区 | 久久激情五月激情 | 亚洲成人午夜在线 | 中文字幕成人在线观看 | sesese图片| 婷婷丁香av | 中文视频在线 | 亚洲成人免费观看 | 免费看的黄色片 | 91中文在线视频 | 免费看日韩 | 成人免费91| 日韩久久一区二区 | 成人黄色电影免费观看 | 国产精品久久久久永久免费观看 | 2022久久国产露脸精品国产 | 亚洲欧美日韩在线一区二区 | 国产婷婷色 | 激情五月综合 | 亚洲国产大片 | 国产99色| 九热在线| 在线国产小视频 | 日本久热 | 久久另类小说 | 最近中文字幕高清字幕免费mv | 国产麻豆精品传媒av国产下载 | 五月婷婷视频在线 | 免费国产在线视频 | 日韩二区三区 | 17婷婷久久www | 91视频在线免费 | 婷婷丁香激情五月 | 最近2019中文免费高清视频观看www99 | 91大神免费视频 | 成人免费网视频 | 91香蕉视频720p | 日韩免费视频 | 夜夜高潮夜夜爽国产伦精品 | 国产精品久久久久久69 | 久久成人资源 | 亚洲精选视频在线 | 精品视频在线免费观看 | 波多野结衣视频一区二区 | 精品无人国产偷自产在线 | 国产成人精品一区二区三区在线观看 | 欧美日韩国产免费视频 | 日韩久久电影 | 91久久久久久久一区二区 | 999久久久国产精品 高清av免费观看 | 欧洲在线免费视频 | a级国产乱理伦片在线观看 亚洲3级 | 黄色1级大片 | 97色免费视频 | 欧美精品v国产精品v日韩精品 | 日本天天操 | 国产中文字幕视频在线 | 99热高清 | 在线视频欧美亚洲 | 韩国视频一区二区三区 | 亚洲狠狠操 | 国产成人一区二区啪在线观看 | 亚洲区另类春色综合小说 | 精品国产乱子伦一区二区 | 成人97人人超碰人人99 | 国产1区在线 | 久久视频在线 | 99超碰在线观看 | 黄色国产区 | 国产成人av网址 | 亚洲国产精品视频在线观看 | 亚洲欧美在线观看视频 | 国产精品淫 | 在线播放视频一区 | 成人黄色电影在线 | 亚洲精品视频偷拍 | 精品电影一区二区 | 国产大片免费久久 | 午夜美女av | 国产在线国偷精品产拍免费yy | 国产精品午夜久久 | 日韩视频一 | 97人人澡人人添人人爽超碰 | 国产精品伦一区二区三区视频 | 国产网红在线观看 | 国产剧在线观看片 | 成年人视频在线免费观看 | 精品久久综合 | 欧美精品久久久久久久久免 | 97电影院网 | 色婷婷激情网 | 国产精品入口a级 | 三级动图 | 一区二区三区观看 | 国产精品成人免费 | 日韩中文字幕视频在线观看 | 99精品视频免费看 | 国产一区二区不卡在线 | 国产高清不卡av | 久久久久国产精品免费网站 | 欧美精品在线视频 | 黄网av在线 | 亚洲免费资源 | 亚洲欧美日韩一区二区三区在线观看 | 久久免费久久 | 久久综合网色—综合色88 | 在线va视频| 久草五月 | 日韩精品欧美精品 | av千婊在线免费观看 | 久久国产精品久久w女人spa | 亚洲最新av在线网址 | 91精品啪在线观看国产 | 精品久久亚洲 | 美女网站视频久久 | 欧美国产日韩久久 | 日韩高清一区 | 看片网站黄 | 日韩字幕在线 | 久久精品国亚洲 | 久久少妇av | 人人干人人做 | 色综合中文字幕 | 日日夜夜天天久久 | 四虎伊人 | 亚洲国产三级在线 | 香蕉97视频观看在线观看 | 婷婷国产一区二区三区 | 国产无限资源在线观看 | 黄色字幕网 | 精品视频免费在线 | 国产一级黄大片 | 深爱激情开心 | 久久久久久久久久伊人 | 国产一级黄 | 日韩中文幕| 国产91电影在线观看 | 免费一级片视频 | 天天做日日做天天爽视频免费 | 久久久久久看片 | 国产美女精品 | 成人亚洲精品国产www | 天天射天天干天天操 | 91成人短视频在线观看 | 中文字幕免费观看全部电影 | 国产午夜精品理论片在线 | 一本一本久久a久久精品牛牛影视 | 久久综合五月天婷婷伊人 | 精品亚洲va在线va天堂资源站 | 色网站国产精品 | 久久久久国产精品一区二区 | 91色视频 | 国产丝袜制服在线 | 中文字幕制服丝袜av久久 | 久久99爱视频 | 久久激情视频 久久 | 看av免费网站 | 99久久精品国产毛片 | 一区二区三区在线影院 | 国产一区电影在线观看 | 亚洲黄色在线 | 久久国产精品久久精品 | 免费成人av在线看 | 成人久久精品 | 日日干日日操 | 亚洲天天做 | 国产亚洲精品久久久久久网站 | 国产精品久久久久久久久久妇女 | 国产又粗又猛又爽又黄的视频免费 | 国产色小视频 | 91看片淫黄大片在线播放 | www.五月婷 | 最近免费中文字幕 | 日韩动漫免费观看高清完整版在线观看 | 久久精品一区二区 | 视频在线一区 | 国产精品久久久久久久久免费看 | 999抗病毒口服液 | 日韩免费视频线观看 | 99精品成人| 香蕉视频一级 | 美女福利视频一区二区 | 欧美在线久久 | 少妇bbw揉bbb欧美 | 91精品国自产拍天天拍 | 精品一二三四在线 | 18久久久久 | 国产一区二区午夜 | 国产亚洲精品免费 | 久久婷亚洲五月一区天天躁 | 国产精品视频地址 | 五月婷婷综合激情网 | 国产一二区免费视频 | 99久久综合国产精品二区 | 久久伊人八月婷婷综合激情 | 黄色大片日本免费大片 | 日韩精品一区二区三区免费观看视频 | 五月天亚洲婷婷 | 国产精品ssss在线亚洲 | 久草视频免费在线观看 | 91精彩视频在线观看 | 激情五月av| 美女网站色免费 | 日韩三级.com | 精品91| 最近最新mv字幕免费观看 | 欧美一区日韩一区 | 欧美激情视频在线观看免费 | 色多多视频在线 | 国产福利专区 | 国产私拍在线 | 521色香蕉网站在线观看 | 亚洲2019精品 | 亚洲午夜av电影 | 亚洲高清在线观看视频 | 91福利视频一区 | 色爱成人网 | 久久免费国产视频 | 超碰在线97免费 | 欧美夫妻生活视频 | 黄色大片视频网站 | 国产一区二区精品91 | 日韩视频在线不卡 | 久久久国产一区二区三区 | 久久黄色免费视频 | 97色资源 | 久久久久久久久久久久99 | 缴情综合网五月天 | 99av国产精品欲麻豆 | 亚洲永久精品视频 | 夜夜操天天干 | 久亚洲精品| 在线免费观看羞羞视频 | 国产福利精品在线观看 | 久久久精品日本 | 天天爱天天爽 | 特级黄录像视频 | 国产在线中文 | 美女视频永久黄网站免费观看国产 | 国产成人91 | 天天干天天干天天干天天干天天干天天干 | 国产精品一区二区果冻传媒 | 中文字幕在线观看视频网站 | 精品国产日本 | 久久电影网站中文字幕 | 天天干,天天操,天天射 | 在线播放日韩 | 91精品国产高清自在线观看 | 奇米影视8888在线观看大全免费 | 日日夜夜爱 | 久久久久免费观看 | 国产精品毛片一区二区三区 | 日韩资源在线观看 | 91人人爽久久涩噜噜噜 | 999久久久欧美日韩黑人 | 天天天色综合 | 亚洲动漫在线观看 | 永久免费的av电影 | 欧美精品一区二区三区一线天视频 | a v在线观看| 美腿丝袜av| 色就色,综合激情 | 国产精品嫩草影视久久久 | 久在线 | 天天射,天天干 | 天天综合狠狠精品 | 国产一区高清在线 | 在线视频精品播放 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 九九热在线观看视频 | 麻豆一级视频 | 色av婷婷| 久久99亚洲精品久久久久 | 国产污视频在线观看 | 免费看毛片网站 | 日日夜夜人人天天 | 99久久精品国产网站 | 国产99区 | 精品久久一区 | 精品亚洲午夜久久久久91 | 日本中文字幕视频 | 久久久国产精品一区二区三区 | 亚洲精品久久久久58 | 亚洲成人黄| 中文字幕高清视频 | 国产午夜三级一区二区三桃花影视 | 日韩亚洲国产中文字幕 | 亚洲黄色免费电影 | 2022中文字幕在线观看 | 黄色三级视频片 | 中文字幕在线观看av | 午夜色性片 | 日韩在线免费小视频 | 91精品视频免费在线观看 | 国产欧美日韩视频 | 久久99网站| 日韩欧美网站 | 欧美激情精品久久 | 96视频免费在线观看 | 国产精品久久中文字幕 | www.xxx.性狂虐 | 亚洲黄色在线 | 国产免费作爱视频 | wwwwww黄| 18+视频网站链接 | 99成人在线视频 | 有码视频在线观看 | 伊人伊成久久人综合网小说 | 精品国偷自产在线 | www.亚洲视频.com | 国产999精品久久久久久麻豆 | 成人久久精品视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 中文字幕日韩国产 | 婷婷性综合 | 国产精品每日更新 | 九色激情网 | 一本—道久久a久久精品蜜桃 | 中文网丁香综合网 | 五月婷婷另类国产 | 国产 欧美 日本 | 91桃色免费视频 | 免费黄色小网站 | 一区二区三区视频网站 | 国产成人精品亚洲日本在线观看 | 久草久 | 91视频麻豆视频 | 久久亚洲福利视频 | 久久免费激情视频 | 天天曰天天射 | 四虎永久免费在线观看 | 久久在草 | 日本字幕网 | 久久免费福利视频 | 黄网站app在线观看免费视频 | 国产精品视频你懂的 | 精品一区免费 | 免费一级片在线 | 日韩av男人的天堂 | av中文字幕网址 | 亚洲国产高清在线观看视频 | 国产高清网站 | 国产成人333kkk | 国外调教视频网站 | 亚洲精选视频免费看 | 99精品热视频只有精品10 | 欧美日韩性生活 | 高清色免费 | 黄色网在线免费观看 | 少妇按摩av| 久久久久综合视频 | 日韩欧美一区二区三区免费观看 | 香蕉网在线播放 | 欧美日韩中文国产 | 成人av在线观 | 99色在线观看视频 | 最近中文国产在线视频 | 亚洲国产黄色片 | 久久开心激情 | 在线观看黄色 | 国产色视频一区二区三区qq号 | 成人18视频 | 在线视频 精品 | 亚洲日本黄色 | 婷婷色 亚洲 | 日韩在线观看精品 | 91桃色国产在线播放 | 91高清在线 | 麻豆高清免费国产一区 | 国产在线播放一区二区 | 国产乱对白刺激视频不卡 | 国产最新福利 | 四虎影视精品成人 | 国产精品欧美精品 | 色99久久| 97激情影院| 四虎在线观看精品视频 | 99精品视频免费观看视频 | 亚洲综合视频在线观看 | 99久久综合狠狠综合久久 | 正在播放国产一区 | 国产第一福利 | 婷婷激情5月天 | 国内免费久久久久久久久久久 | 99视频一区二区 | 超碰在97 | 久久av不卡 | 国产精品九九九九九 | 色丁香综合 | 特黄色大片 | 人人藻人人澡人人爽 | av黄色影院| 中文资源在线观看 | 日韩高清在线观看 | 四虎国产精品免费 | 国产九九精品 | 日韩试看 | 二区三区中文字幕 | 国产99中文字幕 | 国产精品高清在线观看 | 81国产精品久久久久久久久久 | 国产视频综合在线 | 91成人精品观看 | 六月天综合网 | 伊人色综合久久天天网 | av福利在线播放 | 性色va| 美女在线观看av | 久草在线免费播放 | 在线免费看黄网站 | 精品电影一区二区 | 日韩深夜在线观看 | 国产色婷婷在线 | a一片一级 | 91| 麻豆国产露脸在线观看 | 国产国产人免费人成免费视频 | 99热精品在线观看 | 少妇视频一区 | 国产视频在线观看一区 | 字幕网av | 日韩午夜电影 | 国产精品久久网 | 福利片免费看 | 婷婷去俺也去六月色 | 中文字幕在线播放日韩 | 国产精品手机视频 | 国产精品久久久久久久久久久久午 | 久久夜色电影 | 久久小视频 | 成年人免费在线观看网站 | 少妇bbb好爽 | www.夜色.com| 亚洲一级二级 | 免费h漫在线观看 | 麻豆一区在线观看 | 亚洲日b视频 | www.久久色| 精品嫩模福利一区二区蜜臀 | 久久亚洲福利视频 | 国产精品入口麻豆 | 亚洲欧美在线视频免费 | 91久久精品日日躁夜夜躁国产 | av在线短片 | 男女精品久久 | 一区二区av | 91av蜜桃 | 91九色在线视频观看 | 成人免费视频网站在线观看 | 精品v亚洲v欧美v高清v | 日韩欧美黄色网址 | 欧美激情精品久久久久 | 97超碰在线久草超碰在线观看 | 日韩性片 | 九九热有精品 | 91福利区一区二区三区 | 777视频在线观看 | 亚洲午夜久久久综合37日本 | 国产麻豆电影在线观看 | 亚洲精品福利在线观看 | 人人澡视频 | 高清在线观看av | 色久av| 少妇激情久久 | 五月天色丁香 | 亚洲aⅴ一区二区三区 | 91在线视频一区 | 亚洲一区不卡视频 | 欧美精品在线一区 | 狠狠色狠狠色综合日日92 | 特片网久久 | 看av在线 | 午夜精品福利一区二区三区蜜桃 | 国产精品青草综合久久久久99 | 久久高清精品 | 婷婷色吧 | 欧美不卡视频在线 | 国产高清视频在线播放一区 | 成全免费观看视频 | 久操免费视频 | 狠狠狠综合| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 日本黄网站| 99热在线免费观看 | 久草视频在线免费播放 | 在线日韩精品视频 | 亚洲资源视频 | 欧美人人爱 | 三级黄色网址 | 午夜在线看 | 精品一区二区在线免费观看 | 精品国产免费av | av免费在线网站 | 色视频在线免费 | 精品国产三级 | 天天躁天天躁天天躁婷 | 免费看一级一片 | 久久久在线免费观看 | 亚洲日日夜夜 | 91热视频 | 日韩一二区在线 | 99精品免费久久久久久久久日本 | 九热精品| 丁香六月天婷婷 | 精品中文字幕在线 | 182午夜在线观看 | www.久久免费视频 | 黄色影院在线免费观看 | 亚洲精品88欧美一区二区 | 成人av网站在线播放 | 99re国产 | 区一区二区三在线观看 | 日韩欧美91| 国产一区二区高清不卡 | 日韩精品中文字幕久久臀 | 91精品在线观看视频 | 色亚洲激情 | 99精品免费在线观看 | 美女网站视频免费黄 | 九九九九精品 | 日韩精品国产一区 | 91 在线视频播放 | 中文字幕丝袜美腿 | 中文字幕日韩一区二区三区不卡 | 日日摸日日添夜夜爽97 | 日韩精品中文字幕在线播放 | 日本爽妇网 | 99在线视频网站 | 亚色视频在线观看 | 婷婷四房综合激情五月 | 亚洲成a人片在线观看网站口工 | 久久99国产综合精品免费 | 日韩美av在线 | 亚洲精品在线二区 | 国产一及片 | 夜添久久精品亚洲国产精品 | 婷婷综合电影 | 天天色天天综合 | 国产精品专区h在线观看 | 欧美一级片在线免费观看 | 久久精品国产亚洲 | 国产精品美女在线观看 | 在线免费视| 婷婷色狠狠 | 国产黄色片在线免费观看 | 国产精品免费人成网站 | 天天综合色网 | 色综合天天色 | 国产 视频 久久 | 久久精品中文字幕一区二区三区 | 精品国产自在精品国产精野外直播 | 99久久精品国产亚洲 | 婷婷香蕉 | 91正在播放 | 九九九九精品 | 在线观看91网站 | 插久久| 亚洲一区不卡视频 | 91精品久久久久久综合五月天 | 四虎国产永久在线精品 | 久久久黄视频 | 懂色av懂色av粉嫩av分享吧 | 久久人人爽人人片 | 婷婷色中文 | 欧美一级性 | 成人精品视频久久久久 | 久色网 | 国产va饥渴难耐女保洁员在线观看 | 久草精品网 | 天天摸夜夜添 | 天天草av| 手机看片| 激情欧美xxxx | 国产亚洲综合在线 | 久久精品一区二区三区国产主播 | 久久新视频| 青青河边草观看完整版高清 | 国产又粗又猛又黄又爽视频 | 视频三区 | 久久综合天天 | 探花视频免费观看 | 成人sm另类专区 | 在线观看久久久久久 | 亚洲综合最新在线 | 日韩日韩日韩日韩 | 麻豆影视网 | 亚洲精品久久久久久久不卡四虎 | 国产精品毛片一区视频播不卡 | 又黄又爽又湿又无遮挡的在线视频 | 一区二区精品在线视频 | 91精品国产高清自在线观看 | 99草视频| 日韩欧美一区二区在线播放 | 日韩综合视频在线观看 | 黄免费在线观看 | 在线小视频你懂的 | 国产一二三区av | 伊人资源站 | 美国人与动物xxxx | 国产色道 | 香蕉视频在线观看免费 | 日本不卡久久 | 欧美在线观看禁18 | 亚洲欧美在线综合 | 最新亚洲视频 | 欧美日韩国产精品一区 | 久久久在线免费观看 | 亚洲国产97在线精品一区 | 97精品国产 | 亚洲免费在线播放视频 | 成人h在线 | 久久国产精品免费一区二区三区 | 亚洲成熟女人毛片在线 | 成人动漫精品一区二区 | 九色精品免费永久在线 | 免费中文字幕视频 | 日韩av在线看 | 国产日韩精品在线 | 色成人亚洲 | 丁香婷婷网 | 97在线视频免费观看 | 五月婷婷丁香在线观看 | 久精品视频 | 日韩在线观看第一页 | 综合激情婷婷 | 韩国av免费在线 | 欧美国产精品久久久久久免费 | 精品国产网址 | 国产成人福利在线 | 视频成人永久免费视频 | 伊人五月天综合 | 国产视频精品在线 | 国产一级黄色免费看 | 亚洲自拍偷拍色图 | 中文字幕av电影下载 | 久久av免费电影 | 久久99精品国产99久久 | 欧美精品乱码久久久久 | 超碰伊人网 | 国产小视频在线免费观看 | 91麻豆精品久久久久久 | 国产99免费 | 国产精品成人一区二区三区吃奶 | 综合激情av | 免费福利片 | 欧美精品久久久久久久久久久 | 久久a热6| 日韩中文字幕a | 久久久福利影院 | 五月天中文在线 | 欧洲精品视频一区二区 | 国产视频久久久 | 精品96久久久久久中文字幕无 | 欧美一区二区三区在线播放 | 国产福利专区 | 欧美国产精品一区二区 | 日韩精品影视 | 免费观看www视频 | a级国产毛片 | 91九色porny在线 | 亚洲精品白浆高清久久久久久 | 欧美性猛片, | 午夜影院日本 | 久久久久国产成人精品亚洲午夜 | 久久草视频| 久久人人插| www.午夜色.com | 久久精品国产99国产 | 国产123av | 热久久国产 | 精品国产成人av在线免 | 国产精品人人做人人爽人人添 | 欧洲精品久久久久毛片完整版 | 精壮的侍卫呻吟h | 成人啊 v | 91成人精品视频 | 欧洲一区二区在线观看 | 免费亚洲黄色 | 揉bbb玩bbb少妇bbb | 97视频精品| 伊人射 | 最新国产在线视频 | 四虎永久网站 | 一区二区三区四区在线 | www日韩| 国产原创在线 | 五月天伊人网 | 91视频麻豆视频 | 国产成人精品午夜在线播放 | 日日摸日日添夜夜爽97 | 日日干,天天干 | 日韩精品一区二区在线观看 | 久久99久久99精品免视看婷婷 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产精品福利小视频 | 91成人免费视频 | 国产黄色精品在线 | 国产黄a三级三级 | 在线99视频| 久久精品免费电影 | 久久免费观看视频 | 黄色三级在线看 | 欧美色久 | 91网址在线 | 91福利社区在线观看 | 亚洲一二区精品 | 色国产精品| 国产不卡免费 | 国产99区 | 西西www4444大胆在线 | 日韩天堂在线观看 | 亚洲高清精品在线 | 国产亚洲精品久久久久久久久久 | 中文字幕在线观看视频网站 | 五月天综合网站 | 欧美国产日韩一区二区三区 | 亚洲波多野结衣 | 天堂网av 在线 | 成人小视频免费在线观看 | 一区二区三区在线视频111 | 久久国产精品一区二区 | 探花视频免费观看 | 永久av免费在线观看 | 狠狠狠狠狠狠干 | 色香蕉网 | 国产精品亚洲片在线播放 | 91九色在线视频观看 | 日韩小视频 | 91视频传媒| 日韩欧美一区二区不卡 | 亚洲精品啊啊啊 | 91亚洲精品在线 | 国内精品久久久久久久久久久久 | 欧美99热 | 婷婷丁香九月 | 中文字幕在线观看完整版电影 | 蜜臀av性久久久久蜜臀av | 日韩深夜在线观看 | 国产精品一区二区三区电影 | 在线观看视频免费大全 | 精品一区二区三区在线播放 | 午夜精品久久久久久久99 | 亚洲一区网站 | 国产在线不卡视频 | 久久成电影 | 久久看毛片| 欧美精品免费一区二区 | 婷婷在线免费 | 婷婷新五月 | 在线看岛国av | 在线探花 | 在线观看小视频 | 麻豆传媒在线免费看 | 亚洲九九影院 | 四虎国产精品免费观看视频优播 | 91精品天码美女少妇 | 99热99re6国产在线播放 | 超碰在线1 | 婷婷亚洲综合五月天小说 | 免费黄色a网站 | 最近最新中文字幕 | 不卡国产视频 | 亚洲精品免费在线播放 | 三级免费黄 | 亚洲网站在线 | 亚洲欧美日韩精品久久奇米一区 | 69国产成人综合久久精品欧美 | avav片 | 国产精品va在线观看入 | 精品国产99国产精品 | av免费电影在线 | 高清不卡毛片 | 丁香六月在线 | 在线精品在线 | 韩日精品在线 | 国语麻豆 | 国产精品视频免费在线观看 | 狠狠干我| 日本中文字幕在线电影 | 国色天香永久免费 | 国产精品久久久久久一区二区 | 亚洲国产中文字幕在线视频综合 | 精品黄色片 | 亚洲欧美视频在线观看 | 97超碰在线久草超碰在线观看 | www.久久婷婷 | 色网站在线看 | 国产精品久久久久久婷婷天堂 | 国产中文字幕网 | 国产另类av | 欧美午夜性 | 欧美在线日韩在线 | 国产精品成人久久久久 | 伊在线视频 | 久久国产精彩视频 | 精品国内 | 久久国产精品偷 | 免费又黄又爽视频 | 国产剧情一区二区在线观看 | 在线观看视频黄色 | 超碰人人舔 | 最近中文字幕久久 | 久草视频免费播放 | 国产高清在线看 | 日日夜夜精品免费视频 | 色全色在线资源网 | 一区二区三区在线免费 | 久久精品精品 | 91精品啪啪| 天天鲁天天干天天射 | 久久精品美女视频网站 | 手机av电影在线观看 | 日韩高清免费在线观看 | 亚洲国产精品电影 | 成人一区二区在线 | 欧美a影视| 精品久久久免费视频 | 美女视频久久 | 色婷婷电影 | 激情久久综合 | 成人av电影免费在线观看 | 狠狠操操网| 免费高清男女打扑克视频 | 91看片淫黄大片一级在线观看 | 国产成人精品免费在线观看 | 亚洲精品永久免费视频 | 999久久久国产精品 高清av免费观看 | 99久久精品国产网站 | 久久高视频 | 日本精品在线看 | 新版资源中文在线观看 | 伊人久久精品久久亚洲一区 | 九九在线高清精品视频 | 亚洲视频分类 | 97在线观视频免费观看 | 日本在线中文 | 白丝av免费观看 | 欧美在线99 | 亚洲成人高清在线 | 成人h视频在线播放 | 国产在线a| 国产精品视频不卡 | 黄网av在线 | 国产亚洲精品成人 | 久久免费在线 | 亚洲一区视频在线播放 | 精品美女在线视频 | 亚洲激情六月 | 最新av电影网站 | av不卡在线看 | 欧美精品久久久久久久久久丰满 | 久久久亚洲麻豆日韩精品一区三区 | av成人免费网站 | 高清有码中文字幕 | av免费看电影 | 天天综合导航 | 久久综合中文字幕 | 亚洲精品美女免费 | 激情五月色播五月 | 久久99久久99精品中文字幕 | 欧美黑人xxxx猛性大交 | 久久久国内精品 | 天堂va在线观看 | 久久久久北条麻妃免费看 | 亚洲综合色丁香婷婷六月图片 | 国产最新在线观看 | av福利在线导航 | 在线观看一二三区 | 青春草免费视频 | 夜夜躁日日躁狠狠久久88av | 91亚洲狠狠婷婷综合久久久 | 天天摸天天干天天操天天射 | 成人宗合网 | 日韩av电影手机在线观看 | 免费日韩电影 | 久久久久免费精品视频 | 欧美国产91 | 欧美国产日韩一区二区三区 | 欧美日韩激情视频8区 | 一区二区三区日韩在线观看 | 97成人精品视频在线观看 | 久久久久成人精品亚洲国产 | 天天干天天操人体 | 狠狠狠狠狠狠天天爱 | 亚洲天堂视频在线 | 国产91精品欧美 | 超碰在线观看av.com | 在线观看aa | 伊人亚洲综合 | 97超在线视频 | 91精品国产91久久久久 | 亚洲电影自拍 | 国产香蕉97碰碰久久人人 | 精品一二三四在线 | a级国产乱理论片在线观看 特级毛片在线观看 | 午夜精品一区二区三区在线播放 | 久久一久久 | 亚洲一级片在线观看 | 久久电影日韩 | 国产亚洲久久 | 国语精品久久 | 亚洲精品久久久久999中文字幕 | 免费看一级黄色大全 | 黄色一级在线视频 | 亚洲精品国产精品久久99热 | 在线观看激情av | 欧美a级成人淫片免费看 | 婷婷视频导航 | 99久久久成人国产精品 | 在线观看不卡视频 | 夜夜爽www | 欧美日韩一区二区三区在线观看视频 | 国产精品精品久久久久久 | 久草精品视频在线观看 | 欧美人zozo | 久久精品黄 | 九九九电影免费看 | 97久久精品午夜一区二区 | av网站在线观看免费 | 久热免费在线观看 | 亚洲 中文字幕av | 久久国产精品久久精品 | 国产精品 日韩 欧美 | 美女视频网 | 96亚洲精品久久久蜜桃 | 久久国产精品99久久久久久老狼 | 久久久综合九色合综国产精品 | 四虎最新域名 | 天天操天天干天天爽 | 99久久精品无码一区二区毛片 | 99视频在线免费看 | 国产电影黄色av | jizzjizzjizz亚洲 | 免费在线观看日韩 | 91网在线观看 | 人人射 | 中文字幕在线国产精品 | 欧美福利在线播放 | 天天干天天操av | 久草国产在线观看 | 亚洲黄色激情小说 | 国产成人精品综合久久久久99 | 日韩精品免费一区二区在线观看 | 日韩极品视频在线观看 | 久久久999| 亚洲成人一区 | 久久视频热|