- 博客(562)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 人体三维重建【文章调研汇总】Humans
PA-MPJPE则是在计算误差之前,首先对预测的姿态进行了最佳比例的刚体变换(包括旋转、平移和缩放),这一过程通常通过Procrustes分析实现,目的是为了消除全局旋转和平移的影响,以及可能的比例差异,从而更加专注于评估姿态结构本身的准确性。PCK指标计算的是被正确检测出的关键点数量占总关键点数量的百分比,这里的“正确检测”指的是预测的关键点位置与真实位置之间的距离小于或等于一个给定的误差阈值(通常以关节或者像素为单位)。:对每个关节的位置序列进行一阶微分,得到各个关节的速度随时间的变化情况。
2024-07-03 15:40:48
1268
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Attention相关问题笔试解析。
Transformer的核心思想是使用自注意力机制(Self-Attention Mechanism)来建模序列数据中的依赖关系,取代传统的递归神经网络(RNN)和卷积神经网络(CNN)在处理序列任务时的局限性。具体来说,Transformer的架构主要由编码器(Encoder)和解码器(Decoder)组成,每个编码器和解码器模块由多头自注意力机制(Multi-Head Self-Attention Mechanism)和前馈神经网络(Feed-Forward Neural Network)组成。
2024-05-26 11:08:15
1501
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 3D、扩散模型、GAN、StyleGAN、MAE.等【换脸方法汇总】
换脸是将一张脸的身份(肤色、面部皮肤、眉毛、眼睛、鼻子、嘴唇和嘴巴等)与另一张脸的非外观属性(表情、头部姿势、光照、图像分辨率、注释方向、头发、眼镜、耳朵、耳环、颈部和背景等非内部人脸区域)相结合,生成合成人脸。
2023-05-25 14:58:43
2491
28
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 扩散模型+CV与NLP科研笔记专栏文章汇总:【Diffusion Models】
CLIP是一个多模态的大模型,用了4亿个(图像、文本)对进行对比学习,学习之后可以直接进行zero-shot推理,并且不需要像ImageNet那样标注1000个类,而是可以人为给出文本提示,进行图片和文本之间的相似度计算,而且迁移效果很好。那么基于此,提出了Classifier-Free Diffusion Guidance,后续非常多的工作都是基于其来进行的,例如DALL·E 2、Imagen等吸引人眼球的模型基本上都是以它为基础做的。直接用训练好的非条件的扩散模型,无需重复训练。
2023-04-04 15:54:14
3981
34
原创 from pytorch3d import _C ImportError: libcudart.so.10.1: cannot open shared object file: No such fil
造成这种报错的原因,是因为在使用pip安装的时候,会下载编译好的pytorch3d进行安装,而这些事先编译好的pytorch3d安装包,在编译的时候,它的环境和你现在的环境并不一样,从而引发此种bug。例如,我使用了第二种方法。如果无法使用 git,请将网址复制到浏览器中,直接下载文件。pytorch3d表面安装十分简单,直接pip install pytorch3d就会显示安装成功。欢迎大家关注笔者,你的关注是我持续更博的最大动力。解决的方法,官方文档都已经为你写好了。原创文章,转载告知,盗版必究。
2024-07-11 11:11:06
439
原创 包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】
该包可以显著提高NeRF训练速度,是和NeRFstudio等框架中,必须使用的。本文提供tiny-cuda-nn可以安装的完整包的下载链接,可以直接上传到项目中安装。附带笔者遇到的问题的解决方案。
2024-07-10 19:58:59
763
原创 【CVPR 2024】GART: Gaussian Articulated Template Models
【Paper】【Project】GART 利用移动的 3D 高斯混合模型来显式地近似可变形主体的几何形状和外观。它利用了具有可学习前向蒙皮的分类模板模型先验(如 SMPL、SMAL 等),同时通过引入新的潜在骨骼进一步推广到更复杂的非刚性变形。我们介绍了高斯关节模板模型(GART),这是一种显式、高效且富有表现力的表示方法,用于从单目视频中捕捉和渲染非刚性关节主体。GART 利用移动的 3D 高斯混合模型来显式地近似可变形主体的几何形状和外观。
2024-07-09 17:07:24
759
原创 【SMPL简介】SMPL: A Skinned Multi-Person Linear Model【源码复现】
SMPL是一种3D人体建模方法.在数字人或者人物角色三维重建领域有着广泛应用支持人体的各种形状及动作可以简单理解为通过训练获取的人物模型SMPL 输入是:姿态shape vectorβ\betaβ+ 影响动作Pose的参数θ\thetaθ输出是: 各种变化后vertex顶点的数据作者:Loper, Matthew and Mahmood, Naureen and Romero, Javier and Pons-Moll, Gerard and Black, Michael J.
2024-07-08 11:31:19
712
原创 pyrender 离线渲染包安装教程
Ubuntu 22.04.4 LTS有问题,安装不了llvm-6.0,暂时没找出解决方案,可以使用更低版本的Ubuntu或者用Dockers。Ubuntu 18.04 LTS没有问题!
2024-07-07 19:53:36
329
原创 如何把普通用户添加到sudoers file【让普通用户拥有sudo权限】有图有代码
保存更改:按下 Ctrl + O 键。这会触发写入操作,屏幕上可能会显示 “File Name to Write: sudoers.tmp” ,这时直接按 Enter 键确认写入。退出编辑器:按下 Ctrl + X 键。这将使你退出 nano 编辑器,并且所做的更改会自动应用到实际的 /etc/sudoers 文件中,前提是你的更改没有语法错误。进入 vim ,看到它已打开了 /etc/sudoers 文件。使用 su - 命令切换到 root 用户去执行;切换到 root 用户,使用命令。
2024-07-07 17:13:20
286
1
原创 【亲测有效】Linux/Ubuntu远程服务器使用plt.show()没有反应,vscode ssh 远程ubuntu,plt.show不显示图片问题
只需要使用plt.savefig(savepath)。savepath为你要保存该图到哪个路径,比如下面的’./ok.png’,是一个相对路径,就是将plt.show()的图片保存到当前路径下,名称为ok.png.例如,我这一段是加载我自己处理的数据时候,然后plt.show(),不可视化出我的图片。
2024-07-06 23:52:18
440
2
原创 免密ssh和自定义服务器名字【远程连接服务器】
原理实现免密登录需要本地的公钥id_rsa.pub放在服务器上的 authorized_keys 文件中。服务器中的位置一般在~/.ssh.authorized_keys。若不存在,创建一个即可。注意 authorized_keys 文件的权限必须是600,如果权限不对会影响登录。本地生成公钥和私钥参数-t rsa表示使用rsa算法进行加密,执行后,会在当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)正常情况下可以跳过上面的两个步骤。
2024-07-05 11:13:51
513
原创 【arxiv 2024.02】HumanSplat: Generalizable Single-Image Human Gaussian Splatting with Structure Priors
【Paper】【Project】尽管高保真人体重建技术最近取得了进展,但对密集捕获图像或耗时的每个实例优化的要求极大地阻碍了它们在更广泛场景中的应用。为了解决这些问题,我们提出了 HumanSplat,它可以以通用的方式从单个输入图像中预测任何人类的 3D 高斯 Splatting 属性。特别是,HumanSplat 包含一个 2D 多视图扩散模型和一个具有人体结构先验的潜在重建变压器,能够在统一框架内巧妙地集成几何先验和语义特征。
2024-07-04 15:46:21
603
原创 【CVPR 2024】HumanRef: Single Image to 3D Human Generation via Reference-Guided Diffusion
从单个参考图像生成 3D 人体模型具有挑战性,因为它需要在不可见视图中推断纹理和几何形状,同时保持与参考图像的一致性。以前利用 3D 生成模型的方法受到 3D 训练数据可用性的限制。将文本到图像扩散模型提升到 3D 生成的基于优化的方法通常无法保留参考图像的纹理细节,从而导致不同视图中的外观不一致。在本文中,我们提出了 HumanRef,一种基于单视图输入的 3D 人体生成框架。
2024-07-03 15:12:33
1174
原创 【ECCV 2020 (oral)】NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Authors【Paper】【Project】我们提出了一种方法,通过使用稀疏的输入视图集优化底层连续体积场景函数,实现合成复杂场景的新颖视图的最先进的结果。我们的算法使用全连接(非卷积)深度网络表示场景,其输入是单个连续 5D 坐标(空间位置xyz(x,y,z)xyz和观看方向θϕθϕ),其输出是该空间位置处的体积密度和与视图相关的发射辐射率。我们通过查询沿相机光线的 5D 坐标来合成视图,并使用经典的体积渲染技术将输出颜色和密度投影到图像中。
2024-07-01 22:27:45
824
1
原创 三维重建基础【知识点总结】
与传统光线追踪每次直接寻找最近的交点不同,体积光追迹是逐步推进的(marching),即光线不是直接射到物体表面停止,而是在进入体积区域后,按照固定的步长或者根据密度场调整步长逐步前进,同时累积沿途中与介质相互作用产生的颜色和透明度信息。与传统的光栅化或光线追踪技术不同,体积光追迹是专为处理具有体积的数据而设计的,它能够精确地模拟光线在不透明度连续变化的介质中的传播过程。每个关节的数据结构包含:关节名字、骨骼中其父节点的索引、关节的绑定姿势之逆变换(蒙皮网格顶点绑定至骨骼时,关节的位置、定向及缩放)
2024-07-01 17:30:54
1617
原创 LeetCode-40. 组合总和 II【数组 回溯】
这意味着在某轮选择中,若当前元素与其左边元素相等,则说明它已经被选择过,因此直接跳过当前元素。例如,给定数组 [4, 4^ ,5] 和目标元素 9 ,则现有代码的输出结果为 [4,5],[ 4^ ,5] ,出现了重复子集。如下图所示,第一轮共有三个选择,其中两个都为 4 ,会产生两个重复的搜索分支,从而输出重复子集;输入: candidates = [10,1,2,7,6,1,5], target = 8,输入: candidates = [2,5,2,1,2], target = 5,
2024-07-01 17:16:11
796
原创 LeetCode-Leetcode 1120:子树的最大平均值
给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值。用一个二维数组表示子树的所有节点的和与节点数量。欢迎大家关注笔者,你的关注是我持续更博的最大动力。子树是树中的任意节点和它的所有后代构成的集合。树的平均值是树中节点值的总和除以节点数。空间复杂度:O(logn)时间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)
2024-06-30 22:29:20
491
原创 LeetCode-337. 打家劫舍 III【树 深度优先搜索 动态规划 二叉树】
如果不偷当前节点,那么左右孩子就可以偷,至于到底偷不偷一定是选一个最大的,所以:val2 = max(left[0], left[1]) + max(right[0], right[1]);这道题目算是树形dp的入门题目,因为是在树上进行状态转移,我们在讲解二叉树的时候说过递归三部曲,那么下面我以递归三部曲为框架,其中融合动规五部曲的内容来进行讲解。而动态规划其实就是使用状态转移容器来记录状态的变化,这里可以使用一个长度为2的数组,记录当前节点偷与不偷所得到的的最大金钱。小偷又发现了一个新的可行窃的地区。
2024-06-30 22:23:16
541
原创 LeetCode-213. 打家劫舍 II【数组 动态规划】
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。输入:nums = [1,2,3,1]
2024-06-30 22:10:28
966
原创 【ACM_2023】3D Gaussian Splatting for Real-Time Radiance Field Rendering
【Project】引入了三个关键要素,能够在保持有竞争力的训练时间的同时实现最先进的视觉质量,并且重要的是允许以 1080p 分辨率进行高质量实时(≥ 30 fps)新颖的视图合成。首先,从相机校准期间产生的稀疏点开始,用 3D 高斯表示场景,保留连续体积辐射场的所需属性以进行场景优化,同时避免在空白空间中进行不必要的计算;其次,对 3D 高斯进行交错优化/密度控制,特别是优化各向异性协方差以实现场景的准确表示;第三,开发了一种快速可见性感知渲染算法,该算法支持各向异性泼溅,既加速训练又允许实时渲染。
2024-06-28 19:51:13
1563
4
原创 LeetCode-LCR 181. 字符串中的单词反转【双指针 字符串】
你在与一位习惯从右往左阅读的朋友发消息,他发出的文字顺序都与正常相反但单词内容正确,为了和他顺利交流你决定写一个转换程序,把他所发的消息 message 转换为正常语序。注意:输入字符串 message 中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。空间复杂度:O(n)
2024-06-28 08:38:44
329
原创 实现矩阵乘法【矩阵乘法复杂度优化】
然而,要注意的是,Python的全局解释器锁(GIL)可能限制了多线程在CPU密集型任务中的性能提升,此时多进程可能是更好的选择。对于基本的矩阵乘法算法,主要需要存储输入矩阵A和B以及输出矩阵C,因此空间复杂度是O(nm + mn + n*n) = O(n^2 + 2nm)。对于较大的矩阵乘法,虽然基本的三重循环方法直观且易于理解,但在实践中可能不是最高效的。总结来说,虽然理论上的时间复杂度较高,但得益于高效的库和算法,NumPy中的矩阵乘法在实践中表现得非常高效。矩阵乘法的一般时间复杂度是O(n。
2024-06-28 08:35:53
936
原创 java基础知识总结【markdown】
字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。Java 保留字:现有 Java 版本。自己命名标识符时要避免使用这些保留。运算是补码,结果是原码。
2024-06-17 13:41:43
392
原创 LeetCode-面试题 08.06. 汉诺塔问题【递归,栈,分治】
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。输入:A = [2, 1, 0], B = [], C = []输入:A = [1, 0], B = [], C = [](2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。输出:C = [2, 1, 0]空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)空间复杂度:O(n)
2024-06-17 13:04:14
265
原创 Typora实现设置代码块默认语言_亲测有效(AutoHotKey方式和修改配置文件)
小伙伴们在进行Typora笔记时,每一次新增代码块,总需要填写指定语言,但实际一篇文章所用到的语言都是相对统一的,所以希望有一种方法可以在使用快捷键帮助填写默认语言,减少重复劳动。
2024-06-16 19:43:09
1696
1
原创 【招联消费金融股份】有限公司2024年5月18日【算法开发岗暑期实习】一面试经验分享
从0.0001到0.02有linear,cosine,sqrt_linear,sqrtbetas = (else:Adam及其变种:结合动量和自适应学习率,快速稳定收敛,适用于大多数深度学习任务。AdamW 是 Adam 优化器的改进版本,旨在解决 Adam 优化器在某些情况下会导致权重衰减(weight decay)效果不佳的问题。
2024-06-16 17:17:26
799
原创 【阿里云】2024年5月21日【算法岗暑期实习】面试经验分享
Word Embedding 是一种将词语表示为低维稠密向量的方法,使得具有相似语义的词在向量空间中距离较近。这种方法通过捕捉词语之间的语义关系,广泛应用于自然语言处理任务中。什么是 Word EmbeddingWord Embedding 是将词语映射到连续向量空间的技术,这些向量通常是低维的(如100维或300维),相比传统的高维稀疏表示(如 one-hot encoding),它们更为紧凑且包含更多语义信息。特点和优势。
2024-06-16 17:16:02
1032
原创 LeetCode-521. 最长特殊序列 Ⅰ【字符串】
例如,“abc” 是 “aebdc” 的子序列,因为删除 “aebdc” 中斜体加粗的字符可以得到 “abc”。“aebdc” 的子序列还包括 “aebdc” 、 “aeb” 和 “” (空字符串)。解释: 字符串 a 的每个子序列也是字符串 b 的每个子序列。同样,字符串 b 的每个子序列也是字符串 a 的子序列。给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。解释: 最长特殊序列可为 “aba” (或 “cdc”),两者均为自身的子序列且不是对方的子序列。
2024-06-16 09:43:59
533
原创 LeetCode-2779. 数组的最大美丽值【数组 二分查找 排序 滑动窗口】
数组的 子序列 定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。将 nums[i] 替换为范围 [nums[i] - k, nums[i] + k] 内的任一整数。将每个数x变为一个区间[x-k,x+k],然后排序,判断区间是否有交集:也就是说,要满足。对数组 nums 执行上述操作任意次后,返回数组可能取得的 最大 美丽值。输入:nums = [1,1,1,1], k = 10。输入:nums = [4,6,1,2], k = 2。
2024-06-15 10:34:46
352
1
原创 LeetCode-419. 甲板上的战舰【深度优先搜索 数组 矩阵】
换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。输入:board = [[“X”,“.”,“.”,“X”],[“.”,“.”,“.”,“X”],[“.”,“.”,“.”,“X”]]时间复杂度:O(nm)空间复杂度:O(nm)空间复杂度:O(1)空间复杂度:O(1)
2024-06-11 10:43:17
541
原创 LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】
给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。桌子上有 n 个球,每个球的颜色不是黑色,就是白色。在每一步中,你可以选择两个相邻的球并交换它们。s[i] 不是 ‘0’,就是 ‘1’。解释:所有黑色球都已经在右侧。输入:s = “0111”时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)
2024-06-06 09:31:54
363
原创 LeetCode-165. 比较版本号【双指针 字符串】
我们可以将版本号按照点号分割成修订号,然后从左到右比较两个版本号的相同下标的修订号。注意根据题目要求,如果版本号不存在某个下标处的修订号,则该修订号视为 0。version1 的第二个修订号为 “2”,version2 的第二个修订号为 “10”:2 < 10,所以 version1 < version2。方法一需要存储分割后的修订号,为了优化空间复杂度,我们可以在分割版本号的同时解析出修订号进行比较。version1 有更少的修订号,每个缺失的修订号按 “0” 处理。原创文章,转载告知,盗版必究。
2024-06-05 18:24:19
733
原创 LeetCode-43. 字符串相乘【数学 字符串 模拟】
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。输入: num1 = “2”, num2 = “3”num1 和 num2 只能由数字组成。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)
2024-06-05 18:01:13
416
1
原创 LeetCode-704. 二分查找【数组 二分查找】
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。nums 的每个元素都将在 [-9999, 9999]之间。解释: 2 不存在 nums 中因此返回 -1。空间复杂度:O(1)空间复杂度:O(1)空间复杂度:O(1)
2024-06-05 16:25:58
399
1
原创 LeetCode-82. 删除排序链表中的重复元素 II【链表 双指针】
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。输入:head = [1,1,1,2,3]链表中节点数目在范围 [0, 300] 内。原创文章,转载告知,盗版必究。输出:[1,2,5]时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)
2024-06-05 16:20:39
386
原创 LeetCode-2246. 相邻字符不同的最长路径【树 深度优先搜索 图 拓扑排序 数组 字符串】
给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树,其中 parent[i] 是节点 i 的父节点,由于节点 0 是根节点,所以 parent[0] == -1。该路径的长度是 3 ,所以返回 3。输入:parent = [-1,0,0,1,1,2], s = “abacbe”输入:parent = [-1,0,0,0], s = “aabc”空间复杂度:O(n)
2024-06-05 11:56:45
688
原创 LeetCode-415. 字符串相加【数学 字符串 模拟】
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。输入:num1 = “11”, num2 = “123”输入:num1 = “456”, num2 = “77”输入:num1 = “0”, num2 = “0”时间复杂度:O(n + m)时间复杂度:O(n + m)空间复杂度:O(1)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)
2024-06-05 10:46:41
390
T5的整体介绍代码实战
2023-06-02
【Bert、T5、GPT】fine tune transformers 文本分类/情感分析
2023-05-30
OSError: Looks like you do not have git-lfs installed【没有root权限】
2023-05-30
从DDPM到score-based generative models再到Consistency Models的介绍
2023-05-28
基于 Logistic 混沌映射和 Arnold 变换 的变换域水印改进算法【高级网络与信息安全技术-信息隐藏期末课程论文】
2023-05-23
实验课的通用LaTeX模板,经过多年的使用和改进的最终版本,有英文和中文两种,逻辑清晰,上手简单
2023-05-20
Score-Based Generative Modeling的一个代码示例,已经训练好,并且有代码注释,帮助更深入的理解学习
2023-03-31
diffusion-model的一个小demo,能够生成S型曲线,对于初学者深入理解扩散模型很有帮助
2023-03-06
运动场管理系统.rar
2022-04-11
考研数学笔记包括:线性代数和高等数学的笔记(xmind)
2022-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人