主頁 >  其他 > 模仿學習與強化學習的結合(原理講解與ML-Agents實作)

模仿學習與強化學習的結合(原理講解與ML-Agents實作)

2021-12-28 07:27:32 其他

簡介

模仿學習是強化學習的好伙伴,使用模仿學習可以讓智能體在比強化學習短得多的時間內得到與人類操作相近的結果,但是這種做法并不能超越人類,而強化學習能夠得到遠超人類的智能體,但訓練時間往往非常漫長,因此我們希望讓智能體并不是從零開始學,我們給予智能體人類的演示,在學習人類演示的基礎上,再進行強化學習,這樣往往能大大減少強化學習的訓練時間,在金字塔環境中,只需要四輪人類的游戲資料,就能使訓練步數減少四分之三以上,因此,模仿學習和強化學習往往是一起使用的,好處是既能大大加快訓練速度,又能得到超越人類的超高水準,

模仿學習是一種Supervised Learning(監督學習)的方法,也就是根據我們給定人類演示中的狀態和對應的動作,就能訓練智能體的策略網路去逼近我們的這個演示,光用模仿學習的缺點是,人類沒有辦法給出環境中所有的狀態對應的做法,往往人類的演示中只包含了所有狀態中的一小部分的應對方式,因此只進行模仿學習后,智能體沒有辦法應對人類演示資料中沒有遇到過的情況,因此才需要用強化學習進行彌補,

ML-Agents提供了關于模仿學習的兩種演算法,一種是Generative Adversarial Imitation Learning(生成對抗模仿學習),簡稱GAIL,還有一種是Behavior Cloning(行為克隆),簡稱BC,在大多數情況下,兩者可以一起使用,

如下圖,在金字塔環境中,同時使用生成對抗模仿學習,行為克隆,好奇心獎勵,普通強化學習四種方法的情況下,得到相同結果的時長大大減少,

在這里插入圖片描述

下面來講解一下對應的演算法,

注意:這里需要對ML-Agents有一定的了解,詳情請見:Unity強化學習之ML-Agents的使用、ML-Agents命令及配置大全,

Behavioral Cloning

Behavior Cloning(行為克隆),簡稱BC,它的思想較為簡單,就是把智能體的策略網路訓練得和人類的演示資料的行為模式越接近越好,也就是說,輸入相同的狀態s,應當有相近的輸出a,這單純就是一個Supervised Learning,每一個狀態相當于輸入的特征,專家輸出的動作相當于Label(標簽),我們只需要讓模型的輸出接近我們的Label即可,

在這里,BC通常用作預訓練,因此我們需要先進行BC,再進行強化學習,

現在我們看看組態檔中的引數是怎么設定的,

    behavioral_cloning:
      demo_path: Project/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPushBlock.demo
      steps: 50000
      strength: 1.0
      samples_per_update: 0

在使用BC之前,應當確保自己已經錄制了演示檔案(后面會講怎么錄制演示),其中的引數含義如下:

demo_path:演示檔案的路徑,

strength:默認為1,表示模仿學習相對于PPO演算法的學習率,表示了BC改變策略的強度,

steps:通常BC應當在模仿學習進行到智能體能夠獲取獎勵時停止,從而正式進入強化學習,當運行的步數大于steps的時候,模仿學習的學習率將為0,也就是不再起作用,如果設為0,那么將會在整個程序中持續進行BC,

batch_size:默認為強化學習使用的batch_size,表示一次性使用多少條資料進行梯度遞減,推薦:512-5120

num_epoch:默認為PPO設定,梯度下降期間需要從經驗池中抽取多少次,推薦:512-5120

samples_per_update:默認為0,每次更新期間使用的最大樣本數,0表示每次拿所有演示資料進行訓練,如果演示資料非常大,應當降低此值防止過擬合,

Generative Adversarial Imitation Learning

Generative Adversarial Imitation Learning(生成對抗模仿學習),簡稱GAIL,這是受到了生成對抗網路(簡稱GAN)的啟發,對應有一個生成模型和一個判別模型 ,生成模型的目標是生成與真人操作相類似的資料欺騙判別模型,判別模型的任務是盡可能區分哪些是真實資料,哪些是生成的假資料,即是一個輸出reward的網路,我們要盡量保持真實的資料擁有比生成資料更高的累計reward,在彼此對抗中,兩個網路能成長為能夠生成超接近于人類資料的生成模型,以及能夠判別非常解決人類資料的生成資料的判別模型,

GAIL屬于Inverse RL的范疇,即逆強化學習,原本的強化學習是環境給定Reward和下一個狀態 s t + 1 s_{t+1} st+1?,我們用來學習最優的策略,現在,我們需要自己學習出一個輸出Reward網路,即給定 s t s_t st? a t a_t at?的情況下,輸出Reward,然后我們在通過這個自己訓練出來的Reward函式來訓練我們的策略模型,這種做法的好處是策略不是直接監督學習的,因此使得學習到的策略更加通用,

策略模型可以通過各種的演算法來訓練,這部分屬于強化學習的領域,論文中使用了TRPO演算法,

GAIL相當于另外的一個內在獎勵,是可以和強化學習的外部獎勵加在一起進行訓練的,專家獎勵設得越高,智能體在環境中就越趨向于模仿專家的行為,合理設定其獎勵上限,智能體就會在一定程度上模仿專家行為的同時,更多地去探索環境,尋找更好的策略,金字塔案例中設為了環境獎勵的0.01,

在這里插入圖片描述

在這里插入圖片描述

論文原文:

Generative Adversarial Imitation Learning

參考資料:https://proceedings.neurips.cc/paper/2016/file/cc7e2b878868cbae992d1fb743995d8f-Paper.pdf

【強化學習】GAIL生成對抗模仿學習詳解《Generative adversarial imitation learning》

【論文筆記】GAIL與MAGAIL(1)

GAIL,基于GAN的一種模仿學習方法

現在我們看看組態檔中的引數是怎么設定的,

    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
      gail:
        gamma: 0.99
        strength: 0.01
        network_settings:
          normalize: false
          hidden_units: 128
          num_layers: 2
          vis_encode_type: simple
        learning_rate: 0.0003
        use_actions: false
        use_vail: false
        demo_path: Project/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPushBlock.demo

可以看到GAIL是屬于額外的獎勵信號的一部分,在使用GAIL之前,應當確保自己已經錄制了演示檔案(后面會講怎么錄制演示),其中的引數含義如下:

strength:原始的GAIL獎勵乘以strength就是實際的GAIL獎勵,如果演示資料并不是非常完美應當設得較低(0.01 - 0.1),使得智能體能夠專注于外部獎勵而不是完全復制演示資料,推薦范圍:0.01 - 1

gamma:GAIL獎勵的折扣因子,

demo_path:演示檔案的路徑,

learning_rate:更新判別器的學習率,如果GAIL訓練不穩定,應當減少,

network_settings:判別器的網路規范,

normalize:是否對輸入進行標準化,

hidden_units:隱藏層中節點的個數,推薦范圍:32 - 512

num_layers:神經網路中隱藏層的層數,推薦范圍:1 - 3

vis_encode_type:對應于可視化觀測進行編碼的編碼器型別,選項包含:simple(默認):兩個卷積層組成的簡單編碼器,nature_cnn:三個卷積層組成,詳見https://www.nature.com/articles/nature14236,resnet:由三個堆疊的層構成,是比其他兩個更大的網路,詳見https://arxiv.org/abs/1802.01561,

use_actions:判別器是獲取狀態和動作進行輸入,還是只獲取狀態作為輸入,如果希望智能體模仿演示中的動作,應當設為true,如果只是希望能夠到達相同的狀態但保留動作的多樣性,應當設為false,設為false會比較穩定,但學習較慢,

use_vail:對判別器的性能進行額外的約束,迫使判別器學習一種更一般的表示,降低了其在辨別方面的過擬合,使學習更加穩定,但也會增加訓練時間,如果模仿學習不成功,可以啟用這個功能,詳情參見論文:https://arxiv.org/abs/1810.00821,我也對此做過相應的講解:論文閱讀:Variational Discriminator Bottleneck

錄制演示

首先需要將Demonstration Recorder這個組件添加到智能體身上:

在這里插入圖片描述

其中引數的含義如下:

Record表示是否開啟錄制,Num Steps To Record表示錄制到多少步自動停止(如果設為0那么只有自己點擊停止運行才能停止),Demostration Name表示生成的檔案名是什么,Demostration Directory表示生成檔案放在什么目錄,

點擊開始游戲之前,如果自己手動操作,那就不要給智能體掛上策略模型,然后在智能體代碼中添加上Heuristic方法用以控制模型的輸出:

public override void Heuristic(in ActionBuffers actionsOut)
{
    var discreteActionsOut = actionsOut.DiscreteActions;
    if (Input.GetKey(KeyCode.D))
    {
        discreteActionsOut[0] = 3;
    }
    else if (Input.GetKey(KeyCode.W))
    {
        discreteActionsOut[0] = 1;
    }
    else if (Input.GetKey(KeyCode.A))
    {
        discreteActionsOut[0] = 4;
    }
    else if (Input.GetKey(KeyCode.S))
    {
        discreteActionsOut[0] = 2;
    }
}

同時我們也可以自己寫一個硬編碼的控制智能體的腳本,或者之前有訓練較好的策略網路拖進智能體中,我們就可以讓智能體自己進行操作,

演示完成后,ML-Agents會在對應的位置生成一個.demo檔案,在Unity中會顯示如下資料:

在這里插入圖片描述

其中顯示出錄制的輸入,輸出,錄制了多少步數,平均獎勵是多少,運行了多少個episode等資料,

實戰分析

推箱子案例

相應環境說明參見之前的文章:ML-Agents案例之推箱子游戲

之前的文章采用了強化學習演算法PPO和SAC以及MA-POCA來訓練智能體,訓練步數超過幾十萬個step達到比較滿意的效果,現在我們采用強化學習 + BC + GAIL來訓練智能體,首先我們需要錄制好對應的演示檔案,并修改組態檔如下:

behaviors:
  PushBlock:
    trainer_type: ppo
    hyperparameters:
      batch_size: 128
      buffer_size: 2048
      learning_rate: 0.0003
      beta: 0.01
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3
      learning_rate_schedule: linear
    network_settings:
      normalize: false
      hidden_units: 256
      num_layers: 2
      vis_encode_type: simple
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
      gail:
        gamma: 0.99
        strength: 0.01
        network_settings:
          normalize: false
          hidden_units: 128
          num_layers: 2
          vis_encode_type: simple
        learning_rate: 0.0003
        use_actions: false
        use_vail: false
        demo_path: Project-new/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPushBlock.demo
    keep_checkpoints: 5
    max_steps: 100000
    time_horizon: 64
    summary_freq: 2500
    behavioral_cloning:
      demo_path: Project-new/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPushBlock.demo
      steps: 50000
      strength: 1.0
      samples_per_update: 0

可以看到相比于平常的PPO強化學習演算法,組態檔中加入了behavioral_cloning和gail兩個部分,配置了對應的引數,現在開啟訓練,訓練效果如下:

在這里插入圖片描述

可以看到僅僅經過5000個step,就能達到滿意的效果,訓練時間是直接使用強化學習的幾十分之一,

演示操作得越完美,那么訓練時間就能縮短越多,

爬蟲案例

相應環境說明參見之前的文章:ML-Agents案例之Crawler

這里甚至不用采用外部獎勵,只用了GAIL + BC就能進行訓練,訓練時長甚至比純強化學習更短,

behaviors:
  Crawler:
    trainer_type: ppo
    hyperparameters:
      batch_size: 2024
      buffer_size: 20240
      learning_rate: 0.0003
      beta: 0.005
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3
      learning_rate_schedule: linear
    network_settings:
      normalize: true
      hidden_units: 512
      num_layers: 3
      vis_encode_type: simple
    reward_signals:
      gail:
        gamma: 0.99
        strength: 1.0
        network_settings:
          normalize: true
          hidden_units: 128
          num_layers: 2
          vis_encode_type: simple
        learning_rate: 0.0003
        use_actions: false
        use_vail: false
        demo_path: Project/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawler.demo
    keep_checkpoints: 5
    max_steps: 10000000
    time_horizon: 1000
    summary_freq: 5000
    behavioral_cloning:
      demo_path: Project/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawler.demo
      steps: 50000
      strength: 0.5
      samples_per_update: 0

在這里插入圖片描述

金字塔案例

相應環境說明參見之前的文章:ML-Agents案例之金字塔

組態檔如下:

behaviors:
  Pyramids:
    trainer_type: ppo
    time_horizon: 128
    max_steps: 1.0e7
    hyperparameters:
      batch_size: 128
      beta: 0.01
      buffer_size: 2048
      epsilon: 0.2
      lambd: 0.95
      learning_rate: 0.0003
      num_epoch: 3
    network_settings:
      num_layers: 2
      normalize: false
      hidden_units: 512
    reward_signals:
      extrinsic:
        strength: 1.0
        gamma: 0.99
      curiosity:
        strength: 0.02
        gamma: 0.99
        network_settings:
          hidden_units: 256
      gail:
        strength: 0.01
        gamma: 0.99
        demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
    behavioral_cloning:
      demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
      strength: 0.5
      steps: 150000

可以看到,這里采用了 RL + Curosity + GAIL + BC,四大元素齊聚,每一樣都為我們訓練提供了很大的幫助,效果如下:

在這里插入圖片描述

在最初我們訓練成功時,需要至少150000個step才能勉強達到效果,加入GAIL后,只需要50000個step,再加入BC,更是縮短到了25000個step,可見模仿學習和強化學習的能夠產生奇妙的反應,達到1 + 1大于2的效果,

在訓練智能體解決相對困難的任務時,我們往往就需要用這種模仿學習+強化學習的方法解決問題,

看圖配對案例

相應環境說明參見之前的文章:[ML-Agents案例之看圖配對](https://blog.csdn.net/tianjuewudi/article/details/121692539)

組態檔如下:

behaviors:
  Hallway:
    trainer_type: ppo
    hyperparameters:
      batch_size: 128
      buffer_size: 1024
      learning_rate: 0.0003
      beta: 0.01
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3
      learning_rate_schedule: linear
    network_settings:
      normalize: false
      hidden_units: 128
      num_layers: 2
      vis_encode_type: simple
      memory:
        sequence_length: 64
        memory_size: 256
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
      gail:
        gamma: 0.99
        strength: 0.01
        learning_rate: 0.0003
        use_actions: false
        use_vail: false
        demo_path: Project/Assets/ML-Agents/Examples/Hallway/Demos/ExpertHallway.demo
    keep_checkpoints: 5
    max_steps: 10000000
    time_horizon: 64
    summary_freq: 10000

可以看到,我們這里只增加了一個GAIL,但對訓練速度的提升仍然十分顯著,在這種需要記憶的環境下,僅僅十萬個step就使Loss迅速減少:

在這里插入圖片描述

總結

Behavioral Cloning和Generative Adversarial Imitation Learning相當于強化學習上的兩個掛件,能夠十分顯著得增強強化學習的效果,其中Behavioral Cloning相當于一個預訓練,只在前期使用;而Generative Adversarial Imitation Learning則可以貫穿整個強化學習的始終,相當于又增加了一個內部獎勵,和專家演示的策略越接近,這個獎勵越大,但這個獎勵不能蓋過外部獎勵,以便智能體能探索更多的最優解,

相關文章:

模仿學習(Imitation Learning)入門

ML-Agents案例之Crawler

ML-Agents案例之推箱子游戲

ML-Agents案例之金字塔

ML-Agents案例之看圖配對

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/395016.html

標籤:AI

上一篇:【預測模型】基于麻雀演算法改進廣義回歸神經網路(GRNN)實作資料預測matlab代碼

下一篇:(pytorch復現)基于深度強化學習(CNN+dueling network/DQN/DDQN/D3QN)的自適應車間調度(JSP)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more