論文閱讀筆記:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition

論文閱讀筆記:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition

  • 1 背景
  • 2 創新點
  • 3 方法
    • 3.1 回顧softmax損失
    • 3.2 統一交叉熵損失
    • 3.3 人臉驗證中的UCE損失
    • 3.4 進一步的優化
      • 3.4.1 邊際UCE損失
      • 3.4.2 平衡BCE損失
  • 4 實驗
    • 4.1 消融實驗
    • 4.2 和SOTA方法對比

論文:UniFace_ICCV_2023_paper.pdf

代碼:https://github.com/cvi-szu/uniface

1 背景

一個通用的人臉識別系統包含3個核心步驟:人臉檢測、人臉特征提取和識別(包括一對一驗證和一對其余識別)。因此,判別性的人臉特征學習對于人臉識別系統至關重要。具體來說,一個主體的面部特征應該接近屬于同一身份的特征,而遠離其他身份的特征,即來自正對的最小特征相似度理想情況下應該大于一個閾值 t t t ,來自負對的最大特征相似度應該小于這個閾值t。

基于深度學習的人臉識別方法根據其學習目標可以分為兩類:

  • 樣本到樣本的距離

  • 樣本到類的相似性

基于樣本間距離的方法將人臉圖像映射到一個高度緊湊的歐式特征空間,其中距離被用來度量人臉特征的相似性。然而,這類方法的訓練是困難的,因為需要復雜的采樣策略來構建有效的負對和正對/元組。

基于樣本間相似度的方法通常采用softmax損失作為學習目標,將人臉識別作為多類別分類問題來處理。一些工作提出將softmax損失與額外精心設計的損失相結合,以增加類內相似性或降低類間相似性。這些方法引入了額外的超參數,需要對超參數進行精細的調整。其他工作(如L-softmax損失,SphereFace,AMsoftmax,CosFace 和 ArcFace等)通過引入類間邊距對原始的softmax損失進行擴展,以減少類內距離,增大類間距離。然而,Softmax損失只是鼓勵單個訓練樣本與其對應的正類代理之間的最大角度相似度,并沒有考慮該正類代理與其他樣本之間的相似性。換句話說,在softmax和邊際softmax損失下,很難選擇一個統一的閾值 t t t 來分離負樣本對和正樣本對,如圖1所示。
在這里插入圖片描述

為了解決這個問題,本文提出了一個統一交叉熵損失UCE,他明確的鼓勵所有正樣本到類的相似度都大于一個閾值 t = c o s θ t t=cos\theta t t=cosθt,而所有負樣本到類的距離都小于這個閾值。作者進一步改進了UCE損失:

  • 引入了強制邊際

  • 提出了兩種可供選擇的方式來平衡大量人臉身份的訓練

作者將使用UCE損失訓練的人臉檢測模型命名為UniFace。

2 創新點

  • 在研究了softmax損失之后,作者發現它學習到的最小正樣本到類的相似度實際上并不能保證大于它的最大負樣本到類的相似度。為了解決這個問題,我們通過假設一個固定的閾值t來約束正負樣本對的相似性,從而設計了UCE損失。

  • 本文是第一個將統一的 t t t 作為一個自動可學習的參數納入深度人臉識別框架的工作。UCE損失鼓勵所有正樣本到類的相似度都大于負樣本到類的相似度,這與實際人臉識別應用的期望非常匹配。

  • UCE損失單獨使用效果很好,可以直接替代現有深度人臉識別模型(表1和表2)中的softmax損失。此外,作者還提出了UCE的兩個擴展,即邊際UCE和平衡UCE損失,以結合邊際和平衡策略來提高UCE損失的性能。值得注意的是,邊際UCE損失比softmax損失對超參數更加穩健(圖3 ( a ) )。

3 方法

3.1 回顧softmax損失

假設 M M M 是在由 N N N 個主體組成的面部樣本集 D D D 上訓練的深度人臉模型,
在這里插入圖片描述

其中, D i D_i Di? 表示包含同一主體 i i i 的面部圖像子集。對于任意樣本 X ∈ D X∈D XD,令:
在這里插入圖片描述

表示 X X X 的特征,其中 M M M 為特征向量的長度。然后,我們可以得到一個特征集合 F F F,
在這里插入圖片描述

在使用softmax損失訓練的人臉模型中,采用全連接(FC)分類器,權重矩陣 W W W 和偏置 b b b,根據 X X X 的特征 x x x 進行分類,其中:
在這里插入圖片描述

在式(4)中, W i ∈ R M × 1 W_i∈R^{M×1} Wi?RM×1 是主體 i i i 的類別代理。

為了方便,分別歸一化 W W W 并省略 B B B
在這里插入圖片描述

對于所有的 x ∈ F x∈F xF,將特征歸一化為 ∣ ∣ x ∣ ∣ = s ||x||=s ∣∣x∣∣=s

隨機抽取 N N N 個樣本 { X ( i ) } i = 1 N ? D \{X^{(i)}\}_{i=1}^N?D {X(i)}i=1N??D,其中 ? i , X ( i ) ∈ D i ?i,X^{(i)}∈D_i ?i,X(i)Di?。那么,對于給定的樣本 X ( i ) X^{(i)} X(i),典型的多類softmax損失為:
在這里插入圖片描述

其中,
在這里插入圖片描述

< x ( i ) , W j > <x^{(i)},W_j> <x(i),Wj?> 為兩個向量的內積。

我們稱 c o s θ x , w ( i i ) = 1 s W i T x ( i ) cos \theta_{x,w}^{(ii)} = \frac{1}{s}W_i^Tx^{(i)} cosθx,w(ii)?=s1?WiT?x(i) 為正樣本類間相似度, c o s θ x , w ( i j ) = 1 s W j T x ( i ) cos \theta_{x,w}^{(ij)} = \frac{1}{s}W_j^Tx^{(i)} cosθx,w(ij)?=s1?WjT?x(i) 為負樣本類間相似度,從而得到樣本類間相似度矩陣 S s a m ? c l a S_{sam-cla} Ssam?cla?
在這里插入圖片描述

為了正確分類 X ( i ) X(i) X(i),softmax損失鼓勵比負樣本到類的相似性 ( c o s θ x , w ( i j ) ) (cos \theta_{x,w}^{(ij)}) (cosθx,w(ij)?) 更大的正樣本到類的相似性 ( c o s θ x , w ( i i ) ) (cos \theta_{x,w}^{(ii)}) (cosθx,w(ii)?) ,即
在這里插入圖片描述

那么,存在 t i t_i ti? 使得:
在這里插入圖片描述

然而,softmax損失沒有考慮 c o s θ x , w ( j i ) cos \theta_{x,w}^{(ji)} cosθx,w(ji)? c o s θ x , w ( i i ) cos \theta_{x,w}^{(ii)} cosθx,w(ii)? 之間的關系。也就是說,可能存在一個負樣本對 ( x ( j ) , W i ) (x^{(j)},W_i) (x(j),Wi?) ,其相似度甚至大于正樣本對 ( x ( i ) , W i ) (x^{(i)},W_i) (x(i),Wi?),即可能存在一個樣本 X ( j ) ∈ D j , j ≠ i X^{(j)}∈D_j,j≠i X(j)Dj?,j=i,,其特征 x ( j ) x^{(j)} x(j) 滿足:
在這里插入圖片描述

我們預期來自正對的相似度大于某個閾值 t t t,來自負對的相似度小于 t t t。雖然在式(13)和(14)中,人臉圖像 X ( i ) X^{(i)} X(i) X ( j ) X^{(j)} X(j) 都被正確地歸類到正確地主體中。我們注意到,與我們的預期相反,正樣本對 ( x ( i ) , W i ) (x^{(i)},W_i) (x(i),Wi?) 比負樣本對 ( x ( j ) , W i ) (x^{(j)},W_i) (x(j),Wi?) 具有更小的相似度。由于 t i < t j t_i < t_j ti?<tj?,可以很容易地得出結論,沒有統一的相似度閾值 t = t i = t j t = t_i = t_j t=ti?=tj? 可以同時正確地將正樣本對 ( x ( i ) , W i ) (x^{(i)},W_i) (x(i),Wi?) ( x ( j ) , W i ) (x^{(j)},W_i) (x(j),Wi?) 與負樣本對 ( x ( j ) , W i ) (x^{(j)},W_i) (x(j),Wi?) 分開。

因此用式(11)中的樣本到類的相似度矩陣 S s a m ? c l a S_{sam-cla} Ssam?cla? 來選擇閾值是困難的,即softmax是鼓勵對角元素 c o s θ x , w ( i i ) cos \theta_{x,w}^{(ii)} cosθx,w(ii)? 在第 i i i 行占優,以實現樣本 X ( i ) X^{(i)} X(i) 的良好分類,而忽略了鼓勵 c o s θ x , w ( i i ) cos \theta_{x,w}^{(ii)} cosθx,w(ii)? 在第 i i i 列占優,然而這在人臉識別中也很重要。

3.2 統一交叉熵損失

為了避免式(14)中的問題,并鼓勵一個相似矩陣 S s a m ? c l a S_{sam-cla} Ssam?cla? 的行和列都是對角占優的。作者期望一個統一的閾值 t t t,使得:
在這里插入圖片描述
如果我們將特征與其正類代理之間的最大夾角定義為 θ p o s \theta_{pos} θpos?,將特征與其負類代理之間的最小夾角定義為 θ n e g \theta_{neg} θneg?,即:
在這里插入圖片描述
在這里插入圖片描述
那么,當且僅當 θ p o s ≤ θ n e g \theta_{pos}≤\theta_{neg} θpos?θneg?,且統一閾值 t = c o s θ t t=cos\theta_t t=cosθt?,存在一個閾值 t t t 使得任意樣本都滿足式(15),對任意 θ t \theta_t θt? 有效,其中:
在這里插入圖片描述

即圖1中所有行中所有的“×”都要在所有的“o”左邊。

如3.1中所述,softmax損失沒有考慮統一閾值 t t t 的約束。作者首次將統一閾值 t t t 作為一個可自動學習的參數加入到損失函數中。提出的統一交叉熵UCE損失前提是存在一個統一閾值 t = c o s θ t t=cos\theta_t t=cosθt?(即 θ p o s ≤ θ n e g \theta_{pos}≤\theta_{neg} θpos?θneg?)。從式(8)中的softmax開始推導:
在這里插入圖片描述

根據式(16)-(18),可得:
在這里插入圖片描述

不等式的詳細推導見附錄。

附錄證明過程:
在這里插入圖片描述
在這里插入圖片描述

定義UCE損失 L u c e ( X ( i ) ) L_{uce}(X^{(i)}) Luce?(X(i)) 為:
在這里插入圖片描述
其中 b ? = s c o s θ t + l o g ( N ? 1 ) \~b=scos\theta_t+log(N-1) b?=scosθt?+log(N?1) 是一個待學習的常數。

式(23)中第一項中的 e ? s c o s θ x , w ( i i ) + b ? = e ? s ( c o s θ x , w ( i i ) ? c o s θ t ? l o g ( N ? 1 ) s ) e^{-scos\theta _{x,w}^{(ii)}+\~b}=e^{-s(cos\theta_{x,w}^{(ii)}-cos\theta_t-\frac{log(N-1)}{s})} e?scosθx,w(ii)?+b?=e?s(cosθx,w(ii)??cosθt??slog(N?1)?) ,第二項中的 e s c o s θ x , w ( i j ) + b ? = e s ( c o s θ x , w ( i j ) ? c o s θ t ? l o g ( N ? 1 ) s ) e^{scos\theta _{x,w}^{(ij)}+\~b}=e^{s(cos\theta_{x,w}^{(ij)}-cos\theta_t-\frac{log(N-1)}{s})} escosθx,w(ij)?+b?=es(cosθx,w(ij)??cosθt??slog(N?1)?),縮放因子 s > 0 s>0 s>0,當模型訓練收斂時,則會出現 c o s θ x , w ( i i ) ? c o s θ t ? l o g ( N ? 1 ) s > 0 cos\theta_{x,w}^{(ii)}-cos\theta_t-\frac{log(N-1)}{s}>0 cosθx,w(ii)??cosθt??slog(N?1)?>0 , c o s θ x , w ( i j ) ? c o s θ t ? l o g ( N ? 1 ) s < 0 cos\theta_{x,w}^{(ij)}-cos\theta_t-\frac{log(N-1)}{s}<0 cosθx,w(ij)??cosθt??slog(N?1)?<0,即 c o s θ x , w ( i j ) < c o s θ t + l o g ( N ? 1 ) s < c o s θ x , w ( i i ) cos\theta_{x,w}^{(ij)}<cos\theta_t+\frac{log(N-1)}{s}<cos\theta_{x,w}^{(ii)} cosθx,w(ij)?<cosθt?+slog(N?1)?<cosθx,w(ii)? ,其中 l o g ( N ? 1 ) s \frac{log(N-1)}{s} slog(N?1)? 為常數可以忽略不計,所以訓練目標滿足式(15)。

UCE損失比softmax損失對正負樣本到類特征之間的舉例更有約束。當使用UCE損失代替softmax損失訓練模型時,期望最終的樣本特征更具有判別性。如圖2所示,在提出的UCE損失劃分的特征空間中, x ( 1 ) x^{(1)} x(1) W 1 W_1 W1? 之間的相似性比原始的softmax損失訓練增加,而 x ( 2 ) x^{(2)} x(2) W 1 W_1 W1? 之間的相似性降低。
在這里插入圖片描述

雖然UCE損失的最終公式(式(23))類似于二元交叉熵損失,但他們之間有幾個關鍵區別。首先,UCE損失是從顯式統一閾值 t t t 的目標設計的,用于約束正負樣本對的相似性,而BCE損失及其變體沒有這種顯式約束。其次,從softmax損失中推導出UCE損失,并通過清晰的數學推導給出了統一閾值 t t t 與偏差 b ? = s c o s θ t + l o g ( N ? 1 ) \~b=scos\theta_t+log(N-1) b?=scosθt?+log(N?1) 的關系,然后通過圖4(c)的定性說明來評估 t t t 是否符合人臉驗證的預期。最后,作者在一個大型的benchmark上系統的比較了UCE損失和BCE損失,其中作者比較了:

  1. 一個為不同類別分配各自偏置的標準BCE損失

  2. 一個直接刪除了任何偏置的修改BCE損失,這意味著偏置 b = 0 b=0 b=0

實驗結論表明,UCE損失比BCE損失的兩個樸素變體表現更佳,見表1。

3.3 人臉驗證中的UCE損失

在真實人臉驗證系統中,對于任意兩個人臉圖像樣本, X ( i ) ∈ D i , X ( j ) ∈ D j X^{(i)}∈D_i,X^{(j)}∈D_j X(i)Di?,X(j)Dj?,通過比較它們的特征相似度 g ( X ( i ) , X ( j ) ) g(X^{(i)},X^{(j)}) g(X(i),X(j)) 與置信度閾值 t ? t^* t?,選擇一個統一的閾值來驗證他們是否來自同一主體,這個過程隱含了一個損失 L v L_v Lv?
在這里插入圖片描述

其中 α \alpha α 是重加權參數。

那么在訓練中,對于給定的 X ( i ) X^{(i)} X(i),它的損失為:
在這里插入圖片描述

對于每一個樣本,都會耗費大量的計算量,利用類代理 W i W_i Wi? 代替了 F i F_i Fi? 中的所有特征 x ( i ) x^{(i)} x(i),設計了一個合理的損失函數。對于所有的 i i i
在這里插入圖片描述

式(27)中,損失采用函數 R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x) ReLU(x)=max(0,x) x = 0 x=0 x=0 處不可微,一個合理的替代可以是 softplus 函數:
在這里插入圖片描述

β \beta β 趨于+∞時,softplus(x)趨于ReLU(x) 。

利用softplus函數,則 L v 3 ( X ( i ) ) L_{v3}(X^{(i)}) Lv3?(X(i)) 可代換為:
在這里插入圖片描述

當我們令 α = β = s \alpha=\beta=s α=β=s 時,
在這里插入圖片描述

損失 L v 4 ( X ( i ) ) L_{v4}(X^{(i)}) Lv4?(X(i)) 就是提出的UCE損失 L u c e ( X ( i ) ) L_{uce}(X^{(i)}) Luce?(X(i)),滿足 b ? ? = s t ? \~b^*=st^* b??=st?。因此,作者將UCE損失和人臉驗證聯系起來。

3.4 進一步的優化

3.4.1 邊際UCE損失

先前的工作表明邊際softmax損失比原始的性能更好。在這里通過增加一個余弦余量 m m m,將所提出的UCE損失擴展到邊際UCE損失:
在這里插入圖片描述

3.4.2 平衡BCE損失

L u c e L_{uce} Luce? L u c e ? m L_{uce-m} Luce?m? 只計算一個正樣本對 ( x ( i ) , W i ) (x^{(i)},W_i) (x(i),Wi?) 的相似度,但卻有 N-1 個負樣本對 ( x ( i ) , W j ) (x^{(i)},W_j) (x(i),Wj?) ,這種不平衡會導致不理想的性能。本文引入兩個參數來平衡正負樣本對的數量:
在這里插入圖片描述

其中 p j p_j pj? 是負樣本對 ( x ( i ) , W j ) (x^{(i)},W_j) (x(i),Wj?) 從均勻分布中抽樣得到的隨機數, λ \lambda λ r r r 分別是所有負樣本對的重加權和抽樣參數。不同的 λ \lambda λ r r r 的影響如圖3所示。
在這里插入圖片描述

4 實驗

4.1 消融實驗

UCE損失中超參數的消融實驗。
在這里插入圖片描述

不同框架中使用UCE損失的提升。
在這里插入圖片描述

normalized softmax損失,BCE損失和UCE損失的效果對比。
在這里插入圖片描述

4.2 和SOTA方法對比

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72453.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Metal學習筆記七:片元函數

知道如何通過將頂點數據發送到 vertex 函數來渲染三角形、線條和點是一項非常巧妙的技能 — 尤其是因為您能夠使用簡單的單行片段函數為形狀著色。但是&#xff0c;片段著色器能夠執行更多操作。 ? 打開網站 https://shadertoy.com&#xff0c;在那里您會發現大量令人眼花繚亂…

騰訊云 | 微搭低代碼快速開發數據表單應用

如上所示&#xff0c;登錄騰訊云微搭低代碼業務控制臺&#xff0c;開始新創建一個應用&#xff0c;創建應用的方式包括&#xff0c;根據實際的業務需求&#xff0c;從模版列表中選擇一個模板填入數據模型創建新應用&#xff0c;使用微搭組件自主設計數據模型創建新應用&#xf…

儲油自動化革命,網關PROFINET與MODBUS網橋的無縫融合,錦上添花

儲油行業作為能源供應鏈的關鍵環節&#xff0c;其自動化和監控系統的可靠性和效率至關重要。隨著工業4.0的推進&#xff0c;儲油設施越來越多地采用先進的自動化技術以提高安全性、降低成本并優化運營。本案例探討了如何通過使用穩聯技術PROFINET轉MODBUS模塊網關網橋&#xff…

【前端】JavaScript 備忘清單(超級詳細!)

文章目錄 入門介紹打印調試斷點調試數字let 關鍵字const 關鍵字變量字符串算術運算符注釋賦值運算符字符串插值字符串數字Math全局函數 JavaScript 條件操作符邏輯運算符 &&比較運算符邏輯運算符空值合并運算符 ?? if Statement (if 語句)Ternary Operator (三元運算…

Linux cat 命令

cat&#xff08;英文全拼&#xff1a;concatenate&#xff09;命令用于連接文件并打印到標準輸出設備上&#xff0c;它的主要作用是用于查看和連接文件。 使用權限 所有使用者 語法格式 cat [選項] [文件] 參數說明&#xff1a; -n&#xff1a;顯示行號&#xff0c;會在輸…

PARETO PROMPT OPTIMIZATION

題目 帕累托提示優化 論文地址&#xff1a;https://openreview.net/forum?idHGCk5aaSvE 摘要 自然語言迅速優化或及時工程已成為一種強大的技術&#xff0c;可以解鎖大型語言模型&#xff08;LLMS&#xff09;的各種任務的潛力。盡管現有方法主要集中于最大化LLM輸出的單一特…

前端面試題---.onChange() 事件與焦點機制解析

.onChange() 事件與焦點的總結 焦點&#xff08;focus&#xff09; 指的是 當前正在操作的元素&#xff08;如輸入框、按鈕&#xff09;。只有一個元素能同時擁有焦點。 原生 HTML 事件&#xff1a; onchange &#xff08;需要失去焦點才觸發&#xff09; 用戶輸入后&#x…

Nest系列:從環境變量到工程化實踐-2

文章目錄 [toc]一、環境搭建與基礎配置1.1 安裝驗證&#xff08;新增完整示例&#xff09;1.2 多環境配置示例 二、模塊化配置實戰2.1 根模塊高級配置2.2 數據庫模塊專用配置 三、配置獲取最佳實踐3.1 類型安全獲取示例3.2 枚舉工程化示例 四、高級場景示例4.1 動態配置熱更新4…

3.對象生活的地方—Java環境搭建

1、你要養魚&#xff0c;總得先有一個魚塘吧。挖一個魚塘來養魚&#xff0c;你需要去做下面這些事情&#xff1a; 規劃和設計&#xff1a;確定魚塘的位置、大小和形狀&#xff0c;繪制設計圖。標記和測量&#xff1a;使用測量工具標記魚塘的邊界和深度。挖掘&#xff1a;使用挖…

玩轉大模型——Trae AI IDE國內版使用教程

文章目錄 Trae AI IDE完備的 IDE 功能強大的 AI 助手 安裝 Trae 并完成初始設置管理項目什么是 “工作空間”&#xff1f;創建項目 管理插件安裝插件從 Trae 的插件市場安裝從 VS Code 的插件市場安裝 禁用插件卸載插件插件常見問題暫不支持安裝 VS Code 插件市場中某個版本的插…

數據結構1-4 隊列

一、隊列是什么&#xff1f; 先舉一個日常例子&#xff0c;排隊買飯。 排隊買飯 大家按先來后到的順序&#xff0c;在窗口前排隊買飯&#xff0c;先到先得&#xff0c;買完之后走開&#xff0c;輪到下一位買&#xff0c;新來的人排在隊尾&#xff0c;不能插隊。 可見&#x…

(十 四)趣學設計模式 之 策略模式!

目錄 一、 啥是策略模式&#xff1f;二、 為什么要用策略模式&#xff1f;三、 策略模式的實現方式四、 策略模式的優缺點五、 策略模式的應用場景六、 總結 &#x1f31f;我的其他文章也講解的比較有趣&#x1f601;&#xff0c;如果喜歡博主的講解方式&#xff0c;可以多多支…

探秘基帶算法:從原理到5G時代的通信變革【三】Turbo 編解碼

文章目錄 2.2 Turbo 編解碼2.2.1 基本概念與系統構成2.2.2 編碼過程分步解析交織器遞歸系統卷積編碼器復接器總結 2.2.3 譯碼算法分類與原理Turbo碼的強大主要來源于其解碼器理論基礎解碼過程詳解交織與解交織譯碼算法總結 2.2.4 Turbo碼的應用場景無線通信衛星通信深空通信 2.…

Yocto + 樹莓派攝像頭驅動完整指南

—— 從驅動配置、Yocto 構建&#xff0c;到 OpenCV 實戰 在樹莓派上運行攝像頭&#xff0c;在官方的 Raspberry Pi OS 可能很簡單&#xff0c;但在 Yocto 項目中&#xff0c;需要手動配置驅動、設備樹、軟件依賴 才能確保攝像頭正常工作。本篇文章從 BSP 驅動配置、Yocto 關鍵…

TCP協議(20250304)

1. TCP TCP: 傳輸控制協議&#xff08;Transmission Control Protocol&#xff09;&#xff0c;傳輸層協議之一&#xff08;TCP&#xff0c;UDP&#xff09; 2. TCP與UDP UDP&#xff08;用戶數據報協議&#xff09; 面向數據報無連接不安全不可靠&#xff08;盡最大努力交…

NModbus 連接到Modbus服務器(Modbus TCP)

1、在項目中通過NuGet添加NModbus&#xff0c;在界面中添加一個Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…

【零基礎到精通Java合集】第十八集:多線程與并發編程-線程池與Callable/Future應用

課程標題:線程池與Callable/Future應用(15分鐘) 目標:掌握線程池的創建與管理,理解Callable任務與Future異步結果處理機制 0-1分鐘:課程引入與線程池意義 以“銀行窗口服務”類比線程池:復用固定資源(柜員)處理多任務(客戶)。說明線程池的核心價值——避免頻繁創建…

【leetcode hot 100 238】除自身以外數組的乘積

解法一&#xff1a;&#xff08;左右乘積列表&#xff09;利用索引左側所有數字的乘積和右側所有數字的乘積&#xff08;即前綴與后綴&#xff09;相乘得到答案。 class Solution {public int[] productExceptSelf(int[] nums) {int len nums.length;int[] L new int[len]; …

BUU44 [BJDCTF2020]ZJCTF,不過如此1 [php://filter][正則表達式get輸入數據][捕獲組反向引用][php中單雙引號]

題目&#xff1a; 我仿佛見到了一位故人。。。也難怪&#xff0c;題目就是ZJCTF 按要求提交/?textdata://,I have a dream&filenext.php后&#xff1a; ......不太行&#xff0c;好像得用filephp://filter/convert.base64-encode/resourcenext.php 耶&#xff1f;那 f…

[Web 安全] PHP 反序列化漏洞 —— POP 鏈構造思路

關注這個專欄的其他相關筆記&#xff1a;[Web 安全] 反序列化漏洞 - 學習筆記-CSDN博客 0x01&#xff1a;什么是 POP 鏈&#xff1f; POP 鏈&#xff08;Payload On Purpose Chain&#xff09;是一種利用 PHP 中的魔法方法進行多次跳轉以獲取敏感數據的技術。它通常出現在 CTF…