Comments (11)
@luzai Basically, there are 3 ways to implement bs > 1
.
(1) Accumulate loss before back-propagation. This is the simplest way but not very efficient.
(2) Customize collate_fn
to merge them into a big graph (as you suggested) or pad graphs to the max size in the batch.
(3) Use distributed training, i.e., each process handles a graph.
from learn-to-cluster.
@luzai I guess the question is why GCN-D
can predict IoU
since we don't have
(1) I agree with you that larger receptive field may potentially lead to better result. Actually, the generated proposals contain different receptive fields and some proposals are larger than the ground-truth.
(2) We have to control the receptive field in a reasonable range. Note that it is similar to object detection with very dense objects on an image, thus if we use very large receptive field, it may make the main object unclear.
(3) IoU
is an indicator to evaluate the quality of a cluster proposal. Our goal is to rank all proposals with a meaningful predicted score. There may exist better indicators.
(4) An alternative solution is to generate proposals directly on the entire affinity graph, like faster-rcnn in object detection. In this way, the receptive field will not be a problem.
I think it is a very good question and worth further investigation.
from learn-to-cluster.
@zhaomengao We have not implemented batch_size_per_gpu > 1
yet.
- If you want to implement
batch_size_per_gpu > 1
, you can customizecollate_fn
since graphs have varied size inside a batch. - Make sure you generate multi-view proposals during training. Generally, more proposals help train the model better. The model structure is the same as the pretrained model. The training code will be released later in late May.
from learn-to-cluster.
Thanks a lot for your answer.
The training proposals are generated through part0_train.bin and the given faiss_k_80.npz, that is is_rebuild=False, is that right? the th is set as [0.6 0.65 0.7 0.75].
Besides, can I refer to the parameter settings in cfg_0.7_0.75.yaml?
from learn-to-cluster.
@zhaomengao yes, you can refer to the settings in cfg_0.7_0.75.yaml, I have updated the config in dev
branch. One different thing lies in the batch size, as we use bs=32
for training. Besides, you can obtain more training proposals by using different k
or iteratively building the super vertices.
from learn-to-cluster.
Thank you for your great work!
May I ask some details about implement bs=32
? I guess we need to merge graphs of varied size into one graph and do sparse matrix multiplication on the large graph. Is this correct?
Meanwhile, may I ask a question about the paper? As shown in the figure from the paper, the output of gcn is 0.82
when it is feeded by a graph of 5 nodes (with adj, features). Do you think the gcn need to be feed with larger graph (maybe we can call it larger reception field), so that it knows the iou is 0.82, since iou concerns all ground truth vertex of one class?
from learn-to-cluster.
@luzai I am not sure I fully understand your second question.
(1) There are different proposals in this figure and their receptive field are different.
(2) This teaser is only a demonstration of our algorithm, not the actual result. In practice, the vertices of a proposal for ms1m usually lies in 30~300.
Keep asking if I don't fully answer your question.
from learn-to-cluster.
Thank you very much for your detailed response!
For the second question, I am sorry for not explaining clearly. May I describe the question in more details?
The input to GCN-D
is the proposal GCN-D
is capable of prediction the purity IoP
. As for IoU
, I guess GcN-D
may find some cluster patterns to predict it, but it may predict it more precisely, given more input vertex.
Please let me know if I do not fully understand the idea of paper. Thank you!
from learn-to-cluster.
Great thanks for your detailed response!
I can understand that (1) Some of the proposals is a super-set of ground-truth cluster, since they are generated in multi-scale. (2) GCN-D
will evaluate each proposal by the indicator IoU
. Larger proposal may receives higher score. (There may be other intrinsic patterns for a proposal of high recall, not just large). (3) DeOverlap
rank the proposals and predict clusters. Larger proposal may be preferred in this step. Thus, the whole pipeline can generate high quality clusters.
Your comparation with object detection is quite inspiring. Expect more solid works!
from learn-to-cluster.
@luzai Yes, your are right. The key lies in the multi-scale training and testing. This is a good point and we are going to do more analysis on the learned patterns.
from learn-to-cluster.
@zhaomengao @luzai batch_size > 1
is supported now and the training code is released.
from learn-to-cluster.
Related Issues (20)
- output error HOT 1
- Dataset issue HOT 2
- Issue while training LGCN HOT 1
- 您好,想请教一下训练GCN-D时报错run out of input HOT 1
- 没有修改任何参数跑作者提供的pretrained model for ms1m Fscore 只有0.32
- Clustering 512D features using pretrained model HOT 3
- building symmetric adjacency matrix in utils HOT 1
- why using output of relu for rebuilding knn graph HOT 1
- is not a checkpoint filemodels/pretrained_gcn_e_ms1m.pth HOT 3
- about extracting features HOT 3
- About how to make a .meta file HOT 1
- Can we manually set the number of clusters during the test HOT 1
- 大佬,请教下train_cluster_seg_iop_vox.sh 的test阶段报错的问题 HOT 2
- 两个face recognition模型,推荐使用哪个,hfsoftmax还要用到python 2 ? HOT 1
- About pretrained_model to get the the extracted feature HOT 2
- GCN-D MMdistributedDataparallel train HOT 2
- 关于性能 HOT 1
- How to apply lgcn for clustering on custom embeddings of collected face images? HOT 1
- On custom dataset preparation
- On the numpy version which may cause exception HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from learn-to-cluster.