Una función de pérdida generalizada para notas de lectura de localización y conteo de multitudes

En pocas palabras, la UOT se utiliza para resolver el problema del conteo de multitudes.

Código: https://github.com/jia-wan/GeneralizedLoss-Counting-Pytorch.git
Lo cambié un poco: https://github.com/Nightmare4214/GeneralizedLoss-Counting-Pytorch.git

pérdida

Mapa de densidad: A = { ( ai , xi ) } i = 1 n \mathcal{A} =\left\{\left(a_i, \mathbf{x}_i\right)\right\}_{i=1 }^{n}A={ ( unyo,Xyo) }yo = 1norte
dentro ai a_iayoPara predecir la densidad, xi ∈ R n \mathbf{x}_i\in\mathbb{R}^nXyoRn es la coordenada,nnn es el número de píxeles
, seaa = [ ai ] i \mathbf{a} = \left[a_i\right]_ia=[ unyo]yo, es decir, el mapa de densidad se convierte en un vector de columna

El diagrama de puntos reales es B = { ( bj , yj ) } j = 1 m \mathcal{B}=\left\{\left(b_j,\mathbb{y}_j\right)\right\}_{j= 1 }^mB={ ( segundoj,yj) }j = 1m
donde yj \mathbf{y}_jyjes la coordenada, mmm es el número de puntos etiquetados,bj b_jbjPara el número de personas representadas por este punto,
este artículo supone que b = [ bj ] j = 1 m \mathbf{b}=\left[b_j\right]_j = \mathbf{1}_mb=[ segundoj]j=1m, es decir, solo hay una persona en cada punto

Propiedades de la UOT
LC τ ( A , B ) = min ⁡ P ∈ R + n × m ⟨ C , P ⟩ − ϵ H ( P ) + τ D 1 ( P 1 m ∣ a ) + τ D 2 ( PT 1 n ∣ b ) \mathcal{L}_{\mathbf{C}}^{\tau}\left(\mathcal{A},\mathcal{B}\right) = \min_{\mathbf{P} \in \mathbb{R}_+^{n\times m}} \left\angle \mathbf{C},\mathbf{P}\right\rangle -\epsilon H\left(\mathbf{P}\right ) + \tau D_1\left(\mathbf{P}\mathbf{1}_m|\mathbf{a}\right) +\tau D_2\left(\mathbf{P}^T\mathbf{1}_n|\ mathbf{ brillante)lCt( Un ,B )=PAG R+n × mmin⟨C , _P ϵH( P )+τD _1( P 1m∣a ) _+τD _2( PAGT 1norteb )
其中C ∈ R + n × m \mathbf{C}\in\mathbb{R}_+^{n\times m}CR+n × mes la matriz de costos de transmisión, C i , j C_{i,j}Cyo , jPara cambiar la densidad de xi \mathbf{x}_iXyoMover a yj \mathbf{y}_jyjLa distancia
P \mathbf{P}P的电影电影最好
a ^ = P 1 m , b ^ = PT 1 n \hat{\mathbf{a}} = \mathbf{P}\mathbf{1}_m, \hat{\mathbf{b} }= \mathbf{P}^T\mathbf{1}_na^=P1 _m,b^=PAGT 1norte

Esta pérdida tiene 4 partes.
La primera parte es la pérdida de transmisión, que tiene como objetivo acercar el mapa de densidad predicho a la etiqueta real. La
segunda parte es la entropía H ( P ) = − ∑ i , j P i , j log ⁡ P i , j H \left(\mathbf{P}\right) = -\sum_{i,j}P_{i,j}\log P_{i,j}h( P )=yo , jPAGyo , jiniciar sesiónPAGyo , jEs el término de regularización de entropía, que se utiliza para controlar el grado de escasez, cuanto más grande es, más escasa es (tenderá a distribuirse uniformemente) y viceversa.

La tercera parte es esperanza a ^ \hat{\mathbf{a}}a^ cercade \mathbf{a}La cuarta parte de a
es esperanzab ^ \hat{\mathbf{b}}b^ cerca deb \mathbf{b}b

En el periódico, D 1 D_1D1Toma L 2 L_2l2El cuadrado de
D 2 D_2D2Toma L 1 L_1l1

matriz de costos

C i , j = e 1 η ( xi , yj ) ∥ xi − yj ∥ 2 C_{i,j} = e^{\frac{1}{\eta\left(x_i,y_j\right)}\|\ mathbf{x}_i-\mathbf{y}_j\|_2}Cyo , j=mih ( xyo, yj)1∥x _yoyj2
Dados los valores xi , yj \mathbf{x}_i,\mathbf{y}_jXyo,yjEstá normalizado
, pero tenga en cuenta que eta (xi, yj) \eta\left(x_i,y_j\right) en el códigoel( xyo,yj) es una constante, el valor predeterminado es0,6 0,60,6

Resolver

Usando el silbato
P = diag ⁡ ( u ) K diag ⁡ ( v ) , K = exp ⁡ ( − C / ε ) \mathbf{P}=\operatorname{diag}(\mathbf{u}) \mathbf{K } \operatorname{diag}(\mathbf{v}), \quad \mathbf{K}=\exp (-\mathbf{C} / \varepsilon)PAG=diag ( u ) Kdiagnóstico ( v ) ,k=exp ( C / ε )
aquí se aproxima aD 1 , D 2 D_1,D_2D1,D2Para la función KL, el equivalente de la función suave
u ( l + 1 ) = ( a K v ( l ) ) τ τ + ϵ , v ( l + 1 ) = ( b K ⊤ u ( l + 1 ) ) τ τ + ϵ \mathbf{u}^{(\ell+1)}=\left(\frac{\ballsymbol{a}}{\mathbf{K}\mathbf{v}^{(\ell)}}\ derecha)^{\frac{\tau}{\tau+\epsilon}}, \quad \mathbf{v}^{(\ell+1)}=\left(\frac{\ballsymbol{b}}{\mathbf {K}^{\top}\mathbf{u}^{(\ell+1)}}\right)^{\frac{\tau}{\tau+\epsilon}}tu( + 1 )=(kv _( )un)τ + ϵt,v( + 1 )=(k( + 1 )segundo)τ + ϵt

(De hecho, incluso si es KL KLDivergencia K L , otros códigos no parecen escribirse así)

código

conjunto de datos

preprocesamiento

UCF-QNRF usado

Preprocesamiento:
1. Sea h, wh, wh ,El más pequeño en w está en [512, 2048] \left[512,2048\right][ 512 ,2048 ] rango, y el otro se ajusta de acuerdo con la relación de escala
2. Filtrar puntos que no están en la imagen
3. Cálculo adicional de una distancia de cada punto a otros puntos, específicamente
P = ( p 1 T p 2 T ⋮ pm T ), pi ∈ R 2 \mathbf{P} = \begin{pmatrix} \mathbf{p}_1^T\\ \mathbf{p}_2^T\\ \vdots\\ \mathbf{p}_m^T \end{pmatrix },\quad \mathbf{p}_i\in\mathbb{R}^2PAG= pag1tpag2tpagmetrot ,pagyoR2
dis = [ ∥ pi − pj ∥ ] i , j \mathbf{dis} = \left[\|\mathbf{p}_i-\mathbf{p}_j\|\right]_{i,j}dis=[ ∥p _yopagj]yo , j

Finalmente, realice el proceso de selección de centinelas en clasificación rápida para cada fila y encuentre el tercer
par (contando desde 0) de 1, 2, 3 1,2,31 ,2 ,Promedio de 3 elementos (contando desde 0 )

def find_dis(point):
    a = point[:, None, :]
    b = point[None, ...]
    dis = np.linalg.norm(a - b, ord=2, axis=-1)  # dis_{i,j} = ||p_i - p_j||
    # mean(4th_min, 2 of the [1st_min, 2nd_min, 3rd_min])
    dis = np.mean(np.partition(dis, 3, axis=1)[:, 1:4], axis=1, keepdims=True)
    
    return dis

因此得到的标签为
P = [ ( xi , yi , disi ) ] i ∈ R m × 3 \mathbf{P}=\left[\left(x_i,y_i,dis_i\right)\right]_i\in\mathbb {R}^{m\veces 3}PAG=[ ( xyo,yyo,d i syo) ]yoRm × 3

leer datos

Recorta aleatoriamente la imagen a (512, 512) \left(512,512\right)( 512 ,512 )
i, ji,jyo ,j es la coordenada de la esquina superior izquierda del recorte,h = w = 512 h=w=512h=w=512

Luego lea la etiqueta
según dis disd i s para establecer un rectángulo pequeño.
Calcula el área de este rectángulo en el rango de recorte y1 4 del área rectangular \frac{1}{4}41
Si esta proporción es mayor que 0,3, seleccione este punto; de lo contrario, deséchelo
Insertar descripción de la imagen aquí
y luego los demás se voltean horizontalmente al azar.

Modelo

vgg19+muestreo ascendente+dos capas de convolución+abs

tren

Tenga en cuenta que el fregadero aquí tiene ϵ − heurística de escala \epsilon-\text{heurística de escala}ϵLa heurística de escala puede lograr la convergencia en 20 rondas.
también se utilizael dominio de registro \text{dominio de registro}dominio de registro

resultado

Insertar descripción de la imagen aquí

Los resultados del modelo proporcionado por el autor: mae 85.09911092883813, mse 150.88815648865386
Los resultados que ejecuté en UCF-QNRF: mae:85.69232401590861, mse:155.30853159819492

Supongo que te gusta

Origin blog.csdn.net/qq_39942341/article/details/131785574
Recomendado
Clasificación