# Xarxa neuronal siamesa

Una xarxa neuronal siamesa (de vegades anomenada xarxa neuronal bessona) és una xarxa neuronal artificial que utilitza els mateixos pesos mentre treballa en tàndem en dos vectors d'entrada diferents per calcular vectors de sortida comparables. Sovint, un dels vectors de sortida es calcula prèviament, formant així una línia de base amb la qual es compara l'altre vector de sortida. Això és similar a la comparació d'empremtes dactilars, però es pot descriure més tècnicament com una funció de distància per hash sensible a la localitat.
És possible construir una arquitectura que sigui funcionalment similar a una xarxa bessona, però que implementi una funció lleugerament diferent. Això s'utilitza normalment per comparar instàncies similars en diferents conjunts de tipus.
Els usos de mesures de semblança on es pot utilitzar una xarxa bessona són coses com ara el reconeixement de xecs escrits a mà, la detecció automàtica de cares a les imatges de la càmera i la concordança de consultes amb documents indexats. L'aplicació potser més coneguda de les xarxes bessones és el reconeixement facial, on les imatges conegudes de persones es calculen prèviament i es comparen amb una imatge d'un torniquet o similar. Al principi no és obvi, però hi ha dos problemes lleugerament diferents. Un és reconèixer una persona entre un gran nombre d'altres persones, és a dir, el problema del reconeixement facial. DeepFace és un exemple d'aquest sistema. En la seva forma més extrema, això és reconèixer una sola persona en una estació de tren o aeroport. L'altre és la verificació facial, és a dir, verificar si la foto d'un passi és la mateixa que la persona que afirma que és la mateixa persona. La xarxa bessona pot ser la mateixa, però la implementació pot ser força diferent.

## Aprenentatge

L'aprenentatge en xarxes bessones es pot fer amb pèrdua de triplets o pèrdua contrastiva. Per a l'aprenentatge per pèrdua de triplets, es compara un vector de línia de base (imatge d'ancoratge) amb un vector positiu (imatge veritable) i un vector negatiu (imatge falsa). El vector negatiu forçarà l'aprenentatge a la xarxa, mentre que el vector positiu actuarà com un regularitzador. Per a l'aprenentatge per pèrdua contrastiva hi ha d'haver una disminució de pes per regularitzar els pesos, o alguna operació similar com una normalització.
Una mètrica de distància per a una funció de pèrdua pot tenir les propietats següents
* No-negativitat: $\delta (x,y)\geq 0$
* Identitat dels no discernibles: $\delta (x,y)=0\iff x=y$
* Commutativitat: $\delta (x,y)=\delta (y,x)$
* Desigualtat triangular: $\delta (x,z)\leq \delta (x,y)+\delta (y,z)$
En particular, l'algoritme de pèrdua de triplets es defineix sovint amb una distància euclidiana quadrada (que a diferència d'Euclidiana, no té desigualtat triangular) al nucli.

### Mètriques predefinides, mètrica de distància euclidiana

L'objectiu d'aprenentatge comú és minimitzar una mètrica de distància per a objectes similars i maximitzar per a diferents. Això dóna una funció de pèrdua com
    ${\begin{aligned}\delta (x^{(i)},x^{(j)})={\begin{cases}\min \ \|\operatorname {f} \left(x^{(i)}\right)-\operatorname {f} \left(x^{(j)}\right)\|\,,i=j\\\max \ \|\operatorname {f} \left(x^{(i)}\right)-\operatorname {f} \left(x^{(j)}\right)\|\,,i\neq j\end{cases}}\end{aligned}}$
    $i,j$ són índexs en un conjunt de vectors
    $\operatorname {f} (\cdot )$ funció implementada per la xarxa bessona
La mètrica de distància més utilitzada és la distància euclidiana, en el cas de la qual la funció de pèrdua es pot reescriure en forma de matriu com
$\operatorname {\delta } (\mathbf {x} ^{(i)},\mathbf {x} ^{(j)})\approx (\mathbf {x} ^{(i)}-\mathbf {x} ^{(j)})^{T}(\mathbf {x} ^{(i)}-\mathbf {x} ^{(j)})$

### Mètrica apresa, mètrica de distància no lineal

Un cas més general és on el vector de sortida de la xarxa bessona passa per capes de xarxa addicionals implementant mètriques de distància no lineals.
    ${\begin{aligned}{\text{si}}\,i=j\,{\text{llavors}}&\,\operatorname {\delta } \left[\operatorname {f} \left(x^{(i)}\right),\,\operatorname {f} \left(x^{(j)}\right)\right]\,{\text{és petit}}\\{\text{altrament}}&\,\operatorname {\delta } \left[\operatorname {f} \left(x^{(i)}\right),\,\operatorname {f} \left(x^{(j)}\right)\right]\,{\text{és gros}}\end{aligned}}$
    $i,j$ són índexs en un conjunt de vectors
    $\operatorname {f} (\cdot )$ funció implementada per la xarxa bessona
    $\operatorname {\delta } (\cdot )$ funció implementada per la xarxa unint sortides de la xarxa bessona
En una forma matricial, l'anterior s'aproxima sovint com una distància de Mahalanobis per a un espai lineal com
$\operatorname {\delta } (\mathbf {x} ^{(i)},\mathbf {x} ^{(j)})\approx (\mathbf {x} ^{(i)}-\mathbf {x} ^{(j)})^{T}\mathbf {M} (\mathbf {x} ^{(i)}-\mathbf {x} ^{(j)})$
Això es pot subdividir en almenys aprenentatge no supervisat i aprenentatge supervisat.

## Xarxes bessones per al seguiment d'objectes

Les xarxes bessones s'han utilitzat en el seguiment d'objectes a causa de les seves dues entrades en tàndem úniques i la mesura de similitud. En el seguiment d'objectes, una entrada de la xarxa bessona és una imatge d'exemplar preseleccionada per l'usuari, l'altra entrada és una imatge de cerca més gran, el treball de la xarxa bessona és localitzar l'exemplar dins de la imatge de cerca. Mitjançant la mesura de la similitud entre l'exemplar i cada part de la imatge de cerca, la xarxa bessona pot donar un mapa de puntuació de semblança. A més, utilitzant una xarxa totalment convolucional, el procés de càlcul de la puntuació de semblança de cada sector es pot substituir només amb una capa de correlació creuada.
Després de ser introduïda per primera vegada el 2016, la xarxa Twin totalment convolucional s'ha utilitzat en moltes xarxes neuronals de seguiment d'objectes en temps real d'alt rendiment. Com CFnet, StructSiam, SiamFC-tri, DSiam, SA-Siam, SiamRPN, DaSiamRPN, Cascaded SiamRPN, SiamMask, SiamRPN, SiamRPN i Deper10RPN ++ SiamRPN.

## Referències

* ↑ Bromley, Jane; Guyon, Isabelle; LeCun, Yann; Säckinger, Eduard; Shah, Roopak Advances in Neural Information Processing Systems, 6, 1994, pàg. 737–744.
* ↑ Chopra, S. «Learning a Similarity Metric Discriminatively, with Application to Face Verification». A: 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05) (en anglès). 1, June 2005, p. 539–546 vol. 1. DOI 10.1109/CVPR.2005.202. ISBN 0-7695-2372-2.
* ↑ Taigman, Y. «DeepFace: Closing the Gap to Human-Level Performance in Face Verification». A: 2014 IEEE Conference on Computer Vision and Pattern Recognition (en anglès), June 2014, p. 1701–1708. DOI 10.1109/CVPR.2014.220. ISBN 978-1-4799-5118-5.
* ↑ Nag, Rinki «A Comprehensive Guide to Siamese Neural Networks» (en anglès). Medium, 19-11-2022. Arxivat de l'original el 2025-03-05.
* ↑ «A Friendly Introduction to Siamese Networks» (en anglès). [Consulta: 10 març 2025].
* ↑ Taigman, Y. «DeepFace: Closing the Gap to Human-Level Performance in Face Verification». A: 2014 IEEE Conference on Computer Vision and Pattern Recognition (en anglès), June 2014, p. 1701–1708. DOI 10.1109/CVPR.2014.220. ISBN 978-1-4799-5118-5.
* ↑ «Siamese Neural Network - an overview | ScienceDirect Topics» (en anglès). [Consulta: 10 març 2025].
* ↑ Chatterjee, Moitreya. «Similarity Learning with (or without) Convolutional Neural Network» (en anglès). [Consulta: 7 desembre 2018].
* ↑ Chandra, M.P. Proceedings of the National Institute of Sciences of India, 2, 1936, pàg. 49–55.
* ↑ «End-to-end representation learning for Correlation Filter based tracking» (en anglès).
* ↑ «Structured Siamese Network for Real-Time Visual Tracking» (en anglès).
* ↑ «Triplet Loss in Siamese Network for Object Tracking» (en anglès).
* ↑ «Learning Dynamic Siamese Network for Visual Object Tracking» (en anglès).
* ↑ «A Twofold Siamese Network for Real-Time Object Tracking» (en anglès).
* ↑ «High Performance Visual Tracking with Siamese Region Proposal Network» (en anglès).