国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MMagic】底層視覺與MMEditing Plus版;小窺AIGC,生成模型涌現(xiàn)智慧,研究創(chuàng)造性的方向

這篇具有很好參考價(jià)值的文章主要介紹了【MMagic】底層視覺與MMEditing Plus版;小窺AIGC,生成模型涌現(xiàn)智慧,研究創(chuàng)造性的方向。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • MMagic (Multimodal?Advanced,?Generative, and?Intelligent?Creation) 是一個(gè)供專業(yè)人工智能研究人員和機(jī)器學(xué)習(xí)工程師去處理、編輯和生成圖像與視頻的開源 AIGC 工具箱。MMagic 支持各種基礎(chǔ)生成模型,包括:

    • 無條件生成對抗網(wǎng)絡(luò) (GANs),條件生成對抗網(wǎng)絡(luò) (GANs)

    • 內(nèi)部學(xué)習(xí)

    • 擴(kuò)散模型…

  • 自從 MMEditing 誕生以來,它一直是許多圖像超分、編輯和生成任務(wù)的首選算法庫。經(jīng)過 OpenMMLab 2.0 的迭代更新以及與 MMGeneration 的代碼合并,MMEditing 已經(jīng)成為了一個(gè)支持基于 GAN 和傳統(tǒng) CNN 的底層視覺算法的強(qiáng)大工具。MMEditing 正式更名為?MMagicMultimodal?Advanced,?Generative, and?Intelligent Creation)。

  • 針對 Diffusion Model,我們提供了以下“魔法”:

    • 支持基于 Stable Diffusion 與 Disco Diffusion 的圖像生成;

    • 支持 Dreambooth 以及 DreamBooth LoRA 等 Finetune 方法;

    • 支持 ControlNet 進(jìn)行可控性的文本到圖像生成;

    • 支持 xFormers 加速;

    • 支持基于 MultiFrame Render 的視頻生成;

    • 支持通過 Wrapper 調(diào)用 Diffusers 的基礎(chǔ)模型以及采樣策略

  • MMagic可以實(shí)現(xiàn)的功能有圖文生成;圖像翻譯;3D 生成;圖像超分辨率;視頻超分辨率;視頻插幀;圖像補(bǔ)全;圖像摳圖;圖像修復(fù);圖像上色;圖像生成等。

  • 配置文件按照下面的風(fēng)格命名

    • {model}_[model setting]_{backbone}_[refiner]_[norm setting]_[misc]_[gpu x batch_per_gpu]_{schedule}_{dataset}
      
      • {model}: 模型種類,例如?srcnn,?dim?等等。

      • [model?setting]: 特定設(shè)置一些模型,例如,輸入圖像?resolution?, 訓(xùn)練?stage?name。

      • {backbone}: 主干網(wǎng)絡(luò)種類,例如?r50?(ResNet-50)、x101?(ResNeXt-101)。

      • {refiner}: 精煉器種類,例如?pln?簡單精煉器模型

      • [norm_setting]: 指定歸一化設(shè)置,默認(rèn)為批歸一化,其他歸一化可以設(shè)為:?bn(批歸一化),?gn?(組歸一化),?syncbn?(同步批歸一化)。

      • [misc]: 模型中各式各樣的設(shè)置/插件,例如?dconv,?gcb,?attention,?mstrain。

      • [gpu?x?batch_per_gpu]: GPU數(shù)目 和每個(gè) GPU 的樣本數(shù), 默認(rèn)為?8x2?。

      • {schedule}: 訓(xùn)練策略,如?20k,?100k?等,意思是?20k?或?100k?迭代輪數(shù)。

      • {dataset}: 數(shù)據(jù)集,如?places(圖像補(bǔ)全)、comp1k(摳圖)、div2k(圖像恢復(fù))和?paired(圖像生成)。

  • 配置文件 - 生成。對完整的配置和生成系統(tǒng)中的模塊有一個(gè)基本的了解,對 pix2pix 的配置做如下簡要說明。

    • # 模型設(shè)置
      model = dict(
          type='Pix2Pix',  # 合成器名稱
          generator=dict(
              type='UnetGenerator',  # 生成器名稱
              in_channels=3,  # 生成器的輸入通道數(shù)
              out_channels=3,  # 生成器的輸出通道數(shù)
              num_down=8,  # # 生成器中下采樣的次數(shù)
              base_channels=64,  # 生成器最后卷積層的通道數(shù)
              norm_cfg=dict(type='BN'),  # 歸一化層的配置
              use_dropout=True,  # 是否在生成器中使用 dropout
              init_cfg=dict(type='normal', gain=0.02)),  # 初始化配置
          discriminator=dict(
              type='PatchDiscriminator',  # 判別器的名稱
              in_channels=6,  # 判別器的輸入通道數(shù)
              base_channels=64,  # 判別器第一卷積層的通道數(shù)
              num_conv=3,  # 判別器中堆疊的中間卷積層(不包括輸入和輸出卷積層)的數(shù)量
              norm_cfg=dict(type='BN'),  # 歸一化層的配置
              init_cfg=dict(type='normal', gain=0.02)),  # 初始化配置
          gan_loss=dict(
              type='GANLoss',  # GAN 損失的名稱
              gan_type='vanilla',  # GAN 損失的類型
              real_label_val=1.0,  # GAN 損失函數(shù)中真實(shí)標(biāo)簽的值
              fake_label_val=0.0,  # GAN 損失函數(shù)中偽造標(biāo)簽的值
              loss_weight=1.0),  # GAN 損失函數(shù)的權(quán)重
          pixel_loss=dict(type='L1Loss', loss_weight=100.0, reduction='mean'))
      # 模型訓(xùn)練和測試設(shè)置
      train_cfg = dict(
          direction='b2a')  # pix2pix 的圖像到圖像的轉(zhuǎn)換方向 (模型訓(xùn)練的方向,和測試方向一致)。模型默認(rèn): a2b
      test_cfg = dict(
          direction='b2a',   # pix2pix 的圖像到圖像的轉(zhuǎn)換方向 (模型測試的方向,和訓(xùn)練方向一致)。模型默認(rèn): a2b
          show_input=True)  # 保存 pix2pix 的測試圖像時(shí)是否顯示輸入的真實(shí)圖像
      
      # 數(shù)據(jù)設(shè)置
      train_dataset_type = 'GenerationPairedDataset'  # 訓(xùn)練數(shù)據(jù)集的類型
      val_dataset_type = 'GenerationPairedDataset'  # 驗(yàn)證/測試數(shù)據(jù)集類型
      img_norm_cfg = dict(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])  # 輸入圖像歸一化配置
      train_pipeline = [
          dict(
              type='LoadPairedImageFromFile',  # 從文件路徑加載圖像對
              io_backend='disk',  # 存儲圖像的 IO 后端
              key='pair',  # 查找對應(yīng)路徑的關(guān)鍵詞
              flag='color'),  # 加載圖像標(biāo)志
          dict(
              type='Resize',  # 圖像大小調(diào)整
              keys=['img_a', 'img_b'],  # 要調(diào)整大小的圖像的關(guān)鍵詞
              scale=(286, 286),  # 調(diào)整圖像大小的比例
              interpolation='bicubic'),  # 調(diào)整圖像大小時(shí)用于插值的算法
          dict(
              type='FixedCrop',  # 固定裁剪,在特定位置將配對圖像裁剪為特定大小以訓(xùn)練 pix2pix
              keys=['img_a', 'img_b'],  # 要裁剪的圖像的關(guān)鍵詞
              crop_size=(256, 256)),  # 裁剪圖像的大小
          dict(
              type='Flip',  # 翻轉(zhuǎn)圖像
              keys=['img_a', 'img_b'],  # 要翻轉(zhuǎn)的圖像的關(guān)鍵詞
              direction='horizontal'),  # 水平或垂直翻轉(zhuǎn)圖像
          dict(
              type='RescaleToZeroOne',  # 將圖像從 [0, 255] 縮放到 [0, 1]
              keys=['img_a', 'img_b']),  # 要重新縮放的圖像的關(guān)鍵詞
          dict(
              type='Normalize',  # 圖像歸一化
              keys=['img_a', 'img_b'],  # 要?dú)w一化的圖像的關(guān)鍵詞
              to_rgb=True,  # 是否將圖像通道從 BGR 轉(zhuǎn)換為 RGB
              **img_norm_cfg),  # 圖像歸一化配置(`img_norm_cfg` 的定義見上文)
          dict(
             type='ToTensor',  # 將圖像轉(zhuǎn)化為 Tensor
             keys=['img_a', 'img_b']),  # 要從圖像轉(zhuǎn)換為 Tensor 的圖像的關(guān)鍵詞
          dict(
              type='Collect',  # 決定數(shù)據(jù)中哪些鍵應(yīng)該傳遞給合成器
              keys=['img_a', 'img_b'],  # 圖像的關(guān)鍵詞
              meta_keys=['img_a_path', 'img_b_path'])  # 圖片的元關(guān)鍵詞
      ]
      test_pipeline = [
          dict(
              type='LoadPairedImageFromFile',  # 從文件路徑加載圖像對
              io_backend='disk',  # 存儲圖像的 IO 后端
              key='pair',  # 查找對應(yīng)路徑的關(guān)鍵詞
              flag='color'),  # 加載圖像標(biāo)志
          dict(
              type='Resize',  # 圖像大小調(diào)整
              keys=['img_a', 'img_b'],  # 要調(diào)整大小的圖像的關(guān)鍵詞
              scale=(256, 256),  # 調(diào)整圖像大小的比例
              interpolation='bicubic'),  # 調(diào)整圖像大小時(shí)用于插值的算法
          dict(
              type='RescaleToZeroOne',  # 將圖像從 [0, 255] 縮放到 [0, 1]
              keys=['img_a', 'img_b']),  # 要重新縮放的圖像的關(guān)鍵詞
          dict(
              type='Normalize',  # 圖像歸一化
              keys=['img_a', 'img_b'],  # 要?dú)w一化的圖像的關(guān)鍵詞
              to_rgb=True,  # 是否將圖像通道從 BGR 轉(zhuǎn)換為 RGB
              **img_norm_cfg),  # 圖像歸一化配置(`img_norm_cfg` 的定義見上文)
          dict(
             type='ToTensor',  # 將圖像轉(zhuǎn)化為 Tensor
             keys=['img_a', 'img_b']),  # 要從圖像轉(zhuǎn)換為 Tensor 的圖像的關(guān)鍵詞
          dict(
              type='Collect',  # 決定數(shù)據(jù)中哪些鍵應(yīng)該傳遞給合成器
              keys=['img_a', 'img_b'],  # 圖像的關(guān)鍵詞
              meta_keys=['img_a_path', 'img_b_path'])  # 圖片的元關(guān)鍵詞
      ]
      data_root = 'data/pix2pix/facades'  # 數(shù)據(jù)的根路徑
      data = dict(
          samples_per_gpu=1,  # 單個(gè) GPU 的批量大小
          workers_per_gpu=4,  # 為每個(gè) GPU 預(yù)取數(shù)據(jù)的 Worker 數(shù)
          drop_last=True,  # 是否丟棄訓(xùn)練中的最后一批數(shù)據(jù)
          val_samples_per_gpu=1,  # 驗(yàn)證中單個(gè) GPU 的批量大小
          val_workers_per_gpu=0,  # 在驗(yàn)證中為每個(gè) GPU 預(yù)取數(shù)據(jù)的 Worker 數(shù)
          train=dict(  # 訓(xùn)練數(shù)據(jù)集配置
              type=train_dataset_type,
              dataroot=data_root,
              pipeline=train_pipeline,
              test_mode=False),
          val=dict(  # 驗(yàn)證數(shù)據(jù)集配置
              type=val_dataset_type,
              dataroot=data_root,
              pipeline=test_pipeline,
              test_mode=True),
          test=dict(  # 測試數(shù)據(jù)集配置
              type=val_dataset_type,
              dataroot=data_root,
              pipeline=test_pipeline,
              test_mode=True))
      # 優(yōu)化器
      optimizers = dict(  # 用于構(gòu)建優(yōu)化器的配置,支持 PyTorch 中所有優(yōu)化器,且參數(shù)與 PyTorch 中對應(yīng)優(yōu)化器相同
          generator=dict(type='Adam', lr=2e-4, betas=(0.5, 0.999)),
          discriminator=dict(type='Adam', lr=2e-4, betas=(0.5, 0.999)))
      # 學(xué)習(xí)策略
      lr_config = dict(policy='Fixed', by_epoch=False)  # 用于注冊 LrUpdater 鉤子的學(xué)習(xí)率調(diào)度程序配置
      # 檢查點(diǎn)保存
      checkpoint_config = dict(interval=4000, save_optimizer=True, by_epoch=False)  # 配置檢查點(diǎn)鉤子,實(shí)現(xiàn)參考 https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/checkpoint.py
      evaluation = dict(  # 構(gòu)建驗(yàn)證鉤子的配置
          interval=4000,  # 驗(yàn)證區(qū)間
          save_image=True)  # 是否保存圖片
      log_config = dict(  # 配置注冊記錄器鉤子
          interval=100,  # 打印日志的時(shí)間間隔
          hooks=[
              dict(type='TextLoggerHook', by_epoch=False),  # 用于記錄訓(xùn)練過程的記錄器
              # dict(type='TensorboardLoggerHook')  # 還支持 Tensorboard 記錄器
          ])
      visual_config = None  # 構(gòu)建可視化鉤子的配置
      # 運(yùn)行設(shè)置
      total_iters = 80000  # 訓(xùn)練模型的總迭代次數(shù)
      cudnn_benchmark = True  # 設(shè)置 cudnn_benchmark
      dist_params = dict(backend='nccl')  # 設(shè)置分布式訓(xùn)練的參數(shù),端口也可以設(shè)置
      log_level = 'INFO'  # 日志級別
      load_from = None  # 從給定路徑加載模型作為預(yù)訓(xùn)練模型。 這不會恢復(fù)訓(xùn)練
      resume_from = None  # 從給定路徑恢復(fù)檢查點(diǎn),當(dāng)檢查點(diǎn)被保存時(shí),訓(xùn)練將從該 epoch 恢復(fù)
      workflow = [('train', 1)]  # runner 的工作流程。 [('train', 1)] 表示只有一個(gè)工作流程,名為 'train' 的工作流程執(zhí)行一次。 訓(xùn)練當(dāng)前生成模型時(shí)保持不變
      exp_name = 'pix2pix_facades'  # 實(shí)驗(yàn)名稱
      work_dir = f'./work_dirs/{exp_name}'  # 保存當(dāng)前實(shí)驗(yàn)的模型檢查點(diǎn)和日志的目錄
      
  • 配置文件 - 補(bǔ)全。對完整的配置和修復(fù)系統(tǒng)中的模塊有一個(gè)基本的了解,對 Global&Local 的配置作如下簡要說明。

    • model = dict(
          type='GLInpaintor', # 補(bǔ)全器的名稱
          encdec=dict(
              type='GLEncoderDecoder', # 編碼器-解碼器的名稱
              encoder=dict(type='GLEncoder', norm_cfg=dict(type='SyncBN')), # 編碼器的配置
              decoder=dict(type='GLDecoder', norm_cfg=dict(type='SyncBN')), # 解碼器的配置
              dilation_neck=dict(
                  type='GLDilationNeck', norm_cfg=dict(type='SyncBN'))), # 擴(kuò)頸的配置
          disc=dict(
              type='GLDiscs', # 判別器的名稱
              global_disc_cfg=dict(
                  in_channels=3, # 判別器的輸入通道數(shù)
                  max_channels=512, # 判別器中的最大通道數(shù)
                  fc_in_channels=512 * 4 * 4, # 最后一個(gè)全連接層的輸入通道
                  fc_out_channels=1024, # 最后一個(gè)全連接層的輸出通道
                  num_convs=6, # 判別器中使用的卷積數(shù)量
                  norm_cfg=dict(type='SyncBN') # 歸一化層的配置
              ),
              local_disc_cfg=dict(
                  in_channels=3, # 判別器的輸入通道數(shù)
                  max_channels=512, # 判別器中的最大通道數(shù)
                  fc_in_channels=512 * 4 * 4, # 最后一個(gè)全連接層的輸入通道
                  fc_out_channels=1024, # 最后一個(gè)全連接層的輸出通道
                  num_convs=5, # 判別器中使用的卷積數(shù)量
                  norm_cfg=dict(type='SyncBN') # 歸一化層的配置
              ),
          ),
          loss_gan=dict(
              type='GANLoss', # GAN 損失的名稱
              gan_type='vanilla', # GAN 損失的類型
              loss_weight=0.001 # GAN 損失函數(shù)的權(quán)重
          ),
          loss_l1_hole=dict(
              type='L1Loss', # L1 損失的類型
              loss_weight=1.0 # L1 損失函數(shù)的權(quán)重
          ),
          pretrained=None) # 預(yù)訓(xùn)練權(quán)重的路徑
      train_cfg = dict(
          disc_step=1, # 訓(xùn)練生成器之前訓(xùn)練判別器的迭代次數(shù)
          iter_tc=90000, # 預(yù)熱生成器的迭代次數(shù)
          iter_td=100000, # 預(yù)熱判別器的迭代次數(shù)
          start_iter=0, # 開始的迭代
          local_size=(128, 128)) # 圖像塊的大小
      test_cfg = dict(metrics=['l1']) # 測試的配置
      dataset_type = 'ImgInpaintingDataset' # 數(shù)據(jù)集類型
      input_shape = (256, 256) # 輸入圖像的形狀
      train_pipeline = [
          dict(type='LoadImageFromFile', key='gt_img'), # 加載圖片的配置
          dict(
              type='LoadMask', # 加載掩碼
              mask_mode='bbox', # 掩碼的類型
              mask_config=dict(
                  max_bbox_shape=(128, 128), # 檢測框的形狀
                  max_bbox_delta=40, # 檢測框高寬的變化
                  min_margin=20,  # 檢測框到圖片邊界的最小距離
                  img_shape=input_shape)),  # 輸入圖像的形狀
          dict(
              type='Crop', # 裁剪
              keys=['gt_img'],  # 要裁剪的圖像的關(guān)鍵詞
              crop_size=(384, 384),  # 裁剪圖像塊的大小
              random_crop=True,  # 是否使用隨機(jī)裁剪
          ),
          dict(
              type='Resize',  # 圖像大小調(diào)整
              keys=['gt_img'],  # 要調(diào)整大小的圖像的關(guān)鍵詞
              scale=input_shape,  # 調(diào)整圖像大小的比例
              keep_ratio=False,  # 調(diào)整大小時(shí)是否保持比例
          ),
          dict(
              type='Normalize',  # 圖像歸一化
              keys=['gt_img'],  # 要?dú)w一化的圖像的關(guān)鍵詞
              mean=[127.5] * 3,  # 歸一化中使用的均值
              std=[127.5] * 3,  # 歸一化中使用的標(biāo)準(zhǔn)差
              to_rgb=False),  # 是否將圖像通道從 BGR 轉(zhuǎn)換為 RGB
          dict(type='GetMaskedImage'),  # 獲取被掩蓋的圖像
          dict(
              type='Collect',  # 決定數(shù)據(jù)中哪些鍵應(yīng)該傳遞給合成器
              keys=['gt_img', 'masked_img', 'mask', 'mask_bbox'],  # 要收集的數(shù)據(jù)的關(guān)鍵詞
              meta_keys=['gt_img_path']),  # 要收集的數(shù)據(jù)的元關(guān)鍵詞
          dict(type='ToTensor', keys=['gt_img', 'masked_img', 'mask']),  # 將圖像轉(zhuǎn)化為 Tensor
          dict(type='ToTensor', keys=['mask_bbox'])  # 轉(zhuǎn)化為 Tensor
      ]
      test_pipeline = train_pipeline  # 構(gòu)建測試/驗(yàn)證流程
      data_root = 'data/places365'  # 數(shù)據(jù)根目錄
      data = dict(
          samples_per_gpu=12,  # 單個(gè) GPU 的批量大小
          workers_per_gpu=8,  # 為每個(gè) GPU 預(yù)取數(shù)據(jù)的 Worker 數(shù)
          val_samples_per_gpu=1,  # 驗(yàn)證中單個(gè) GPU 的批量大小
          val_workers_per_gpu=8,  # 在驗(yàn)證中為每個(gè) GPU 預(yù)取數(shù)據(jù)的 Worker 數(shù)
          drop_last=True,  # 是否丟棄訓(xùn)練中的最后一批數(shù)據(jù)
          train=dict(  # 訓(xùn)練數(shù)據(jù)集配置
              type=dataset_type,
              ann_file=f'{data_root}/train_places_img_list_total.txt',
              data_prefix=data_root,
              pipeline=train_pipeline,
              test_mode=False),
          val=dict(  # 驗(yàn)證數(shù)據(jù)集配置
              type=dataset_type,
              ann_file=f'{data_root}/val_places_img_list.txt',
              data_prefix=data_root,
              pipeline=test_pipeline,
              test_mode=True))
      optimizers = dict(  # 用于構(gòu)建優(yōu)化器的配置,支持 PyTorch 中所有優(yōu)化器,且參數(shù)與 PyTorch 中對應(yīng)優(yōu)化器相同
          generator=dict(type='Adam', lr=0.0004), disc=dict(type='Adam', lr=0.0004))
      lr_config = dict(policy='Fixed', by_epoch=False)  # 用于注冊 LrUpdater 鉤子的學(xué)習(xí)率調(diào)度程序配置
      checkpoint_config = dict(by_epoch=False, interval=50000)  # 配置檢查點(diǎn)鉤子,實(shí)現(xiàn)參考 https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/checkpoint.py
      log_config = dict(  # 配置注冊記錄器鉤子
          interval=100,  # 打印日志的時(shí)間間隔
          hooks=[
              dict(type='TextLoggerHook', by_epoch=False),
              # dict(type='TensorboardLoggerHook'),  # 支持 Tensorboard 記錄器
              # dict(type='PaviLoggerHook', init_kwargs=dict(project='mmagic'))
          ])  # 用于記錄訓(xùn)練過程的記錄器
      
      visual_config = dict(  # 構(gòu)建可視化鉤子的配置
          type='VisualizationHook',
          output_dir='visual',
          interval=1000,
          res_name_list=[
              'gt_img', 'masked_img', 'fake_res', 'fake_img', 'fake_gt_local'
          ],
      )  # 用于可視化訓(xùn)練過程的記錄器。
      evaluation = dict(interval=50000)  # 構(gòu)建驗(yàn)證鉤子的配置
      total_iters = 500002
      dist_params = dict(backend='nccl')  # 設(shè)置分布式訓(xùn)練的參數(shù),端口也可以設(shè)置
      log_level = 'INFO'  # 日志級別
      work_dir = None  # 保存當(dāng)前實(shí)驗(yàn)的模型檢查點(diǎn)和日志的目錄
      load_from = None  # 從給定路徑加載模型作為預(yù)訓(xùn)練模型。 這不會恢復(fù)訓(xùn)練
      resume_from = None  # 從給定路徑恢復(fù)檢查點(diǎn),當(dāng)檢查點(diǎn)被保存時(shí),訓(xùn)練將從該 epoch 恢復(fù)
      workflow = [('train', 10000)]  # runner 的工作流程。 [('train', 1)] 表示只有一個(gè)工作流程,名為 'train' 的工作流程執(zhí)行一次。 訓(xùn)練當(dāng)前生成模型時(shí)保持不變
      exp_name = 'gl_places'  # 實(shí)驗(yàn)名稱
      find_unused_parameters = False  # 是否在分布式訓(xùn)練中查找未使用的參數(shù)
      
  • 配置文件 - 摳圖。原始 DIM 模型的配置做一個(gè)簡短的評論,如下所示。

    • # 模型配置
      model = dict(
          type='DIM',  # 模型的名稱(我們稱之為摳圖器)
          backbone=dict(  # 主干網(wǎng)絡(luò)的配置
              type='SimpleEncoderDecoder',  # 主干網(wǎng)絡(luò)的類型
              encoder=dict(  # 編碼器的配置
                  type='VGG16'),  # 編碼器的類型
              decoder=dict(  # 解碼器的配置
                  type='PlainDecoder')),  # 解碼器的類型
          pretrained='./weights/vgg_state_dict.pth',  # 編碼器的預(yù)訓(xùn)練權(quán)重
          loss_alpha=dict(  # alpha 損失的配置
              type='CharbonnierLoss',  # 預(yù)測的 alpha 遮罩的損失類型
              loss_weight=0.5),  # alpha 損失的權(quán)重
          loss_comp=dict(  # 組合損失的配置
              type='CharbonnierCompLoss',  # 組合損失的類型
              loss_weight=0.5))  # 組合損失的權(quán)重
      train_cfg = dict(  # 訓(xùn)練 DIM 模型的配置
          train_backbone=True,  # 在 DIM stage 1 中,會對主干網(wǎng)絡(luò)進(jìn)行訓(xùn)練
          train_refiner=False)  # 在 DIM stage 1 中,不會對精煉器進(jìn)行訓(xùn)練
      test_cfg = dict(  # 測試 DIM 模型的配置
          refine=False,  # 是否使用精煉器輸出作為輸出,在 stage 1 中,我們不使用它
          metrics=['SAD', 'MSE', 'GRAD', 'CONN'])  # 測試時(shí)使用的指標(biāo)
      # 數(shù)據(jù)配置
      dataset_type = 'AdobeComp1kDataset'  # 數(shù)據(jù)集類型,這將用于定義數(shù)據(jù)集
      data_root = 'data/adobe_composition-1k'  # 數(shù)據(jù)的根目錄
      img_norm_cfg = dict(  # 歸一化輸入圖像的配置
          mean=[0.485, 0.456, 0.406],  # 歸一化中使用的均值
          std=[0.229, 0.224, 0.225],  # 歸一化中使用的標(biāo)準(zhǔn)差
          to_rgb=True)  # 是否將圖像通道從 BGR 轉(zhuǎn)換為 RGB
      train_pipeline = [  # 訓(xùn)練數(shù)據(jù)處理流程
          dict(
              type='LoadImageFromFile',  # 從文件加載 alpha 遮罩
              key='alpha',  # 注釋文件中 alpha 遮罩的鍵關(guān)鍵詞。流程將從路徑 “alpha_path” 中讀取 alpha 遮罩
              flag='grayscale'),  # 加載灰度圖像,形狀為(高度、寬度)
          dict(
              type='LoadImageFromFile',  # 從文件中加載圖像
              key='fg'),  # 要加載的圖像的關(guān)鍵詞。流程將從路徑 “fg_path” 讀取 fg
          dict(
              type='LoadImageFromFile',  # 從文件中加載圖像
              key='bg'),  # 要加載的圖像的關(guān)鍵詞。流程將從路徑 “bg_path” 讀取 bg
          dict(
              type='LoadImageFromFile',  # 從文件中加載圖像
              key='merged'),  # 要加載的圖像的關(guān)鍵詞。流程將從路徑 “merged_path” 讀取并合并
          dict(
              type='CropAroundUnknown',  # 在未知區(qū)域(半透明區(qū)域)周圍裁剪圖像
              keys=['alpha', 'merged', 'ori_merged', 'fg', 'bg'],  # 要裁剪的圖像
              crop_sizes=[320, 480, 640]),  # 裁剪大小
          dict(
              type='Flip',  # 翻轉(zhuǎn)圖像
              keys=['alpha', 'merged', 'ori_merged', 'fg', 'bg']),  # 要翻轉(zhuǎn)的圖像
          dict(
              type='Resize',  # 圖像大小調(diào)整
              keys=['alpha', 'merged', 'ori_merged', 'fg', 'bg'],  # 圖像調(diào)整大小的圖像
              scale=(320, 320),  # 目標(biāo)大小
              keep_ratio=False),  # 是否保持高寬比例
          dict(
              type='GenerateTrimap',  # 從 alpha 遮罩生成三元圖。
              kernel_size=(1, 30)),  # 腐蝕/擴(kuò)張內(nèi)核大小的范圍
          dict(
              type='RescaleToZeroOne', # 將圖像從 [0, 255] 縮放到 [0, 1]
              keys=['merged', 'alpha', 'ori_merged', 'fg', 'bg']),  # 要重新縮放的圖像
          dict(
              type='Normalize',  # 圖像歸一化
              keys=['merged'],  # 要?dú)w一化的圖像
              **img_norm_cfg),  # 圖像歸一化配置(`img_norm_cfg` 的定義見上文)
          dict(
              type='Collect',  # 決定數(shù)據(jù)中哪些鍵應(yīng)該傳遞給合成器
              keys=['merged', 'alpha', 'trimap', 'ori_merged', 'fg', 'bg'],  # 圖像的關(guān)鍵詞
              meta_keys=[]),  # 圖片的元關(guān)鍵詞,這里不需要元信息。
          dict(
              type='ToTensor',  # 將圖像轉(zhuǎn)化為 Tensor
              keys=['merged', 'alpha', 'trimap', 'ori_merged', 'fg', 'bg']),  # 要轉(zhuǎn)換為 Tensor 的圖像
      ]
      test_pipeline = [
          dict(
              type='LoadImageFromFile', # 從文件加載 alpha 遮罩
              key='alpha',  # 注釋文件中 alpha 遮罩的鍵關(guān)鍵詞。流程將從路徑 “alpha_path” 中讀取 alpha 遮罩
              flag='grayscale',
              save_original_img=True),
          dict(
              type='LoadImageFromFile',  # 從文件中加載圖像
              key='trimap',  # 要加載的圖像的關(guān)鍵詞。流程將從路徑 “trimap_path” 讀取三元圖
              flag='grayscale', # 加載灰度圖像,形狀為(高度、寬度)
              save_original_img=True), # 保存三元圖用于計(jì)算指標(biāo)。 它將與 “ori_trimap” 一起保存
          dict(
              type='LoadImageFromFile',  # 從文件中加載圖像
              key='merged'),  # 要加載的圖像的關(guān)鍵詞。流程將從路徑 “merged_path” 讀取并合并
          dict(
              type='Pad',  # 填充圖像以與模型的下采樣因子對齊
              keys=['trimap', 'merged'],  # 要填充的圖像
              mode='reflect'),  # 填充模式
          dict(
              type='RescaleToZeroOne',  # 與 train_pipeline 相同
              keys=['merged', 'ori_alpha']),  # 要縮放的圖像
          dict(
              type='Normalize',  # 與 train_pipeline 相同
              keys=['merged'],
              **img_norm_cfg),
          dict(
              type='Collect',  # 與 train_pipeline 相同
              keys=['merged', 'trimap'],
              meta_keys=[
                  'merged_path', 'pad', 'merged_ori_shape', 'ori_alpha',
                  'ori_trimap'
              ]),
          dict(
              type='ToTensor',  # 與 train_pipeline 相同
              keys=['merged', 'trimap']),
      ]
      data = dict(
          samples_per_gpu=1,  #單個(gè) GPU 的批量大小
          workers_per_gpu=4,  # 為每個(gè) GPU 預(yù)取數(shù)據(jù)的 Worker 數(shù)
          drop_last=True,  # 是否丟棄訓(xùn)練中的最后一批數(shù)據(jù)
          train=dict(  # 訓(xùn)練數(shù)據(jù)集配置
              type=dataset_type,  # 數(shù)據(jù)集的類型
              ann_file=f'{data_root}/training_list.json',  # 注解文件路徑
              data_prefix=data_root,  # 圖像路徑的前綴
              pipeline=train_pipeline),  # 見上文 train_pipeline
          val=dict(  # 驗(yàn)證數(shù)據(jù)集配置
              type=dataset_type,
              ann_file=f'{data_root}/test_list.json',
              data_prefix=data_root,
              pipeline=test_pipeline),  # 見上文 test_pipeline
          test=dict(  # 測試數(shù)據(jù)集配置
              type=dataset_type,
              ann_file=f'{data_root}/test_list.json',
              data_prefix=data_root,
              pipeline=test_pipeline))  # 見上文 test_pipeline
      # 優(yōu)化器
      optimizers = dict(type='Adam', lr=0.00001)  # 用于構(gòu)建優(yōu)化器的配置,支持 PyTorch 中所有優(yōu)化器,且參數(shù)與 PyTorch 中對應(yīng)優(yōu)化器相同
      # 學(xué)習(xí)策略
      lr_config = dict(  # 用于注冊 LrUpdater 鉤子的學(xué)習(xí)率調(diào)度程序配置
          policy='Fixed')  # 調(diào)度器的策略,支持 CosineAnnealing、Cyclic 等。支持的 LrUpdater 詳情請參考 https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py#L9。
      # 檢查點(diǎn)保存
      checkpoint_config = dict(  # 配置檢查點(diǎn)鉤子,實(shí)現(xiàn)參考 https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/checkpoint.py
          interval=40000,  # 保存間隔為 40000 次迭代
          by_epoch=False)  # 按迭代計(jì)數(shù)
      evaluation = dict(  # # 構(gòu)建驗(yàn)證鉤子的配置
          interval=40000)  # 驗(yàn)證區(qū)間
      log_config = dict(  # 配置注冊記錄器鉤子
          interval=10,  # 打印日志的時(shí)間間隔
          hooks=[
              dict(type='TextLoggerHook', by_epoch=False),  # 用于記錄訓(xùn)練過程的記錄器
              # dict(type='TensorboardLoggerHook')  # 支持 Tensorboard 記錄器
          ])
      # runtime settings
      total_iters = 1000000  # 訓(xùn)練模型的總迭代次數(shù)
      dist_params = dict(backend='nccl')  # 設(shè)置分布式訓(xùn)練的參數(shù),端口也可以設(shè)置
      log_level = 'INFO'  # 日志級別
      work_dir = './work_dirs/dim_stage1'  # 保存當(dāng)前實(shí)驗(yàn)的模型檢查點(diǎn)和日志的目錄
      load_from = None  # 從給定路徑加載模型作為預(yù)訓(xùn)練模型。 這不會恢復(fù)訓(xùn)練
      resume_from = None  # 從給定路徑恢復(fù)檢查點(diǎn),當(dāng)檢查點(diǎn)被保存時(shí),訓(xùn)練將從該 epoch 恢復(fù)
      workflow = [('train', 1)]  # runner 的工作流程。 [('train', 1)] 表示只有一個(gè)工作流程,名為 'train' 的工作流程執(zhí)行一次。 訓(xùn)練當(dāng)前摳圖模型時(shí)保持不變
      
  • 使用以下命令,輸入一張測試圖像以及缺損部位的遮罩圖像,實(shí)現(xiàn)對測試圖像的補(bǔ)全。

    • python demo/inpainting_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${MASKED_IMAGE_FILE} \
          ${MASK_FILE} \
          ${SAVE_FILE} \
          [--imshow] \
          [--device ${GPU_ID}]
      
  • 輸入一張測試圖像以及對應(yīng)的三元圖(trimap),實(shí)現(xiàn)對測試圖像的摳圖。

    • python demo/matting_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${IMAGE_FILE} \
          ${TRIMAP_FILE} \
          ${SAVE_FILE} \
          [--imshow] \
          [--device ${GPU_ID}] 
      ## 舉例
      python demo/matting_demo.py \
          configs/dim/dim_stage3-v16-pln_1000k-1xb1_comp1k.py \
          https://download.openmmlab.com/mmediting/mattors/dim/dim_stage3_v16_pln_1x1_1000k_comp1k_SAD-50.6_20200609_111851-647f24b6.pth \
          tests/data/matting_dataset/merged/GT05.jpg \
          tests/data/matting_dataset/trimap/GT05.png \
          tests/data/matting_dataset/pred/GT05.png
      
  • 使用以下命令來測試要恢復(fù)的圖像。

    • python demo/restoration_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${IMAGE_FILE} \
          ${SAVE_FILE} \
          [--imshow] \
          [--device ${GPU_ID}] \
          [--ref-path ${REF_PATH}]  
      ## 舉例
      python demo/restoration_demo.py \
          configs/esrgan/esrgan_x4c64b23g32_400k-1xb16_div2k.py \
          https://download.openmmlab.com/mmediting/restorers/esrgan/esrgan_x4c64b23g32_1x16_400k_div2k_20200508-f8ccaf3b.pth \
          tests/data/image/lq/baboon_x4.png \
          demo/demo_out_baboon.png
      
  • 視頻超分辨率

    • python demo/restoration_video_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${INPUT_DIR} \
          ${OUTPUT_DIR} \
          [--window-size=${WINDOW_SIZE}] \
          [--device ${GPU_ID}] 
      ## 舉例 
      python demo/restoration_video_demo.py \
          configs/edvr/edvrm_wotsa_reds_600k-8xb8.py \
          https://download.openmmlab.com/mmediting/restorers/edvr/edvrm_wotsa_x4_8x4_600k_reds_20200522-0570e567.pth \
          data/Vid4/BIx4/calendar/ \
          demo/output \
          --window-size=5
      
  • 可以使用以下命令來測試視頻插幀。

    • python demo/video_interpolation_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${INPUT_DIR} \
          ${OUTPUT_DIR} \
          [--fps-multiplier ${FPS_MULTIPLIER}] \
          [--fps ${FPS}]
      
    • ${INPUT_DIR}?和?${OUTPUT_DIR}?可以是視頻文件路徑或存放一系列有序圖像的文件夾。 若?${OUTPUT_DIR}?是視頻文件地址,其幀率可由輸入視頻幀率和?fps_multiplier?共同決定,也可由?fps?直接給定(其中前者優(yōu)先級更高)。

  • 圖像生成

    • python demo/generation_demo.py \
          ${CONFIG_FILE} \
          ${CHECKPOINT_FILE} \
          ${IMAGE_FILE} \
          ${SAVE_FILE} \
          [--unpaired-path ${UNPAIRED_IMAGE_FILE}] \
          [--imshow] \
          [--device ${GPU_ID}]
      
    • 如果指定了?--unpaired-path?(用于 CycleGAN),模型將執(zhí)行未配對的圖像到圖像的轉(zhuǎn)換。 如果指定了?--imshow?,演示也將使用opencv顯示圖像。文章來源地址http://www.zghlxwxcb.cn/news/detail-486438.html

到了這里,關(guān)于【MMagic】底層視覺與MMEditing Plus版;小窺AIGC,生成模型涌現(xiàn)智慧,研究創(chuàng)造性的方向的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 玩轉(zhuǎn)AIGC神器MMagic

    玩轉(zhuǎn)AIGC神器MMagic

    經(jīng)過 OpenMMLab 2.0 框架的迭代更新以及與 MMGeneration 的合并,MMEditing 已經(jīng)成為了一個(gè)支持基于 GAN 和 CNN 的底層視覺算法的強(qiáng)大工具。而今天,MMEditing 將更加擁抱生成式 AI(Generative AI),正式更名為? MMagic ( M ultimodal? A dvanced,? G enerative, and? I ntelligent? C reation),致力于打造

    2024年02月13日
    瀏覽(21)
  • 張晴晴:對話數(shù)據(jù)推動AIGC——大模型底層數(shù)據(jù)探索

    張晴晴:對話數(shù)據(jù)推動AIGC——大模型底層數(shù)據(jù)探索

    “Training data is technology” . 數(shù)據(jù)即科技,OpenAI的聯(lián)合創(chuàng)始人IlyaSutskever在與知名科技媒體The Verge訪談中提到。ChatGPT自發(fā)布以來熱度席卷全球,一周前驚艷亮相的GPT-4更是讓人感嘆我們迎來了AI發(fā)展的歷史性時(shí)刻。 然而我們也困惑,OpenAI為何不開源GPT-4?在我們看來,更多的奧秘

    2024年02月09日
    瀏覽(21)
  • OpenMMLab-AI實(shí)戰(zhàn)營第二期——6-2.玩轉(zhuǎn)AIGC神器MMagic

    OpenMMLab-AI實(shí)戰(zhàn)營第二期——6-2.玩轉(zhuǎn)AIGC神器MMagic

    視頻鏈接:玩轉(zhuǎn)AIGC神器MMagic 代碼教程:https://github.com/TommyZihao/MMagic_Tutorials Stable Diffusion的文生圖,以及controlnet和dreamboost的圖生圖(輸入一個(gè)圖像+文字描述,輸出另一張圖像) 在2022年以前,這種技術(shù)是無法想象的,像magic一樣,所以這個(gè)庫就叫mmagic 1. Stable Diffusion和Midjour

    2024年02月10日
    瀏覽(28)
  • 【OpenMMLab AI實(shí)戰(zhàn)營二期筆記】第十一天 玩轉(zhuǎn)AIGC神器MMagic代碼教程

    1.1 安裝Pytorch 1.2 安裝MMCV、MMEngine環(huán)境 1.3 安裝MMagic 方式一: 方式二:源碼安裝 1.4檢查安裝成功 1.5 安裝其他工具包 2.1 進(jìn)入 MMagic 主目錄 2.2下載樣例圖片 2.3 運(yùn)行預(yù)測 3.1 導(dǎo)入工具包 3.2 載入模型 3.3 指定Prompt文本 3.4 預(yù)測 4.1 進(jìn)入 MMagic 主目錄 4.2 在數(shù)據(jù)集上訓(xùn)練Dreambooth 4.3 用

    2024年02月10日
    瀏覽(53)
  • 【城南】如何識別AI生成圖?視覺AIGC偽造檢測技術(shù)綜述

    圖片無法加載可參考閱讀:知乎文章 [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Ry2Qw8uO-1685675351028)(https://r3mu87a8e6.feishu.cn/space/api/box/stream/download/asynccode/?code=MWFkNzMyZjcyYTE4YzJkM2MxYzVlMTQ1MzQzNDAxNTZfc01xTFVyMks3SnJFTFNWVFd1WHB2dmFIblpuT2o3ZWxfVG9rZW46RDZtaGJDRXpob2d

    2024年02月12日
    瀏覽(22)
  • AIGC原理:擴(kuò)散模型diffusion綜述一:面向視覺計(jì)算的擴(kuò)散模型研究進(jìn)展

    AIGC原理:擴(kuò)散模型diffusion綜述一:面向視覺計(jì)算的擴(kuò)散模型研究進(jìn)展

    論文地址:State of the Art on Diffusion Models for Visual Computing ?? 貼一幅SGM(Score-based Generative Model)的原因是宋飏博士將他2019年提出的SMLD模型和2020年Jonathan Ho提出的DDPM采用SDE進(jìn)行一統(tǒng)這兩大極為相似的生成式模型。殊途同歸,基于概率的擴(kuò)散模型DDPM和基于分?jǐn)?shù)的擴(kuò)散模型SMLD都是

    2024年02月05日
    瀏覽(23)
  • 【AIGC】16、Vision-Language 模型在視覺任務(wù)中的調(diào)研

    【AIGC】16、Vision-Language 模型在視覺任務(wù)中的調(diào)研

    近來,一種新的學(xué)習(xí)范式 pre-training → Finetuning → Prediction 取得了很大的進(jìn)步,并且在視覺識別任務(wù)中取得了很好的效果。 使用 pretrained 模型來學(xué)習(xí)豐富的知識,可以加速模型對下游任務(wù)的收斂速度并且提高效果 但是,這種學(xué)習(xí)范式在下游任務(wù)仍然需要很多帶標(biāo)注的數(shù)據(jù),如

    2024年02月11日
    瀏覽(25)
  • AIGC實(shí)戰(zhàn)——生成模型簡介

    AIGC實(shí)戰(zhàn)——生成模型簡介

    生成式人工智能 ( Generative Artificial Intelligence , GAI ) 是一種人工智能方法,旨在通過學(xué)習(xí)訓(xùn)練數(shù)據(jù)的分布模型來生成新的、原創(chuàng)的數(shù)據(jù)。人工智能生成內(nèi)容 ( Artificial Intelligence Generated Content , AIGC ) 是生成式人工智能的一個(gè)具體應(yīng)用和實(shí)現(xiàn)方式,是指利用人工智能技術(shù)生成各種形

    2024年02月08日
    瀏覽(15)
  • AIGC - 生成模型

    AIGC - 生成模型

    生成式人工智能 ( Generative Artificial Intelligence , GAI ) 是一種人工智能方法,旨在通過學(xué)習(xí)訓(xùn)練數(shù)據(jù)的分布模型來生成新的、原創(chuàng)的數(shù)據(jù)。人工智能生成內(nèi)容 ( Artificial Intelligence Generated Content , AIGC ) 是生成式人工智能的一個(gè)具體應(yīng)用和實(shí)現(xiàn)方式,是指利用人工智能技術(shù)生成各種形

    2024年02月11日
    瀏覽(12)
  • AIGC - 生成模型簡介

    AIGC - 生成模型簡介

    生成式人工智能 ( Generative Artificial Intelligence , GAI ) 是一種人工智能方法,旨在通過學(xué)習(xí)訓(xùn)練數(shù)據(jù)的分布模型來生成新的、原創(chuàng)的數(shù)據(jù)。人工智能生成內(nèi)容 ( Artificial Intelligence Generated Content , AIGC ) 是生成式人工智能的一個(gè)具體應(yīng)用和實(shí)現(xiàn)方式,是指利用人工智能技術(shù)生成各種形

    2024年02月09日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包