PaddleHub中的模型

      網(wǎng)友投稿 976 2025-04-05

      PaddleHub介紹


      文章目錄

      PaddleHub簡介

      對比PytorchHub

      與PaddleHub

      Model與Module

      Fine-tune

      PaddleHub使用

      PaddleHub安裝

      命令行快速體驗

      29種模型

      遷移學(xué)習(xí)

      Fine-Tune

      訓(xùn)練過程

      PaddleHub介紹

      文章目錄

      PaddleHub簡介

      對比PytorchHub

      與PaddleHub

      Model與Module

      Fine-tune

      PaddleHub使用

      PaddleHub安裝

      命令行快速體驗

      29種模型

      遷移學(xué)習(xí)

      Fine-Tune

      訓(xùn)練過程

      1.1 PaddleHub簡介

      PaddleHub 是基于 PaddlePaddle 開發(fā)的預(yù)訓(xùn)練模型管理工具,可以借助預(yù)訓(xùn)練模型更便捷地開展遷移學(xué)習(xí)工作,旨在讓 PaddlePaddle 生態(tài)下的開發(fā)者更便捷體驗到大規(guī)模預(yù)訓(xùn)練模型的價值。

      PaddleHub 目前的預(yù)訓(xùn)練模型覆蓋了圖像分類、目標(biāo)檢測、詞法分析、Transformer、情感分析五大類別。未來會持續(xù)開放更多類型的深度學(xué)習(xí)模型,如語言模型、視頻分類、圖像生成等預(yù)訓(xùn)練模型。

      1.2 對比PytorchHub與PaddleHub

      1.2.1 PytorchHub

      GAN

      PytorchHub

      DCGAN on

      FashionGen

      PGAN

      Speech

      Tacotron2

      WaveGlow

      NLP

      GPT

      BERT

      CV

      SqueezeNet

      Vgg-Nets

      D

      eeplabv3-ResNet101

      ShuffleNetV2

      NesnseNet

      FCN-ResNet101

      GoogLeNet

      Incption_V3

      MobileNetV2

      ResNeXt

      AlexNet

      ResNet

      GAN

      PytorchHub

      DCGAN on

      FashionGen

      PGAN

      Speech

      Tacotron2

      WaveGlow

      NLP

      GPT

      BERT

      CV

      SqueezeNet

      Vgg-Nets

      D

      eeplabv3-ResNet101

      ShuffleNetV2

      NesnseNet

      FCN-ResNet101

      GoogLeNet

      Incption_V3

      MobileNetV2

      ResNeXt

      AlexNet

      ResNet

      1.2.2 PaddleHub

      CV

      resnet_v2_50_imagenet

      ssd_mobilenet_v1_pascal

      mobilenet_v2_imagenet

      nasnet_imagenet

      pnasnet_imagenet

      resnet_v2_101_imagene

      resnet_v2_152_imagenet

      NLP

      lac

      bert

      Chinese

      Cased*2

      uncased*2

      multi_cased

      ernie

      senta_bilstm

      emotion_detecdtion_textcnn

      lexical_analysis

      dureader_machine_reading

      simnet_bow_pairwise

      dmtk_models

      sentiment_classification

      dialogue

      human

      matchin

      seq2seq

      keywords

      CV

      resnet_v2_50_imagenet

      ssd_mobilenet_v1_pascal

      mobilenet_v2_imagenet

      nasnet_imagenet

      pnasnet_imagenet

      resnet_v2_101_imagene

      resnet_v2_152_imagenet

      NLP

      lac

      bert

      Chinese

      Cased*2

      uncased*2

      multi_cased

      ernie

      senta_bilstm

      emotion_detecdtion_textcnn

      lexical_analysis

      dureader_machine_reading

      simnet_bow_pairwise

      dmtk_models

      sentiment_classification

      dialogue

      human

      matchin

      seq2seq

      keywords

      1.2.3 調(diào)用PaddleHub

      目前PytorchHub不支持命令行運行,但PaddleHub支持,命令行運行就是指我們安裝PaddleHub后,可以無需進(jìn)入python環(huán)境,即可快速體驗PaddleHub無需代碼、一鍵預(yù)測的命令行功能。需要注意的是,在PaddleHub中,既可以支持命令行使用,即在終端輸入

      hub run XXX(模型) --input_text XXX(需要預(yù)測的內(nèi)容)

      1

      也可以支持調(diào)用api

      import paddlehub as hub hub.finetune_and_eval( task, data_reader, feed_list, config=None)

      1

      2

      3

      4

      5

      6

      7

      1.3 Model與Module

      實際上,PaddleHub為Model和Module的管理和使用都提供了命令行工具,但是model和module是有區(qū)別的,一個是模型,一個是模塊。

      model表示預(yù)訓(xùn)練好的參數(shù)和模型,當(dāng)需要使用Model進(jìn)行預(yù)測時,需要模型配套的代碼,進(jìn)行模型的加載,數(shù)據(jù)的預(yù)處理等操作后,才能進(jìn)行預(yù)測。我們在使用PaddleHub來調(diào)用模型時,可以使用hub download 命令獲取到最新的model再進(jìn)行實驗。module是model的一個可執(zhí)行模塊,簡單來說,一個Module可以支持直接命令行預(yù)測,也可以配合PaddleHub Finetune API,通過少量代碼實現(xiàn)遷移學(xué)習(xí)。 需要注意的是,不是所有的Module都支持命令行預(yù)測; (例如BERT/ERNIE Transformer類模型,一般需要搭配任務(wù)進(jìn)行finetune) 也不是所有的Module都可用于finetune(例如LAC詞法分析模型,我們不建議用戶用于finetune)

      1.4 Fine-tune

      PyTorchHub 不支持Fine-tune,PaddleHub支持。這一點倒是挺讓人意外的,如果通過hub加載了預(yù)訓(xùn)練模型,但是無法Fine-tune,那有什么意義呢?僅僅只是為了試試paper中的效果好不好嗎?本來我還對此頗有懷疑,于是去看了pytorchhub.org官網(wǎng)下的文檔,發(fā)現(xiàn)目前pytorchhub確實不支持hub一鍵式fine-tuning,現(xiàn)有模型的finetuning還是基于傳統(tǒng)的腳本式調(diào)參。

      PaddleHub在Fine-tune這一塊做的很完善,在前一個板塊也給大家詳細(xì)舉了示例講解,在PaddleHub的官方gihub中,有非常詳細(xì)的Fine-tune教程,大家可以參考:

      1.4.1 PaddleHub圖像分類遷移

      https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub圖像分類遷移教程

      1

      1.4.2 PaddleHub文本分類遷移

      https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub文本分類遷移教程

      1

      總之,從這四個維度上,個人感覺PytorchHub更像一個小工具,幫助大家迅速試用一下開源的新模型,但是真正到實際應(yīng)用,還是要基于老的一套的fine-tuning,不能直接從hub里調(diào)用fine-tune的api,所以并不實用。對于遷移學(xué)習(xí)來說,F(xiàn)ine-tune是必不可少的,雖然我們有預(yù)訓(xùn)練的模型,但是新任務(wù)的場景和數(shù)據(jù)都不相同,直接使用預(yù)訓(xùn)練模型其實很難得到很好的效果,所以從工業(yè)級實用的角度來說,PaddleHub做的要更成熟一些,等稍后支持了用戶自定義上傳模型后大家可以多體驗體驗。

      面,我們具體來看看PaddleHub如何直接使用命令行,調(diào)用一行代碼show出結(jié)果& 使用Finetune Api來對模型進(jìn)行微調(diào),并舉一個實例教大家一步一步實現(xiàn)。

      2.1 PaddleHub安裝

      環(huán)境依賴

      Python==2.7 or Python>=3.5

      PaddlePaddle>=1.4.0

      安裝

      pip install paddlehub

      2.2 命令行快速體驗

      PaddleHub中的模型

      安裝好后,不需要進(jìn)入python環(huán)境import就可以直接先體驗hub的便捷,因為在PaddleHub中hub可以作為一個獨立的模塊直接運行。PaddleHub目前包含圖像分類、目標(biāo)檢測、詞法分析、Transformer、情感分析五大類。

      Usage: hub Commands: clear Clear all cached data. config Configure PaddleHub. convert Convert model to PaddleHub-Module. download Download PaddlePaddle pretrained module files. help Show help for commands. install Install PaddleHub module. list Show help for commands. run Run the specific module. search Search PaddleHub pretrained model through model keywords. serving Start Module Serving or Bert Service for online predicting. show Show the information of PaddleHub module. uninstall Uninstall PaddleHub module. version Show PaddleHub's version.

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      一行代碼預(yù)測:

      分詞

      # 使用百度詞法分析工具LAC進(jìn)行分詞 $ hub run lac --input_text "今天的你真好看" [{'tag': ['TIME', 'u', 'r', 'd', 'a'], 'word': ['今天', '的', '你', '真', '好看']}]

      1

      2

      3

      情感分析

      # 使用百度Senta情感分析模型對句子進(jìn)行預(yù)測 $ hub run senta_bilstm --input_text "老鐵666,帶你開黑" [{'text': '老鐵666,帶你開黑', 'sentiment_key': 'positive', 'sentiment_label': 2, 'positive_probs': 0.7206, 'negative_probs': 0.2794}]

      1

      2

      3

      目標(biāo)檢測

      #使用SSD檢測模型對圖片進(jìn)行目標(biāo)檢測 hub run ssd_mobilenet_v1_pascal --input_path test_img_bird.jpg

      1

      2

      [{'data': [{'label': 'bird', 'confidence': 0.9935706853866577, 'left': 182.32740783691406, 'top': 110.21607208251953, 'right': 316.4570007324219, 'bottom': 228.32887268066406}, {'label': 'bird', 'confidence': 0.9861606359481812, 'left': 325.08056640625, 'top': 67.50239562988281, 'right': 454.9098815917969, 'bottom': 158.6644744873047}, {'label': 'bird', 'confidence': 0.9371040463447571, 'left': 76.58110809326172, 'top': 156.67181396484375, 'right': 148.7028350830078, 'bottom': 234.810546875}], 'path': 'work/1.jpg'}]

      1

      利用 輸出轉(zhuǎn)至將輸出檢測結(jié)果放置在text文件中。

      import sys,os,math,time sys.path.append("/home/aistudio/external-libraries") import matplotlib.pyplot as plt from numpy import * !hub run ssd_mobilenet_v1_pascal --input_path work/1.jpg > work/1.txt

      1

      2

      3

      4

      5

      6

      結(jié)果的內(nèi)容為:

      with open(resultfile, 'r') as f: strall = f.readlines()[0] exec('data=%s'%strall) rect = data[0]['data'] print(type(rect), len(rect), shape(rect), rect)

      1

      2

      3

      4

      5

      6

      3 (3,) [{'label': 'bird', 'confidence': 0.9935706853866577, 'left': 182.32740783691406, 'top': 110.21607208251953, 'right': 316.4570007324219, 'bottom': 228.32887268066406}, {'label': 'bird', 'confidence': 0.9861606359481812, 'left': 325.08056640625, 'top': 67.50239562988281, 'right': 454.9098815917969, 'bottom': 158.6644744873047}, {'label': 'bird', 'confidence': 0.9371040463447571, 'left': 76.58110809326172, 'top': 156.67181396484375, 'right': 148.7028350830078, 'bottom': 234.810546875}]

      1

      2

      3

      4

      img = cv2.imread(imgfile) for r in rect: title = '%s:%.4f'%(r['label'], r['confidence']) startpoint = (int(r['left']), int(r['top'])) endpoint = (int(r['right']), int(r['bottom'])) cv2.rectangle(img, startpoint, endpoint, (255, 255, 0), 1) cv2.putText(img, title, startpoint, fontFace=cv2.FONT_HERSHEY_PLAIN, fontScale=1, color=(255,0,0)) plt.clf() plt.figure(figsize=(12,12)) plt.axis("off") plt.imshow(img)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      2.3 29種模型

      PaddleHub目前支持29種模型,主要以CV和NLP模型為主,包括NLP目前最火的BERT和百度自己自己研發(fā)開源的Ernie,以及CV中的ssd-mobilenet、resnet-50、resnet-152等。

      NLP預(yù)測

      數(shù)據(jù)通過 —input_text或—input_file導(dǎo)入來實現(xiàn)單次預(yù)測和批量預(yù)測

      # 單文本預(yù)測 hub run lac --input_text "今天是個好日子" # 多文本分析 hub run lac --input_file test.txt

      1

      2

      3

      4

      CV預(yù)測

      數(shù)據(jù)通過—input_path或—input_file導(dǎo)入來實現(xiàn)單次預(yù)測和批量預(yù)測

      # 單張照片預(yù)測 hub run ssd_mobilenet_v1_pascal --input_path test.jpg # 多張照片預(yù)測 hub run ssd_mobilenet_v1_pascal --input_file test.txt

      1

      2

      3

      4

      3.1 Fine-Tune

      Fine-tune是遷移學(xué)習(xí)中使用最多的方式之一,通常我們可以在預(yù)訓(xùn)練好的模型上進(jìn)行微調(diào)來實現(xiàn)模型遷移,從而達(dá)到模型適應(yīng)新領(lǐng)域(Domain)數(shù)據(jù)的目的。上圖是做一個完整的遷移學(xué)習(xí)需要的步驟,下面舉個實例教大家如何用PaddleHub做圖像分類遷移學(xué)習(xí)

      3.2 訓(xùn)練過程

      3.2.1 準(zhǔn)備工作

      安裝paddlepaddle和paddlehub

      pip install paddlepaddle( 推薦安裝1.4.0版本以上) pip install paddlehub

      1

      2

      3

      3.2.2 選擇模型

      此處使用經(jīng)典的ResNet-50作為預(yù)訓(xùn)練模型

      import sys,os,math,time sys.path.append("/home/aistudio/external-libraries") import matplotlib.pyplot as plt from numpy import * import paddlehub as hub module_map = { "resnet50": "resnet_v2_50_imagenet", "resnet101": "resnet_v2_101_imagenet", "resnet152": "resnet_v2_152_imagenet", "mobilenet": "mobilenet_v2_imagenet", "nasnet": "nasnet_imagenet", "pnasnet": "pnasnet_imagenet" } module_name = module_map["resnet50"] module = hub.Module(name = module_name)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      3.2.3 準(zhǔn)備數(shù)據(jù)

      # 直接用PaddleHub提供的數(shù)據(jù)集 dataset = hub.dataset.DogCat()# 生成readerdata_reader = hub.reader.ImageClassificationReader( image_width=module.get_expected_image_width(), image_height=module.get_expected_image_height(), images_mean=module.get_pretrained_images_mean(), images_std=module.get_pretrained_images_std(), dataset=dataset)

      1

      2

      3

      4

      5

      6

      7

      3.2.4 Task

      由于貓狗分類是一個二分類的任務(wù),而我們下載的分類module是在ImageNet數(shù)據(jù)集上訓(xùn)練的千分類模型,所以我們需要對模型進(jìn)行簡單的微調(diào),把模型改造為一個二分類模型:

      1. 獲取module的上下文環(huán)境,包括輸入和輸出的變量,以及Paddle Program;

      2. 從輸出變量中找到特征圖提取層feature_map;

      3. 在feature_map后面接入一個全連接層,生成Task

      input_dict, output_dict, program = module.context(trainable=True) img = input_dict["image"] feature_map = output_dict["feature_map"] task = hub.create_img_cls_task( feature=feature_map, num_classes=dataset.num_labels) feed_list = [img.name, task.variable("label").name]# 設(shè)置configconfig = hub.RunConfig( use_cuda=False, num_epoch=1, checkpoint_dir="cv_finetune_turtorial_demo", batch_size=32, log_interval=10, eval_interval=50, strategy=hub.finetune.strategy.DefaultFinetuneStrategy())

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      3.2.5 啟動Fine-Tune

      可以選擇finetune_and_eval接口來進(jìn)行模型訓(xùn)練,這個接口在finetune的過程中,會周期性的進(jìn)行模型效果的評估,以便我們了解整個訓(xùn)練過程的性能變化。

      訓(xùn)練過程中的性能數(shù)據(jù)會被記錄到本地,我們可以通過visualdl來可視化這些數(shù)據(jù)。我們在shell中輸入以下命令來啟動visualdl,其中${HOST_IP}為本機(jī)IP,需要用戶自行指定

      $ visualdl --logdir ./cv_finetune_turtorial_demo/vdllog --host ${HOST_IP} --port 8989

      1

      啟動服務(wù)后,我們使用瀏覽器訪問${HOST_IP}:8989,可以看到訓(xùn)練以及預(yù)測的loss曲線和accuracy曲線

      最后再按照常規(guī)流程對模型進(jìn)行預(yù)測即可。

      ● 相關(guān)圖表鏈接:

      圖1.4.1 PytorchHub與PaddleHub對比

      圖2.2.1 目標(biāo)檢測

      圖2.2.2 標(biāo)注后處理的結(jié)果

      圖2.4.1 Fine-tune全景圖

      圖3.2 PaddleHub+FineTune流程圖

      圖3.2.1 訓(xùn)練過程以及預(yù)測曲線

      GitHub 機(jī)器學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel2010中分?jǐn)?shù)數(shù)字格式怎么設(shè)置?
      下一篇:1024節(jié)使用應(yīng)用魔方做個航天飛船控制臺大屏丨【玩轉(zhuǎn)應(yīng)用魔方】
      相關(guān)文章
      亚洲欧美自偷自拍另类视| 国产亚洲人成在线影院| 亚洲国产精品嫩草影院久久| 91在线亚洲综合在线| 亚洲综合中文字幕无线码| 亚洲国产成人va在线观看网址| 亚洲天堂视频在线观看| 亚洲午夜国产精品无卡| 亚洲精品中文字幕乱码影院| 亚洲理论精品午夜电影| 亚洲福利视频网站| 亚洲国产精品久久网午夜| 亚洲国产日韩在线成人蜜芽| 亚洲一区二区三区四区视频| 日本亚洲精品色婷婷在线影院| 日本亚洲精品色婷婷在线影院| jiz zz在亚洲| 亚洲AV无码专区亚洲AV桃| 爱爱帝国亚洲一区二区三区| 亚洲国产成人a精品不卡在线| 亚洲人成国产精品无码| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲欧洲国产成人综合在线观看 | 亚洲av再在线观看| 亚洲成AV人在线观看网址| 亚洲无码视频在线| 日韩亚洲欧洲在线com91tv| 亚洲AV无码乱码在线观看裸奔| 久久亚洲精品国产精品| 亚洲婷婷综合色高清在线| 中文字幕亚洲综合小综合在线| 亚洲国产精品嫩草影院| 亚洲高清无码在线观看| 亚洲啪啪AV无码片| 亚洲日本中文字幕| 亚洲一区二区三区在线网站| 亚洲高清国产拍精品熟女| 亚洲A丁香五香天堂网| 国产亚洲欧洲精品| 亚洲第一精品电影网| 亚洲欧洲免费无码|