<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于度量學(xué)習(xí)的行人重識別(三)

          共 3251字,需瀏覽 7分鐘

           ·

          2021-07-29 18:43

          在前面的文章中,我們已經(jīng)完成了對數(shù)據(jù)的處理,以及模型的搭建,接下來就需要整合起來,進(jìn)行訓(xùn)練了。


          模型訓(xùn)練



          新建一個train.py,首先導(dǎo)入依賴:

          from  load_data import Person_Datasetfrom loss.Triplet_loss import  triplet_lossfrom models.create_model import Create_Modelfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateauimport tensorflow as tfimport tensorflow.keras as kimport randomfrom utils import detect_imageimport  matplotlib.pyplot   as pltimport numpy as np


          接著,設(shè)置參數(shù)、讀取數(shù)據(jù)、搭建模型:

          # 參數(shù)設(shè)置batch_size=64input_size=(215,90,3)epoch =100init_epoch =0train_image_path =r'E:\DataSets\DukeMTMC-reID\DukeMTMC-reID\bounding_box_train'test_image_path =r'E:\DataSets\DukeMTMC-reID\DukeMTMC-reID\query'
          # 數(shù)據(jù)讀取train_dataset=Person_Dataset(train_image_path,batch_size)# test_dataset = Person_Dataset(test_image_path,batch_size,train=False)test_dataset_2=Person_Dataset(test_image_path,batch_size=1,train=False)
          #模型搭建model,pred_model = Create_Model(inpt=input_size,num_classes=1812)# model.summary()model.compile(loss={'Embedding':triplet_loss(batch_size=batch_size), 'Softmax':"categorical_crossentropy"}, optimizer=tf.keras.optimizers.Adam(lr=1e-5), metrics={'Softmax':'acc'})


          然后,自定義一個回調(diào)函數(shù),用來在每次訓(xùn)練開始前進(jìn)行預(yù)測,并可視化預(yù)測效果:

          # 自定義回調(diào)函數(shù)class Evaluator(k.callbacks.Callback):    def __init__(self):        self.accs = []    def on_epoch_begin(self, epoch, logs=None):        for i in range(3):            plt.clf()            radmon_int = random.randint(0,test_dataset_2.__len__()-1)            image, _ = test_dataset_2.__getitem__(radmon_int)            # print(image[0].shape)            same_l1 = detect_image(image[0],image[1],model=pred_model)            diff_l2 = detect_image(image[0],image[2],model=pred_model)
          plt.subplot(1, 3, 1) plt.imshow(np.array(image[0]))
          plt.subplot(1, 3, 2) plt.imshow(np.array(image[1]))
          plt.text(-12, -12, 'same:%.3f' % same_l1, ha='center', va='bottom', fontsize=11)
          plt.subplot(1, 3, 3) plt.imshow(np.array(image[2])) plt.text(-24, -12, 'diff:%.3f' % diff_l2, ha='center', va='bottom', fontsize=11)
          plt.savefig(r'image\test_epoch_%s_%s.png'%(epoch,i))
          # cv2.imwrite('train_img\epoch_%s_train.jpg'%epoch,train_img)evaluator = Evaluator()


          接著,定義其他回調(diào)函數(shù),就可以開始訓(xùn)練了:

          # 回調(diào)函數(shù)checkpoint_period = ModelCheckpoint(r'logs/' + 'ep{epoch:03d}-loss{loss:.3f}.h5',                            monitor='val_loss', save_weights_only=True, save_best_only=True, period=1)reduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=5, verbose=1)early_stopping = EarlyStopping(monitor='loss', min_delta=0, patience=10, verbose=1)
          # 模型訓(xùn)練model.fit(train_dataset,steps_per_epoch=train_dataset.__len__(), # validation_data=test_dataset,validation_steps=test_dataset.__len__(), epochs=epoch, initial_epoch=init_epoch, callbacks=[checkpoint_period,reduce_lr,early_stopping,evaluator],workers=1)

          當(dāng)然,在開始訓(xùn)練之前,我們還需要新建images、logs文件夾用來存放可視化數(shù)據(jù)以及保存的權(quán)重,不然會報錯的,訓(xùn)練過程中的圖像如下:




          可視化訓(xùn)練結(jié)果

          第一個周期(此時對相同人以及不同人的區(qū)分還不是很明顯)


          第十個周期(此時基本可以區(qū)分不同人的特征了)


          第四十個周期


          至此,基于度量學(xué)習(xí)的行人重識別模型的訓(xùn)練就到此一段落了,后續(xù)我們將會給大家?guī)硇腥怂阉鳌涡腥烁櫼约岸嘈腥烁櫟膬?nèi)容,想要學(xué)習(xí)的記得關(guān)注一下。



          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉色伊人 | 精品婷婷色一区二区三区蜜桃 | 三级乱伦片 | 小黄片视频在线播放 | www.黄色亚洲 |