計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用_第1頁
計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用_第2頁
計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用_第3頁
計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用_第4頁
計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)視覺:視頻分析:深度學(xué)習(xí)在視頻分析中的應(yīng)用1計(jì)算機(jī)視覺基礎(chǔ)1.1圖像處理與特征提取1.1.1原理圖像處理是計(jì)算機(jī)視覺中的基礎(chǔ)步驟,涉及對(duì)圖像進(jìn)行預(yù)處理,如調(diào)整大小、灰度化、濾波等,以去除噪聲并增強(qiáng)圖像特征。特征提取是從圖像中識(shí)別出對(duì)后續(xù)處理(如分類、識(shí)別)有幫助的關(guān)鍵信息的過程。常見的特征包括邊緣、紋理、顏色直方圖和形狀等。1.1.2內(nèi)容圖像預(yù)處理:包括圖像縮放、灰度化、直方圖均衡化等。特征提取方法:如SIFT、SURF、HOG等。示例:使用OpenCV進(jìn)行圖像預(yù)處理和特征提取importcv2

importnumpyasnp

#讀取圖像

img=cv2.imread('example.jpg')

#調(diào)整圖像大小

resized_img=cv2.resize(img,(500,500))

#轉(zhuǎn)換為灰度圖像

gray_img=cv2.cvtColor(resized_img,cv2.COLOR_BGR2GRAY)

#直方圖均衡化

equalized_img=cv2.equalizeHist(gray_img)

#特征提?。菏褂肧IFT

sift=cv2.SIFT_create()

keypoints,descriptors=sift.detectAndCompute(equalized_img,None)

#顯示關(guān)鍵點(diǎn)

img_with_keypoints=cv2.drawKeypoints(equalized_img,keypoints,np.array([]),(0,0,255),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

cv2.imshow('SIFTKeypoints',img_with_keypoints)

cv2.waitKey(0)

cv2.destroyAllWindows()1.1.3描述上述代碼首先讀取一個(gè)圖像文件,然后進(jìn)行預(yù)處理,包括調(diào)整圖像大小、轉(zhuǎn)換為灰度圖像和直方圖均衡化。接下來,使用SIFT算法提取圖像特征,最后在圖像上繪制出這些關(guān)鍵點(diǎn)并顯示。1.2卷積神經(jīng)網(wǎng)絡(luò)(CNN)簡(jiǎn)介1.2.1原理卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種深度學(xué)習(xí)模型,特別適用于處理具有網(wǎng)格結(jié)構(gòu)的數(shù)據(jù),如圖像。CNN通過卷積層、池化層和全連接層的組合,自動(dòng)學(xué)習(xí)圖像的層次特征,從而實(shí)現(xiàn)圖像分類、目標(biāo)檢測(cè)等任務(wù)。1.2.2內(nèi)容卷積層:使用可學(xué)習(xí)的濾波器對(duì)輸入進(jìn)行卷積操作,提取特征。池化層:減少特征圖的尺寸,降低計(jì)算復(fù)雜度,同時(shí)保留重要信息。全連接層:將卷積層和池化層提取的特征進(jìn)行分類或回歸。示例:使用Keras構(gòu)建一個(gè)簡(jiǎn)單的CNN模型fromkeras.modelsimportSequential

fromkeras.layersimportConv2D,MaxPooling2D,Flatten,Dense

#創(chuàng)建模型

model=Sequential()

#添加卷積層

model.add(Conv2D(32,(3,3),activation='relu',input_shape=(150,150,3)))

#添加池化層

model.add(MaxPooling2D((2,2)))

#添加第二個(gè)卷積層

model.add(Conv2D(64,(3,3),activation='relu'))

#添加第二個(gè)池化層

model.add(MaxPooling2D((2,2)))

#添加全連接層

model.add(Flatten())

model.add(Dense(128,activation='relu'))

model.add(Dense(1,activation='sigmoid'))

#編譯模型

pile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])1.2.3描述此代碼示例展示了如何使用Keras庫(kù)構(gòu)建一個(gè)簡(jiǎn)單的CNN模型。模型包含兩個(gè)卷積層,用于提取圖像特征;兩個(gè)池化層,用于降低特征圖的維度;以及兩個(gè)全連接層,用于分類。模型最后被編譯,準(zhǔn)備用于訓(xùn)練。1.3目標(biāo)檢測(cè)與識(shí)別基礎(chǔ)1.3.1原理目標(biāo)檢測(cè)是在圖像中定位并識(shí)別特定對(duì)象的過程。它通常包括兩個(gè)步驟:首先,使用滑動(dòng)窗口或候選區(qū)域方法在圖像中尋找可能的對(duì)象位置;其次,使用分類器確定這些位置是否包含目標(biāo)對(duì)象。深度學(xué)習(xí)方法,如R-CNN、FastR-CNN和YOLO,通過端到端的訓(xùn)練,直接從圖像中預(yù)測(cè)對(duì)象的位置和類別。1.3.2內(nèi)容候選區(qū)域生成:如SelectiveSearch、RegionProposalNetworks等。特征提?。菏褂肅NN從候選區(qū)域中提取特征。分類與定位:使用分類器確定候選區(qū)域是否包含目標(biāo),并調(diào)整邊界框以更精確地定位目標(biāo)。示例:使用YOLO進(jìn)行目標(biāo)檢測(cè)importcv2

importnumpyasnp

#加載YOLO模型

net=cv2.dnn.readNet('yolov3.weights','yolov3.cfg')

#加載圖像

image=cv2.imread('example.jpg')

#獲取YOLO輸出層的名稱

layer_names=net.getLayerNames()

output_layers=[layer_names[i[0]-1]foriinnet.getUnconnectedOutLayers()]

#預(yù)處理圖像

blob=cv2.dnn.blobFromImage(image,0.00392,(416,416),(0,0,0),True,crop=False)

#將圖像傳遞給網(wǎng)絡(luò)

net.setInput(blob)

outs=net.forward(output_layers)

#處理網(wǎng)絡(luò)輸出

class_ids=[]

confidences=[]

boxes=[]

foroutinouts:

fordetectioninout:

scores=detection[5:]

class_id=np.argmax(scores)

confidence=scores[class_id]

ifconfidence>0.5:

#獲得邊界框的坐標(biāo)

center_x=int(detection[0]*image.shape[1])

center_y=int(detection[1]*image.shape[0])

w=int(detection[2]*image.shape[1])

h=int(detection[3]*image.shape[0])

x=int(center_x-w/2)

y=int(center_y-h/2)

boxes.append([x,y,w,h])

confidences.append(float(confidence))

class_ids.append(class_id)

#應(yīng)用非極大值抑制去除重疊的邊界框

indexes=cv2.dnn.NMSBoxes(boxes,confidences,0.5,0.4)

#在圖像上繪制檢測(cè)到的目標(biāo)

foriinrange(len(boxes)):

ifiinindexes:

x,y,w,h=boxes[i]

label=str(classes[class_ids[i]])

cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)

cv2.putText(image,label,(x,y-20),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)

cv2.imshow('YOLODetection',image)

cv2.waitKey(0)

cv2.destroyAllWindows()1.3.3描述此代碼示例展示了如何使用YOLO模型進(jìn)行目標(biāo)檢測(cè)。首先,加載預(yù)訓(xùn)練的YOLO模型和圖像。然后,預(yù)處理圖像并將其傳遞給網(wǎng)絡(luò),獲取輸出。接下來,處理網(wǎng)絡(luò)輸出,提取檢測(cè)到的目標(biāo)的類別、置信度和邊界框。最后,應(yīng)用非極大值抑制去除重疊的邊界框,并在圖像上繪制檢測(cè)到的目標(biāo)。2深度學(xué)習(xí)在視頻分析中的應(yīng)用2.1dir2.1:視頻幀間關(guān)系理解視頻幀間關(guān)系理解是視頻分析的基礎(chǔ),涉及到如何捕捉和分析視頻中連續(xù)幀之間的變化。深度學(xué)習(xí)模型,尤其是卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),在這一領(lǐng)域發(fā)揮了關(guān)鍵作用。CNN用于提取幀內(nèi)的特征,而RNN則用于理解幀間的時(shí)序關(guān)系。2.1.1示例:使用LSTM理解視頻幀間關(guān)系假設(shè)我們有一組視頻幀,每個(gè)幀是一個(gè)32x32的RGB圖像。我們將使用一個(gè)簡(jiǎn)單的LSTM模型來理解這些幀之間的關(guān)系。importnumpyasnp

importtensorflowastf

fromtensorflow.keras.modelsimportSequential

fromtensorflow.keras.layersimportLSTM,TimeDistributed,Dense

#定義模型

model=Sequential()

model.add(TimeDistributed(Conv2D(32,(3,3),activation='relu'),input_shape=(None,32,32,3)))

model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2))))

model.add(TimeDistributed(Flatten()))

model.add(LSTM(128,activation='tanh'))

model.add(Dense(10,activation='softmax'))

#編譯模型

pile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

#假設(shè)數(shù)據(jù)

X_train=np.random.rand(1000,10,32,32,3)

y_train=np.random.randint(0,10,(1000,10))

y_train=tf.keras.utils.to_categorical(y_train,num_classes=10)

#訓(xùn)練模型

model.fit(X_train,y_train,epochs=10,batch_size=32)在這個(gè)例子中,我們首先使用TimeDistributed層在每個(gè)時(shí)間步上應(yīng)用卷積操作,然后通過LSTM層捕捉幀間的時(shí)序依賴。2.2dir2.2:基于深度學(xué)習(xí)的視頻分類視頻分類是識(shí)別視頻內(nèi)容屬于哪個(gè)類別的任務(wù)。深度學(xué)習(xí)模型,如3DCNN和I3D(Inflated3DConvNet),能夠處理視頻的三維結(jié)構(gòu),即空間和時(shí)間維度。2.2.1示例:使用I3D進(jìn)行視頻分類I3D模型是一種流行的視頻分類模型,它在多個(gè)數(shù)據(jù)集上取得了優(yōu)異的性能。下面是一個(gè)使用I3D模型進(jìn)行視頻分類的簡(jiǎn)化示例。importtensorflowastf

fromtensorflow.keras.applicationsimportInceptionV3

fromtensorflow.keras.layersimportInput,TimeDistributed,LSTM,Dense

fromtensorflow.keras.modelsimportModel

#加載預(yù)訓(xùn)練的InceptionV3模型

base_model=InceptionV3(weights='imagenet',include_top=False,input_shape=(224,224,3))

#定義I3D模型

input_shape=(None,224,224,3)

input_tensor=Input(shape=input_shape)

x=TimeDistributed(base_model)(input_tensor)

x=TimeDistributed(Flatten())(x)

x=LSTM(256,return_sequences=True)(x)

x=LSTM(256)(x)

output=Dense(10,activation='softmax')(x)

#創(chuàng)建模型

model=Model(inputs=input_tensor,outputs=output)

#編譯模型

pile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

#假設(shè)數(shù)據(jù)

X_train=np.random.rand(1000,10,224,224,3)

y_train=np.random.randint(0,10,(1000,10))

y_train=tf.keras.utils.to_categorical(y_train,num_classes=10)

#訓(xùn)練模型

model.fit(X_train,y_train,epochs=10,batch_size=32)在這個(gè)例子中,我們使用預(yù)訓(xùn)練的InceptionV3模型作為基礎(chǔ),然后通過LSTM層來處理時(shí)間序列數(shù)據(jù),最后使用全連接層進(jìn)行分類。2.3dir2.3:視頻目標(biāo)檢測(cè)與跟蹤視頻目標(biāo)檢測(cè)與跟蹤是識(shí)別視頻中物體的位置并跟蹤它們?cè)谝曨l中的運(yùn)動(dòng)。深度學(xué)習(xí)模型,如YOLO(YouOnlyLookOnce)和MaskR-CNN,可以用于視頻中的目標(biāo)檢測(cè),而跟蹤則可以通過關(guān)聯(lián)檢測(cè)結(jié)果來實(shí)現(xiàn)。2.3.1示例:使用YOLO進(jìn)行視頻目標(biāo)檢測(cè)YOLO是一種實(shí)時(shí)目標(biāo)檢測(cè)算法,下面是一個(gè)使用YOLO進(jìn)行視頻目標(biāo)檢測(cè)的簡(jiǎn)化示例。importcv2

importnumpyasnp

importdarknet

#加載YOLO模型

net=darknet.load_net(b"cfg/yolov3.cfg",b"yolov3.weights",0)

meta=darknet.load_meta(b"cfg/coco.data")

#讀取視頻

video=cv2.VideoCapture("video.mp4")

whileTrue:

ret,frame=video.read()

ifnotret:

break

#使用YOLO檢測(cè)目標(biāo)

results=darknet.detect(net,meta,frame)

#在幀上繪制檢測(cè)結(jié)果

forresultinresults:

label,confidence,bbox=result

x,y,w,h=bbox

cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)

cv2.putText(frame,f"{label}:{confidence:.2f}",(x,y-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)

#顯示幀

cv2.imshow("Video",frame)

ifcv2.waitKey(1)&0xFF==ord('q'):

break

#釋放資源

video.release()

cv2.destroyAllWindows()在這個(gè)例子中,我們使用YOLO模型來檢測(cè)視頻中的目標(biāo),并在每個(gè)幀上繪制檢測(cè)結(jié)果。2.4dir2.4:動(dòng)作識(shí)別與行為分析動(dòng)作識(shí)別是識(shí)別視頻中人物的動(dòng)作,而行為分析則更進(jìn)一步,嘗試?yán)斫馊宋锏男袨槟J健I疃葘W(xué)習(xí)模型,如Two-StreamCNN和S3D(Space-TimeSqueezeNet),可以用于這些任務(wù)。2.4.1示例:使用Two-StreamCNN進(jìn)行動(dòng)作識(shí)別Two-StreamCNN是一種結(jié)合空間流和時(shí)間流的模型,用于動(dòng)作識(shí)別??臻g流處理RGB圖像,而時(shí)間流處理光流圖像。importtensorflowastf

fromtensorflow.keras.applicationsimportVGG16

fromtensorflow.keras.layersimportInput,TimeDistributed,LSTM,Dense

fromtensorflow.keras.modelsimportModel

#加載預(yù)訓(xùn)練的VGG16模型

base_model_rgb=VGG16(weights='imagenet',include_top=False,input_shape=(224,224,3))

base_model_flow=VGG16(weights='imagenet',include_top=False,input_shape=(224,224,3))

#定義Two-StreamCNN模型

input_shape_rgb=(None,224,224,3)

input_shape_flow=(None,224,224,3)

input_tensor_rgb=Input(shape=input_shape_rgb)

input_tensor_flow=Input(shape=input_shape_flow)

x_rgb=TimeDistributed(base_model_rgb)(input_tensor_rgb)

x_flow=TimeDistributed(base_model_flow)(input_tensor_flow)

x_rgb=TimeDistributed(Flatten())(x_rgb)

x_flow=TimeDistributed(Flatten())(x_flow)

x=tf.keras.layers.concatenate([x_rgb,x_flow])

x=LSTM(256,return_sequences=True)(x)

x=LSTM(256)(x)

output=Dense(10,activation='softmax')(x)

#創(chuàng)建模型

model=Model(inputs=[input_tensor_rgb,input_tensor_flow],outputs=output)

#編譯模型

pile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

#假設(shè)數(shù)據(jù)

X_train_rgb=np.random.rand(1000,10,224,224,3)

X_train_flow=np.random.rand(1000,10,224,224,3)

y_train=np.random.randint(0,10,(1000,10))

y_train=tf.keras.utils.to_categorical(y_train,num_classes=10)

#訓(xùn)練模型

model.fit([X_train_rgb,X_train_flow],y_train,epochs=10,batch_size=32)在這個(gè)例子中,我們使用兩個(gè)VGG16模型分別處理RGB圖像和光流圖像,然后通過LSTM層來處理時(shí)間序列數(shù)據(jù),最后使用全連接層進(jìn)行分類。2.5dir2.5:視頻語義分割與實(shí)例分割視頻語義分割是識(shí)別視頻中每個(gè)像素所屬的類別,而實(shí)例分割則更進(jìn)一步,識(shí)別每個(gè)像素屬于哪個(gè)具體物體。深度學(xué)習(xí)模型,如MaskR-CNN和VideoR-CNN,可以用于這些任務(wù)。2.5.1示例:使用MaskR-CNN進(jìn)行視頻語義分割MaskR-CNN是一種流行的實(shí)例分割模型,下面是一個(gè)使用MaskR-CNN進(jìn)行視頻語義分割的簡(jiǎn)化示例。importcv2

importnumpyasnp

importmrcnn.modelasmodellib

frommrcnn.configimportConfig

#定義配置

classVideoConfig(Config):

NAME="video"

GPU_COUNT=1

IMAGES_PER_GPU=1

NUM_CLASSES=1+80#COCO數(shù)據(jù)集有80個(gè)類別

#加載模型

model=modellib.MaskRCNN(mode="inference",config=VideoConfig(),model_dir="logs")

model.load_weights("mask_rcnn_coco.h5",by_name=True)

#讀取視頻

video=cv2.VideoCapture("video.mp4")

whileTrue:

ret,frame=video.read()

ifnotret:

break

#使用MaskR-CNN進(jìn)行語義分割

results=model.detect([frame],verbose=0)

r=results[0]

#在幀上繪制分割結(jié)果

mask=r['masks'][:,:,0]

frame[mask>0]=frame[mask>0]*0.5+np.array([255,0,0])*0.5

#顯示幀

cv2.imshow("Video",frame)

ifcv2.waitKey(1)&0xFF==ord('q'):

break

#釋放資源

video.release()

cv2.destroyAllWindows()在這個(gè)例子中,我們使用MaskR-CNN模型來檢測(cè)視頻中的物體,并在每個(gè)幀上繪制分割結(jié)果。2.6dir2.6:視頻生成與編輯技術(shù)視頻生成與編輯技術(shù)涉及到如何使用深度學(xué)習(xí)模型生成新的視頻或編輯現(xiàn)有視頻。GAN(GenerativeAdversarialNetworks)和VAE(VariationalAutoencoder)是常用的模型。2.6.1示例:使用GAN生成視頻GAN可以用于生成視頻,下面是一個(gè)使用GAN生成視頻的簡(jiǎn)化示例。importtensorflowastf

fromtensorflow.keras.layersimportInput,Conv3D,Conv3DTranspose,BatchNormalization,LeakyReLU,Reshape,LSTM

fromtensorflow.keras.modelsimportModel

#定義生成器模型

input_shape=(100,)

input_tensor=Input(shape=input_shape)

x=Dense(128*16*16*16)(input_tensor)

x=Reshape((16,16,16,128))(x)

x=Conv3DTranspose(64,(4,4,4),strides=(2,2,2),padding='same')(x)

x=BatchNormalization()(x)

x=LeakyReLU(alpha=0.2)(x)

x=Conv3DTranspose(32,(4,4,4),strides=(2,2,2),padding='same')(x)

x=BatchNormalization()(x)

x=LeakyReLU(alpha=0.2)(x)

x=Conv3DTranspose(3,(4,4,4),strides=(2,2,2),padding='same',activation='tanh')(x)

generator=Model(inputs=input_tensor,outputs=x)

#定義判別器模型

input_shape=(64,64,64,3)

input_tensor=Input(shape=input_shape)

x=Conv3D(32,(4,4,4),strides=(2,2,2),padding='same')(input_tensor)

x=LeakyReLU(alpha=0.2)(x)

x=Conv3D(64,(4,4,4),strides=(2,2,2),padding='same')(x)

x=LeakyReLU(alpha=0.2)(x)

x=Conv3D(128,(4,4,4),strides=(2,2,2),padding='same')(x)

x=LeakyReLU(alpha=0.2)(x)

x=Flatten()(x)

x=Dense(1,activation='sigmoid')(x)

discriminator=Model(inputs=input_tensor,outputs=x)

#定義GAN模型

input_tensor=Input(shape=(100,))

x=generator(input_tensor)

gan=Model(inputs=input_tensor,outputs=x)

#編譯模型

pile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

pile(loss='binary_crossentropy',optimizer='adam')

#假設(shè)數(shù)據(jù)

X_train=np.random.rand(1000,100)

y_train=np.random.randint(0,2,(1000,1))

#訓(xùn)練模型

forepochinrange(10):

#訓(xùn)練判別器

idx=np.random.randint(0,X_train.shape[0],32)

real_videos=np.random.rand(32,64,64,64,3)

fake_videos=generator.predict(X_train[idx])

X_d=np.concatenate([real_videos,fake_videos])

y_d=np.concatenate([np.ones((32,1)),np.zeros((32,1))])

discriminator.trainable=True

discriminator.train_on_batch(X_d,y_d)

#訓(xùn)練生成器

idx=np.random.randint(0,X_train.shape[0],32)

y_g=np.ones((32,1))

discriminator.trainable=False

gan.train_on_batch(X_train[idx],y_g)在這個(gè)例子中,我們定義了一個(gè)生成器模型和一個(gè)判別器模型,然后將它們組合成一個(gè)GAN模型。我們使用生成器模型生成新的視頻幀,并使用判別器模型來判斷這些幀是否真實(shí)。2.7dir2.7:深度學(xué)習(xí)模型在視頻分析中的優(yōu)化與部署深度學(xué)習(xí)模型在視頻分析中的優(yōu)化與部署涉及到如何提高模型的性能和效率,以及如何將模型部

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論