DAB-DETR

DAB-DETR (2022ICLR)

DAB: Dynamische Ankerboxen

Fügen Sie hier eine Bildbeschreibung ein

beitragen:

  1. Es wurde klargestellt, dass langsame Konvergenz nicht durch lernbare Abfragen verursacht wird

  2. 4D-Anker

  3. Anker-Update

  4. Breite und Höhe moduliert

  5. Temperaturabstimmung

Erster Teil: Warum ein Positionsprior das Training beschleunigen könnte?

Warum kann eine vorherige Positionierung das DETR-Training beschleunigen?

Bild

(a) Bildfunktion + Pos-Einbettung

(b) Erste /Decoder-Ausgabe + Objektabfrage

Zwei mögliche Gründe für langsame Konvergenz:

  1. Optimierungsherausforderung, Objektabfrage ist schwer zu erlernen
  2. Die Positionsinformationen in Abfragen gelernter Objekte werden anders codiert als die sinusförmige Positionscodierung, die für Bildmerkmale verwendet wird (der ursprüngliche Detr ist die Einbettung und die Positionseinbettung ist anders).

Experiment 1: Geben Sie die Abfrage des gelernten Objekts an den untrainierten DETR weiter. In der ersten Hälfte der Epoche ist sie nur geringfügig höher, sodass die Abfrage nicht schwer zu erlernen ist.

Fügen Sie hier eine Bildbeschreibung ein

Experiment 2: Die Abfrage der Selbstaufmerksamkeit wählt interessante Informationen aus und konzentriert sich dabei auf den Bereich oder die Größe eines bestimmten Bildes

Wenn Sie es als Positionsbeschränkung betrachten, hat es schlechte Eigenschaften (die vorherige war zum Zeichnen gedacht):

  1. Konzentriert sich auf Objekte in mehreren Modi (ein Schlitz, kleines Ziel, horizontal, vertikal)
  2. Prüfen Sie, ob das Gewicht eines Gegenstandes ähnlich ist

Bild

Abbildung (a) Wenn das Ziel im Coco-Datensatz zufällig über und unter GT verfügt, wird es schwierig sein, es zu lokalisieren, wenn mehrere Objekte vorhanden sind.

Der untere Teil von Abbildung (a) konzentriert sich auf Bereiche, die zu groß oder zu klein sind und keine nützlichen Standortinformationen in den Extraktionsprozess einbringen können.

Abbildung (b) konzentriert sich im Vergleich zu detr auf ein bestimmtes Objekt, ignoriert jedoch die Skalierungsinformationen des Objekts (die Kreise sehen alle gleich groß aus).

Modell

Fügen Sie hier eine Bildbeschreibung ein

Siehe die spezifische Struktur: https://img-blog.csdnimg.cn/c7bf7283aca94942b55606c667861bef.png

beitragen

4D-Anker: Aq=(xq,yq,wq,hq) (die Verwendungsmethode kommt von bedingtem Detr)

q bedeutet den q-ten Ankerpunkt
P q = MLP ( PE ( A q ) ) P_q={\mathrm{MLP}}\left(\mathrm{PE}\left(A_q\right)\right)Pq=MLP( PE( Aq) )
Anker wird zu 4d. Nach der Positionscodierung erhält MLP die Positionseinbettung
PE ( A ) der Abfrage. = PE ( xq , yq , wq , hq ) = C at ( PE ( xq ) , PE ( yq ) , PE ( wq ) , PE ( hq ) ) {\mathrm{PE}\left(A\right)}_{.}=\mathrm{PE}\left(x_{q},y_{q},w_{q}, h_{q}\right)=\mathrm{Cat}\left(\mathrm{PE}\left(x_{q}\right),\mathrm{PE}\left(y_{q}\right),\mathrm { PE}\left(w_{q}\right),\mathrm{PE}\left(h_{q}\right)\right)SPORT( A ).=SPORT( xq,jq,wq,Hq)=Katze( PE( xq),SPORT( Jq),SPORT( wq),SPORT( hq) )
PE-Eingabe ist vierdimensionale Information. Alle vier Komponenten von cat werden als 128 Dimensionen codiert. Nach cat ist es 512 und mlp ändert sich wieder auf 256. Selbstaufmerksamkeit:
Q q = C q + P q , K q = C q + P q , V q = C q \text{Selbstaufmerksamkeit:}\quad Q_q=C_q+{P_q},\quad K_q=C_q+{P_q},\quad{V_q=C_q}Selbstachtung:Qq=Cq+Pq,Kq=Cq+Pq,Vq=Cq
Selbstaufmerksamkeit没什么更改
Cross-Attn: Q q = Cat ( C q , PE ( xq , yq ) ⋅ MLP ( csq ) ( C q ) ) , K x , y = Cat ( F x , y , PE ( x , y ) ) , V x , y = F x , y , \begin{aligned}\text{Cross-Attn:}\quad&Q_q=\text{Cat}\left(C_q,\text{PE}(x_q,y_q) \cdot\text{MLP}^{(\text{csq})}\left(C_q\right)\right),\\&K_{x,y}=\text{Cat}\left(F_{x,y },\text{PE}(x,y)\right),\quad V_{x,y}=F_{x,y},\end{aligned}Gegenhinweis:Qq=Katze( Cq,PE ( xq,jq)MLP( csq )( Cq) ),Kx , y=Katze( Fx , y,PE ( x ,y ) ),Vx , y=Fx , y,
Queraufmerksamkeit

Q_q: Wobei C_q: die Ausgabe der vorherigen Selbstaufmerksamkeit, gefolgt von der bedingten Detr-Methode

k: Speicher + Einbettung

v: v bleibt unverändert

Anker-Update (Verfeinerung der verformbaren Box):

Breiten- und höhenmoduliert:

Die herkömmliche Positionsaufmerksamkeitszuordnung wird als Gauß-ähnlicher Prior verwendet, der eine feste Größe annimmt.
Der Prior geht jedoch einfach davon aus, dass alle Objekte isotrop und eine feste Größe sind, und ignoriert ihre Skalierungsinformationen (Breite und Höhe).
Fügen Sie hier eine Bildbeschreibung ein

Das Obige ist die ursprüngliche Standardaufmerksamkeit

Ändern Sie die Positionsaufmerksamkeitskarte, indem Sie die Breite und Höhe des relevanten Ankers separat von seinem x-Teil und y-Teil trennen, um die Gaußsche Funktion zu glätten, bevor sie besser mit Objekten unterschiedlicher Maßstäbe übereinstimmt

wq und hq sind die Breite und Höhe des Ankers. Aq, wqref und hqref werden durch MLP ermittelt

Temperaturabstimmung (prompt):

Die Positionskodierung in Transformer wird mithilfe von Sinus- und Kosinusfunktionen kodiert . Die Formel lautet wie folgt

pos stellt die Position des Wortes im Satz dar, 2i oder 2i + 1 stellt eine Komponente des Positionskodierungsvektors dar, 2i stellt eine gerade Zahl dar und 2i + 1 stellt eine ungerade Zahl dar. Es ist ersichtlich, dass die Positionskodierung von a Ein bestimmtes Wort ist ein Vektor und kein Wert. Es besteht aus Wörtern. Die Position und die Komponentenposition werden gemeinsam bestimmt.

Bild

def GetPosEncodingMatrix(max_len, d_emb):
    # 位置编码
    pos_enc = np.array([
        [pos / np.power(10000, 2 * (j // 2) / d_emb) for j in range(d_emb)]
        if pos != 0 else np.zeros(d_emb)
        for pos in range(max_len)
    ])
    pos_enc[1:, 0::2] = np.sin(pos_enc[1:, 0::2])  # dim 2i
    pos_enc[1:, 1::2] = np.cos(pos_enc[1:, 1::2])  # dim 2i+1
    return pos_enc
            
设置max_len为每个句子的最大长度为50,d_emb为每个词的embedding的维度为256,最终得到一个[50, 256]的位置编码矩阵,每一行代表一个位置的位置编码结果,每一列代表某个词在某个位置编码分量上的值。所有句子共享这个位置编码矩阵,也就是说所有句子相同位置的字/词的位置编码结果是一致的,

PE ⁡ ( x ) 2 i = sin ⁡ ( x T 2 i / D ) , PE ⁡ ( x ) 2 i + 1 = cos ⁡ ( x T 2 i / D ) \operatorname{PE}(x)_{2 i}=\sin \left(\frac{x}{T^{2 i / D}}\right), \quad \operatorname{PE}(x)_{2 i+1}=\cos \left( \frac{x}{T^{2 i / D}}\right)PE ( x )2i _=Sünde(T2i / D_ _x),PE ( x )2 ich + 1=cos(T2i / D_ _x)
Temperaturparameter: Original-NLP ist 10000, nicht für DETR geeignet

Ich denke du magst

Origin blog.csdn.net/qq_52038588/article/details/133207380
Empfohlen
Rangfolge