HideSeeker论文阅读

文章目录

    • 3.1 Overview of Our System HideSeeker
    • 3.2 Visual Information Extraction
    • 3.3 Relation Graph Learning
    • 3.4 Hidden Object Inference
  • 4 EVALUATIONS
    • 4.7 Summary
  • 6 DISCUSSIONS AND CONCLUSION

在这里插入图片描述

在这里插入图片描述

3.1 Overview of Our System HideSeeker

我们设计了一种名为“HideSeeker”的方案,用于发现包括但不限于这两种混淆技术所隐藏的隐私信息。给定一个部分受模糊技术保护的图像,如像素化、模糊化、涂鸦、贴纸覆盖和修复,我们的方法将定位混淆的隐私区域,并推断隐私区域内隐藏对象的类别。如图3所示,HideSeeker由三个模块组成:视觉信息提取、关系图学习和隐藏对象推理。

Visual Information Extraction:首先,我们期望提取隐藏对象的上下文信息。我们观察到,图像的视觉信息可以在语义上分为三类:模糊区域、可识别物体和场景。由于所有的混淆技术都无一例外地留下图像篡改的痕迹,我们从图像篡改检测和定位模型中获得支持,以定位混淆区域。我们将可识别的物体和场景定义为混淆区域的上下文。应用目标检测模型来提取区域特征并检测可识别物体。此外,我们使用整个图像的视觉特征作为场景的表示。

Relation Graph Learning:第二,我们构建一个图 G = ⟨ V , E ⟩ G =⟨V, E⟩ G=V,E,其中节点集 V V V 建模混淆区域及其上下文,边缘集 E E E 建模它们之间的语义和空间关系。对于我们关注的三种视觉信息,我们分别定义混淆区域节点、可识别对象节点和场景节点集。进一步,根据不同节点集之间的关系,我们定义了不同的边。

Hidden Objects Inference:最后,我们根据构建的图像关系图推断出一个对象类混淆的概率。我们应用图神经网络(graph neural networks),通过迭代地聚合来自其邻域的上下文信息来学习混淆区域节点的表示。节点表示的聚合和更新由门循环单元(Gate Recurrent Unit)[22]指导。此外,我们将注意力机制聚合到图神经网络中,以学习混淆区域、可识别物体和场景之间的潜在关系。




3.2 Visual Information Extraction

在这个模块中,我们从模糊图像中获取所有可以观察到的视觉信息。至于需要的视觉信息,我们的灵感来自于人类对隐私保护图像的观察。当人们在社交平台上观看一个受模糊保护的图像时,由于视觉上的不一致或与其他区域的语义异常,人们的目光往往会集中在模糊区域上。如果想知道被保护的是什么,观看者会尝试观察图像中显示的混淆区域的上下文信息以及它们之间的关系,并利用先验知识推断出隐藏物体的类别。以图2(b)的第二幅图像为例,人们可以很容易地在第一眼就对模糊区域进行定位,即红框标记的区域。除此之外,我们还可以识别出桌子上的键盘和显示设备。我们可以推断,这张照片很可能是在办公室里拍的。尽管模糊了,但人们可以推断出,办公室办公桌上与隐私相关的模糊物体可能是一台笔记本电脑。


根据这种直觉,我们提出的方法首先找到模糊区域,并提取它们的区域视觉特征。隐藏物体的上下文信息被具体化为三种类型:混淆区域、可识别物体和场景。混淆技术修改或替换隐私相关物体的像素值。因此,我们很难依靠传统的目标检测模型来提取原始视觉特征进行分类。对于在混淆图像上进行分类任务来说,基于区域建议的方法,同在未混淆图像上相对比,通常表现不佳。然而,我们将混淆视为对原始图像的一种伪造手段。最近的研究根据视觉不一致(visual inconsistencies)[20,40]、局部异常(local anomalies)[41]、噪声模式(noise patterns)[55,58]等线索探索了图像篡改的检测和定位。我们期望在不同的混淆技术中应用一个具有极大泛化能力的图像篡改检测和定位模型。在 ManTra-Net[41]的帮助下,我们有了二进制掩码 M ∈ R H × W M∈\mathbb{R}^{H×W} MRH×W,其中 m i j ∈ M m_{ij}∈M mijM 定义为:

m i j = { 1 ,  the pixel at position  ( i , j )  is predicted as obfuscated;  0 ,  otherwise.  m_{i j}=\left\{\begin{array}{ll} 1, & \text { the pixel at position }(i, j) \text { is predicted as obfuscated; } \\ 0, & \text { otherwise. } \end{array}\right. mij={1,0, the pixel at position (i,j) is predicted as obfuscated;  otherwise. 

为了提取模糊区域的位置,利用像素间的距离对 m i j m_{ij} mij 进行聚类。同一混淆区域的掩码像素往往比其他区域的掩码像素距离更近。对于每个像素聚类,我们将可以包含聚类像素的最小边界框(the minimum bounding box)作为混淆区域的位置。混淆区域的位置被标记为 B p = { b 1 p , … , b N p p } B^{p}=\left\{b_{1}^{p}, \ldots, b_{N_{p}}^{p}\right\} Bp={b1p,,bNpp},其中上标 p p p 是 “privacy-related”。此外,在Faster RCNN[30]中,根据边界框 b i p ∈ B p b_{i}^{p} \in B^{p} bipBp,从感兴趣区域(ROI)池化层之后的全连接(FC)层提取区域视觉特征 f i p ∈ F p f_{i}^{p} \in F^{p} fipFp


除了隐藏在混淆区域中的隐私相关对象外,一些其他可识别的对象可能是用户分享图像或用户混淆区域的原因。由于剩下的视觉特征,我们可以很容易地用物体检测模型检测和识别这些物体。我们应用 Faster RCNN[30],一种现成的对象检测模型,用于可识别对象的检测和分类。对于对象 o i \mathbf{o}_{i} oi,我们提取视觉特征 f i o f_{i}^{o} fio,就像我们对混淆区域所做的那样。我们将对象检测器的分类和边界框回归结果(bounding box regression results)分别称为可识别对象的类别 l i o ∈ L o l_{i}^{o} \in L^{o} lioLo 和位置 b i o ∈ B o b_{i}^{o} \in B^{o} bioBo


根据[36]的说法,图像的场景往往与某些隐私信息相关联。例如,在“街道”拍摄的图像中所涉及的隐私信息,很可能与“车”或“人”有关。因此,我们将场景作为与隐私相关物体的潜在指标。对于场景 s \mathbf{s} s,我们寻求学习图像的全局特征作为表示。我们通过 Places365 数据集[53]上预训练的 ResNet-50[17]的最后一个卷积层衍生的视觉特征来描述场景。Places365 数据集包含来自365个场景类别的近180万张图像。




3.3 Relation Graph Learning

对于每个图像,我们用从提取的视觉信息中学习到的关系图 G G G 来描述图像。这个模块旨在构建一个表示混淆区域与其上下文信息之间的语义和空间关系的图。我们将关系图表述为 G = ⟨ V , E ⟩ G =⟨V, E⟩ G=V,E,其中 V V V 中的节点表示来自视觉信息提取模块的视觉信息, E E E 中的边表示它们之间的多义词关系(polysemantic relationships)。关系图学习在算法1中描述。由于我们提取了包括混淆区域、可识别物体和场景的三种类型的语义,我们定义了分别对应于它们的节点集 V = { V p , V o , V s } V=\left\{V^{p}, V^{o}, V^{s}\right\} V={Vp,Vo,Vs}:

Recognizable object nodes V o V^{o} Vo:我们检测并分类与混淆区域同时出现的物体。通过目标检测器Faster RCNN,我们可以得到可识别目标的预测类别和位置。每个物体被定义为一个可识别的节点v∈v o。然后我们将类别标签、边界框以及区域视觉特征串联起来作为可识别对象节点的节点表示:xo = [f o∥lo∥bo]。

Obfuscated region nodes V p V^{p} Vp:每个节点V∈V p表示图像中的一个混淆区域。我们获得由边界框表示的区域的位置和从目标检测器派生的区域视觉特征,并将它们合并到节点中


在这里插入图片描述

Scene node V s V^{s} Vs V s V^{s} Vs 只包含一个表示场景描述的节点V。场景节点v的节点表示由视觉信息提取模块的视觉特征和分类结果组成。我们将场景节点xs表示为拼接: x s = [ f s ∥ l s ∥ 0 ] \mathbf{x}^{s}=\left[f^{s}\left\|l^{s}\right\| \mathbf{0}\right] xs=[fsls0],其中0为填充,以保持与其他节点相同的维度。

从节点 u u u 到节点 v v v 的每个有向边 e u → v e_{u \rightarrow v} euv 表示 u u u v v v 的影响。在我们的图中,我们将混淆的区域节点和可识别的对象节点统称为区域节点(region nodes)。我们将区域之间的语义和空间关系计算为区域节点之间的边。然而,场景和区域之间的关系与区域之间的关系有很大的不同。毕竟,我们无法计算一张桌子和一个办公室之间的空间关系。因此,我们定义了三种类型的边:


Edges between the scene node and region nodes:场景和物体之间存在经验相关性。例如,在海滩上看到游泳圈或阳伞(parasols)的可能性比在厨房里看到的要大,而在街上出现微波炉的可能性很小。因此,我们计算双向 co-occurrence frequencies of objects and scenes,基于我们在实验室条件下生成的模糊图像。如图4所示,我们通过:

其中 P ( s , o ) P(\mathbf{s}, \mathbf{o}) P(s,o) 近似为物体 o \mathbf{o} o 和场景 s \mathbf{s} s 的共现频率, P ( s ) P(\mathbf{s}) P(s) P ( o ) P(\mathbf{o}) P(o) 分别为物体 o \mathbf{o} o 和场景 s \mathbf{s} s 的出现频率,对于一个可识别的物体节点 u u u 和场景节点 v v v,它们的关系用共现概率来衡量。因此,我们将 u u u v v v 的边的权重定义为:

e u → v = P ( v ∣ u ) (3) e_{u \rightarrow v}=P(v \mid u)\tag{3} euv=P(vu)(3)

Edges between region nodes:如果节点 u u u v v v 都是区域节点,我们学习 u u u v v v 之间的语义和空间关系,用于它们的边表示。同一类别的两个物体之间的联系比不同类别的物体之间的联系更紧密。我们通过计算视觉相似度(visual similarity)来衡量两个区域的语义关系,具体来说就是视觉特征 f u f_u fu f v f_v fv 的余弦相似度: vis ⁡ u v = f u f v ⊤ ∥ f u ∥ ⋅ ∥ f v ∥ \operatorname{vis}_{u v}=\frac{f_{u} f_{v}^{\top}}{\left\|f_{u}\right\| \cdot\left\|f_{v}\right\|} visuv=fufvfufv

至于空间关系 在节点 u u u v v v 之间,我们考虑区域 u u u v v v 的距离、面积重叠(area overlap)和角度,我们计算两个区域中心 ( [ x u , y u ] , [ x v , y v ] ) \left(\left[x_{u}, y_{u}\right],\left[x_{v}, y_{v}\right]\right) ([xu,yu],[xv,yv]) 之间的欧几里得距离(Euclid distance)作为它们之间的距离: dist ⁡ u v = ∥ b u − b v ∥ 2 \operatorname{dist}_{u v}=\left\|b_{u}-b_{v}\right\|_{2} distuv=bubv2。两个区域提案的Union交集(IoU) iou ⁡ u v \operatorname{iou}_{u v} iouuv(见图5(b)中的插图)是面积重叠的度量。我们计算角度 theta ⁡ u v = arctan ⁡ ( y u − y v x u − x v ) \operatorname{theta}_{u v}=\arctan \left(\frac{y_{u}-y_{v}}{x_{u}-x_{v}}\right) thetauv=arctan(xuxvyuyv)。结合区域节点之间的语义和空间关系,我们得到 u u u v v v 边的表示为:

e u → v = W v v i s u v + W d dist ⁡ u v + W i  iou  u v + W θ  theta  u v (4) e_{u \rightarrow v}=\mathbf{W}^{v} \mathrm{vis}_{u v}+\mathbf{W}^{d} \operatorname{dist}_{u v}+\mathbf{W}^{i} \text { iou }_{u v}+\mathbf{W}^{\theta} \text { theta }_{u v}\tag{4} euv=Wvvisuv+Wddistuv+Wi iou uv+Wθ theta uv(4)

其中 W v \mathbf{W}^{v} Wv W d \mathbf{W}^{d} Wd W i \mathbf{W}^{i} Wi W θ \mathbf{W}^{\theta} Wθ 是平衡语义和空间关系权重的参数。


在这里插入图片描述




3.4 Hidden Object Inference

根据每个图像的关系图,我们推断隐藏在混淆区域中的隐私相关物体的类别。 我们期望在给定图像中的场景和可识别物体的情况下,学习隐藏物体类的概率分布(probability distribution)。我们在算法2中描述了我们的算法。

在这里插入图片描述

图神经网络(Graph Neural Network, GNN)[32]可以通过基于隐藏对象的邻域来帮助描述隐藏对象的表示,通过节点之间的迭代消息传递(iterative message passing)。我们定义第 t t t 个迭代步骤 v v v 的节点状态为 h v ( t ) \mathbf{h}_{v}^{(t)} hv(t),我们初始化节点状态为:

h v ( 0 ) = x v . (5) \mathbf{h}_{v}^{(0)}=\mathbf{x}_{v} .\tag{5} hv(0)=xv.(5)

在一次迭代步骤中,通过聚合其节点表示 x v \mathbf{x}_{v} xv 和其邻域节点的状态和表示来更新 v v v 的节点状态。传播过程可以定义为:

h v ( t ) = f ( x v , x N B R ( v ) , h v ( t − 1 ) , h N B R ( v ) ( t − 1 ) ) , (6) \mathbf{h}_{v}^{(t)}=\mathbf{f}\left(\mathbf{x}_{v}, \mathbf{x}_{\mathrm{NBR}(v)}, \mathbf{h}_{v}^{(t-1)}, \mathbf{h}_{\mathrm{NBR}(v)}^{(t-1)}\right),\tag{6} hv(t)=f(xv,xNBR(v),hv(t1),hNBR(v)(t1)),(6)

其中 f ( ⋅ ) f(·) f() 是一个参数函数, N B R ( v ) \mathrm{NBR}(v) NBR(v) 表示 v v v 的邻域节点。

一些研究表明,图卷积神经网络(Graph Convolutional neural Networks, GCNs)有助于物体检测中的图推理[19,43]。他们使用图形来描述区域之间的关系,并应用 GCNs 来学习感兴趣区域的潜在视觉表征(the latent visual representations)。然而,如果在我们的场景中应用GCNs,我们将面临的问题是,混淆区域的状态可能会对其他节点的学习产生负面影响。继门控图神经网络(Gated Graph Neural Network,GGNN)[22]之后,我们引入门控循环单元(Gated Recurrent Unit)[10],通过重置门(reset gate)控制混淆区域节点对可识别对象节点的负面影响,同时通过更新门(update gate)使用从其他节点收集的消息更新混淆区域节点的状态。

对于每个传播步骤,节点 v v v 根据图的邻接矩阵表示,从其邻居节点 v ∈ N B R ( v ) v∈\mathrm{NBR}(v) vNBR(v) 中聚集节点表示为 x ~ v \widetilde{\mathbf{x}}_{v} x v:

x ~ v ( t ) = E : v ⊤ [ h 1 ( t − 1 ) ⋯ h ∣ V ∣ ( t − 1 ) ] , \widetilde{\mathbf{x}}_{v}^{(t)}=E_{: v}^{\top}\left[\begin{array}{lll} \mathbf{h}_{1}^{(t-1)} & \cdots \mathbf{h}_{|V|}^{(t-1)} \end{array}\right], x v(t)=E:v[h1(t1)hV(t1)],

其中 E : v E_{: v} E:v 是与节点 v v v 相关的入边表示,节点状态在第 t t t 个传播步骤中更新为 z v t \mathbf{z}_{v}^{t} zvt,重置为 r v t \mathbf{r}_{v}^{t} rvt

z v t = σ ( W z x ~ v ( t ) + U z h v ( t − 1 ) ) , r v t = σ ( W r x ~ v ( t ) + U r h v ( t − 1 ) ) , (8) \begin{aligned} \mathbf{z}_{v}^{t}&=\sigma\left(\mathbf{W}^{z} \widetilde{\mathbf{x}}_{v}^{(t)}+\mathbf{U}^{z} \mathbf{h}_{v}^{(t-1)}\right), \\ \mathbf{r}_{v}^{t}&=\sigma\left(\mathbf{W}^{r} \widetilde{\mathbf{x}}_{v}^{(t)}+\mathbf{U}^{r} \mathbf{h}_{v}^{(t-1)}\right), \end{aligned}\tag{8} zvtrvt=σ(Wzx v(t)+Uzhv(t1)),=σ(Wrx v(t)+Urhv(t1)),(8)

其中 W z \mathbf{W}^{z} Wz U z \mathbf{U}^{z} Uz W r \mathbf{W}^{r} Wr U r \mathbf{U}^{r} Ur 分别是更新门和复位门中的可学习参数, σ σ σ 表示 sigmoid 函数。我们使用 z v t \mathbf{z}_{v}^{t} zvt r v t \mathbf{r}_{v}^{t} rvt 更新 v v v 的节点状态,使用激活 tanh ⁡ \tanh tanh 函数:

h ~ v ( t ) = tanh ⁡ ( W ⋅ x ~ v ( t ) + U ( r v t ⊙ h v ( t − 1 ) ) ) , h v ( t ) = ( 1 − z v t ) ⊙ h v ( t − 1 ) + z v t ⊙ h ~ v ( t ) , (9) \begin{aligned} \widetilde{\mathbf{h}}_{v}^{(t)}&=\tanh \left(\mathbf{W} \cdot \widetilde{\mathbf{x}}_{v}^{(t)}+\mathbf{U}\left(\mathbf{r}_{v}^{t} \odot \mathbf{h}_{v}^{(t-1)}\right)\right), \\ \mathbf{h}_{v}^{(t)}&=\left(1-\mathbf{z}_{v}^{t}\right) \odot \mathbf{h}_{v}^{(t-1)}+\mathbf{z}_{v}^{t} \odot \widetilde{\mathbf{h}}_{v}^{(t)}, \end{aligned}\tag{9} h v(t)hv(t)=tanh(Wx v(t)+U(rvthv(t1))),=(1zvt)hv(t1)+zvth v(t),(9)
其中, ⊙ ⊙ 是元素乘法。

此外,我们观察到一种现象,一些物体之间的关联更强。例如,一个人更有可能因为他与另一个出席同一事件的人的社会关系(social relationship)而被定义为私人,而不是因为街上的消防栓。我们附加了一种注意力机制来衡量其他节点对混淆区域节点表征的贡献。我们的注意力机制与图注意力网络(Graph Attention Networks,GAT)[38]略有不同。我们计算混淆区域节点 u ∈ V p u \in V^{p} uVp 与其邻域节点之间的相关性(relevance)作为注意力系数:

e ~ u → v = f a ( [ W a ⋅ h u ∥ U a ⋅ h v ] ) , α u → v = σ ( LeakyReLU ⁡ ( e ~ u → v ) ) . (10) \begin{aligned} \widetilde{e}_{u \rightarrow v} & =\mathbf{f}_{a}\left(\left[\mathbf{W}^{a} \cdot \mathbf{h}_{u} \| \mathbf{U}^{a} \cdot \mathbf{h}_{v}\right]\right), \\ \alpha_{u \rightarrow v} & =\sigma\left(\operatorname{LeakyReLU}\left(\widetilde{e}_{u \rightarrow v}\right)\right) . \end{aligned}\tag{10} e uvαuv=fa([WahuUahv]),=σ(LeakyReLU(e uv)).(10)

其中 [ ⋅ ∥ ⋅ ] [·∥·] [] 表示混淆区域节点 u u u 与其邻域中某一个节点 v ∈ N B R ( u ) v∈\mathrm{NBR}(u) vNBR(u) 的连接(concatenation), f a ( ⋅ ) \mathbf{f}_a(·) fa() 是将高维节点状态的连接映射为实数的非线性函数, σ σ σ 为激活的 sigmoid 函数。为了这个目的,我们收集其邻域节点的状态,并在拼接前用注意力系数对其进行加权:

h v ′ = ∥ u ∈ NBR ⁡ ( v ) α u → v h u (11) \mathbf{h}_{v}^{\prime}=\|_{u \in \operatorname{NBR}(v)} \alpha_{u \rightarrow v} \mathbf{h}_{u}\tag{11} hv=uNBR(v)αuvhu(11)

混淆区域(obfuscated regions)中隐藏物体的识别归结为节点分类问题。最后,将最终的状态和节点表示用于分类:

o i = g ( h i ′ , x i ) o_{i}=\mathbf{g}\left(\mathbf{h}_{i}^{\prime}, \mathbf{x}_{i}\right) oi=g(hi,xi)

其中 g ( ⋅ ) \mathbf{g}(·) g() 是分类器,在我们的实验中用 softmax 函数实现。

在这里插入图片描述




4 EVALUATIONS

4.7 Summary

总之,我们的实验结果通过发现和分类隐藏对象的准确性,证明了图像混淆技术中存在隐私再次泄露(privacy re-disclosure)的风险。客观上,我们的方法在很大程度上优于几种可能用于发现隐藏在混淆图像中的隐私相关对象的方法。此外,我们证明了我们的方案对各种混淆技术具有通用性。我们招募了10名志愿者来观察1000张隐藏物体的混淆图像,我们的结果表明,对于我们测试的一半混淆技术,我们的方案与人眼观察结果相当。特别地,我们的方案可以揭露人眼在图像经过修复混淆后(obfuscated by inpainting)无法发现的隐藏隐私信息。

此外,我们在移动设备上实现了我们的系统,并评估了处理时间成本。我们可以在手机上在两秒内推断出混淆图像中与隐私相关的对象。




6 DISCUSSIONS AND CONCLUSION

我们的方法可能会受到用于计算机视觉任务的模型性能的影响,包括目标检测、图像操作检测和定位以及场景分类。我们在图11中展示了混淆区域的定位降低了精度,平均损失0.39%。


在这里插入图片描述

另一方面,我们对隐藏物体的推断依赖于混淆区域的上下文信息。当

  • (1)图像中已经没有可识别的物体时,我们的方案可能会失败;
  • (2)混淆区域的比例超过图像的80%。

在第一种情况下,没有任何关于周围物体的线索,我们只能依靠场景的分类和与场景强相关的可能物体。如图9所示,大面积的混淆会严重影响我们的推理。当80%以上的图像被操纵或遮挡时,很难对场景进行准确分类。因此,我们很难对隐藏物体的上下文信息进行建模。


在这里插入图片描述


在这项工作中,为了探索受混淆保护的图像的隐私泄露风险,我们设计了一个有效和高效的方案,HideSeeker,来揭示混淆图像中与隐私相关的隐藏对象的类别。物体的原始视觉特征被混淆技术严重操纵或遮挡,导致目标检测算法无法识别它们。我们通过语义和空间关系图整合隐藏物体的上下文信息来解决这一挑战。

几个有趣的任务仍然是未来的工作,包括处理

  • 1)没有可识别物体的图像,
  • 2)具有极大模糊区域的图像。

我们还计划扩展我们的研究,以发现受保护视频中的隐藏物体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43265.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ARM Cache 系列文章 2 -- Cache Coherence及内存顺序模学习】

文章目录 Cache Coherence 背景1.1 内存顺序模型简介(Memory Model)1.1.1 Normal Memory1.1.2 Device Memory 1.2 Cache 一致性问题解决方案1.2.1 Shareability 属性1.2.2 Non-Shareable 属性1.2.3 Inner-Shareable 属性1.2.4 Out-Shareable 属性 1.3 Shareability 和 PoC/PoU …

Python Flask构建微信小程序订餐系统 (十一)

🔥 已经删除的会员不允许进行编辑昵称 🔥 🔥 已经删除的会员要隐藏掉会员信息的编辑按钮 🔥 🔥 创建商品表 food 🔥 CREATE TABLE `food` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`cat_id` int(11) NOT NULL DEFAULT 0 COMMENT 分类id,`name` varchar…

# **基于TiDB Binlog架构的主备集群切换操作手册**

作者: Liuhaoao 原文来源: https://tidb.net/blog/dc65ef62 操作背景:最近手头有个系统,刚做完灾备建设及数据同步( 文章链接在这 ),需要进行灾备切换演练,验证灾备库建设是否…

【IDEA】IDEA 中点击Download Source(下载源码)后,下载的源码存储到哪了?

【问】如上图,IDEA 中点击 Download Source(下载源码)后,下载的源码存储到哪了? 【答】 先找到此源码所属 Jar 包在哪;点击 Download Source(下载源码)后,会发现存储 J…

Android Studio Flutter 开发配置

近来比较闲,就研究下Flutter 开发,在此记录下studio 配置过程,时间是2023.7.19 在 Windows 操作系统上安装和配置 Flutter 开发环境 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/…

静态html引入ucharts并直接使用组件标签

由于官方不能直接使用qiun-vue-ucharts在静态html页面使用。 DIY可视化对此类库进行了改进,把它的包独立打包成一个可以依赖的JS。 首先定义一个核心JS,用于打包生成uchart import qiunVueUcharts from qiun/vue-ucharts;const install (app) > {…

【学习笔记】Unity基础(十)【Unity界面之Scene窗口工具栏】

目录 一 总览二 Scene 视图导航2.1 Orientation 场景视角2.2 场景视角的移动、旋转和缩放2.3 场景对象聚焦 三 对象可见性与场景可见性3.1 对象可见性控件3.2 场景可见性控件3.3 Isolate selected GameObjects 四 Overlays五 Position GameObjects5.1 Transform Tools5.2 Tool …

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式(登录案例) 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题?怎么解决的 你们…

部署ELK+Kafka+Filebeat日志收集分析系统

部署ELKKafkaFilebeat日志收集分析系统 文章目录 部署ELKKafkaFilebeat日志收集分析系统一、ELK 简介1、ELK日志分析系统组成2、Elasticsearch(es)3、Logstash4、Kibana5、日志处理步骤 二、Elasticsearch介绍1、Elasticsearch核心概念2、开启分片副本的…

用户管理功能

后端 # 获取用户列表 bp.get("/user/list") def user_list():users UserModel.query.order_by(UserModel.join_time.desc()).all()user_list [user.to_dict() for user in users]return restful.ok(datauser_list)# 用户是否可用 bp.post("/user/active"…

kettle开发-Day40-AI分流之case/switch

前言: 前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在…

Java多线程基础复习

文章目录 多线程1.进程进程属性并发和并行虚拟地址空间 2.线程概念线程的创建方式 3.Thread类常见构造方法和属性线程的状态优先级后台线程线程是否存活start和run 4. 线程的一些基本操作线程中断(interrupted)线程等待joincurrentThread(获取当前线程引用&#xff…

pytest常用执行参数详解

1. 查看pytest所有可用参数 我们可以通过pytest -h来查看所有可用参数。 从图中可以看出,pytest的参数有很多,下面是归纳一些常用的参数: -s:输出调试信息,包括print打印的信息。-v:显示更详细的信息。…

hdu7298 Coin(网络流+按时间拆点)

题目 t(t<10)组样例&#xff0c;每次给n(n<3e3)个人&#xff0c; 第i个人&#xff0c;在任意时刻&#xff0c;都最多只能有ai(1<ai<3e3)个硬币 其中k(k<n)个是小F的朋友&#xff0c;依次用点号的形式给出 初始时&#xff0c;每个人都有一个硬币&#xff0c;…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

(css)自定义登录弹窗页面

(css)自定义登录弹窗页面 效果&#xff1a; 代码&#xff1a; <!-- 登录弹窗 --> <el-dialog:visible.sync"dialogVisible"title"用户登录"width"25%"centerclass"custom-dialog":show-close"false":close-on-cli…

动态规划入门第2课,经典DP问题1 --- 线性

动态规划要点 阶段的2个方向&#xff1a;从上到下&#xff1b;从下到上。 动态规划要点 从递归到DP 动态规划要点 两个2个方向 优化的可能性 第1题 合唱队形 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形…

macOS coreAudio 之 AudioQueue 播放本地音频文件

macOS的音频模块使用还是和 iOS有细微差别的。 今天记录是的是 使用 AudioQueue 配合 AudioFile 进行播放macOS 本地音频文件 本文打仓库代码为&#xff1a; JBPlayLocalMusicFile.m CoreAudio 作为Apple音频系统中音频库的集合&#xff0c;今天需要使用到的库为&#xff1a…

Spring Cloud Gateway - 新一代微服务API网关

Spring Cloud Gateway - 新一代微服务API网关 文章目录 Spring Cloud Gateway - 新一代微服务API网关1.网关介绍2.Spring Cloud Gateway介绍3.Spring Cloud Gateway的特性4.Spring Cloud Gateway的三大核心概念5.Gateway工作流程6.Gateway核心配置7.动态路由8.Predicate自定义P…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio制作蛋仔派对兑换码工具

目录 &#x1f373;前言&#x1f373;实验介绍&#x1f373;产品介绍&#x1f373;抓包分析&#x1f603;登录分析&#x1f603;&#x1f603;第一步&#xff0c;获取验证码&#x1f603;&#x1f603;第二步&#xff0c;保存验证码&#x1f603;&#x1f603;第三步&#xff0…