hrlblab / CircleNet

The official implementation of CircleNet, MICCAI 2020
MIT License
75 stars 18 forks source link

关于数据分类问题 #25

Closed s153g closed 6 months ago

s153g commented 1 year ago

该项目是否没有分类器,Heat Map最后的Conv(256,C),这里的C是细胞类别还是检测细胞列表? 我现在有一个四类细胞的免疫组化图像,是否无法使用?

JumingXiong commented 9 months ago

是细胞类别。是可以做multi-class的

s153g commented 6 months ago

我使用了我自己的数据集进行加载,这个数据集是四类细胞的,并且使用train命令进行了训练,训练过程并没有报错。但是无论我使用demo.py进行可视化测试,还是使用Test命令,都无效。使用demo.py出来的就是我的原图,并不像首页所显示的那样具有圆圈标识的结果。而使用Test命令,只会跳出四个图,然后就会卡主。我想请问这是什么原因,如果您能回答我,我将万分感激!!

s153g commented 6 months ago

image

JumingXiong commented 6 months ago

我使用了我自己的数据集进行加载,这个数据集是四类细胞的,并且使用train命令进行了训练,训练过程并没有报错。但是无论我使用demo.py进行可视化测试,还是使用Test命令,都无效。使用demo.py出来的就是我的原图,并不像首页所显示的那样具有圆圈标识的结果。而使用Test命令,只会跳出四个图,然后就会卡主。我想请问这是什么原因,如果您能回答我,我将万分感激!!

您可以使用 main.py 进行visualization。

test时加上 --debug 1 会保存每一张visualization的图 例如: python main.py circledet --exp_id CircleNet_eoe --arch dla_34 --batch_size 4 --master_batch 4 --lr 2.5e-4 --dataset eoe --load_model ../exp/circledet/CircleNet_eoe/model_best.pth --test --ontestdata --debug 1.

s153g commented 6 months ago

image 首先非常感谢您及时回答我的问题,我按您所说的命令来运行,我的命令如下:python main.py circledet --exp_id CircleNet_DLA_mIHC --arch dla_34 --batch_size 32 --master_batch 32 --lr 2.5e-4 --dataset mIHC --load_model ../exp/circledet/CircleNet_DLA_mIHC/model_best.pth --test --ontestdata --debug 1 使用后出现这四张图,我认为这四个图是有问题的。问题可能在于您这个代码是单分类的,而我的数据集是四分类问题,我在运行demo.py时,发现了这个提示。

python demo.py circledet --arch dla_34 --demo ../data/mIHC/val/TMA_Block_02_D09_220.png --load_model ../exp/circledet/CircleNet_DLA_mIHC/model_120.pth Fix size testing. training chunk_sizes: [32] The output will be saved to /home/hoo/yjy/CircleNet/src/lib/../../exp/circledet/default heads {'hm': 1, 'cl': 1, 'reg': 2} Creating model... loaded ../exp/circledet/CircleNet_DLA_mIHC/model_120.pth, epoch 120 Skip loading parameter hm.2.weight, required shapetorch.Size([1, 256, 1, 1]), loaded shapetorch.Size([4, 256, 1, 1]). Skip loading parameter hm.2.bias, required shapetorch.Size([1]), loaded shapetorch.Size([4]). ['../data/mIHC/val/TMA_Block_02_D09_220.png']

JumingXiong commented 6 months ago

image 首先非常感谢您及时回答我的问题,我按您所说的命令来运行,我的命令如下:python main.py circledet --exp_id CircleNet_DLA_mIHC --arch dla_34 --batch_size 32 --master_batch 32 --lr 2.5e-4 --dataset mIHC --load_model ../exp/circledet/CircleNet_DLA_mIHC/model_best.pth --test --ontestdata --debug 1 使用后出现这四张图,我认为这四个图是有问题的。问题可能在于您这个代码是单分类的,而我的数据集是四分类问题,我在运行demo.py时,发现了这个提示。

python demo.py circledet --arch dla_34 --demo ../data/mIHC/val/TMA_Block_02_D09_220.png --load_model ../exp/circledet/CircleNet_DLA_mIHC/model_120.pth Fix size testing. training chunk_sizes: [32] The output will be saved to /home/hoo/yjy/CircleNet/src/lib/../../exp/circledet/default heads {'hm': 1, 'cl': 1, 'reg': 2} Creating model... loaded ../exp/circledet/CircleNet_DLA_mIHC/model_120.pth, epoch 120 Skip loading parameter hm.2.weight, required shapetorch.Size([1, 256, 1, 1]), loaded shapetorch.Size([4, 256, 1, 1]). Skip loading parameter hm.2.bias, required shapetorch.Size([1]), loaded shapetorch.Size([4]). ['../data/mIHC/val/TMA_Block_02_D09_220.png']

您需要将 “hm”:1 改成 “hm”:4. 应该就可以处理4分类问题了. 如果您训练的时候没有改的话,建议改成4了以后,重新训练一下.

s153g commented 6 months ago

想请问具体在哪个文件中修改hm为4? 我还有一个问题,我想使用您的代码做对比实验,但是我看您的评价指标是AP,而我的评价指标是Precision、Recall和F1分数,我应该在哪个文件中修改这些信息,是否是在src/lib/datasets/eval_protocals/circle_eval.py中修改? 这个circledet、ctdet、ddd又分别是什么呢?我是否只需要训练circledet就可以呢?

JumingXiong commented 6 months ago

想请问具体在哪个文件中修改hm为4? 我还有一个问题,我想使用您的代码做对比实验,但是我看您的评价指标是AP,而我的评价指标是Precision、Recall和F1分数,我应该在哪个文件中修改这些信息,是否是在src/lib/datasets/eval_protocals/circle_eval.py中修改? 这个circledet、ctdet、ddd又分别是什么呢?我是否只需要训练circledet就可以呢?

您好,首先我需要更正一下,用 --debug 4进行visualization。

第二您需要在src/datasets/dataset/{您的.py} 中 更改self.class_name 和 self._valid_ids 例如四分类: self.class_name = ['background', 'class_0','class_1','class_2','class_3'] self._valid_ids = [0,1,2,3].

对于评价指标,我们使用的COCO AP进行评价. 如果是分类问题建议用保存好的result.json 来进行分析,不确定更改circle_eval.py会不会有效。 circledet,ctdet, ddd是三中模型结构,如果只用circlenet那么只需训练circledet就行

s153g commented 6 months ago

您好,debug 1和4有什么具体的区别呢?

第二,您说的我之前就已经更改了,来适配我的工作。 self.class_name = [ 'background', 'CD8+T-bet+', 'CD8+T-bet-', 'CK+PD-L1+', 'CK+PD-L1-'] self._valid_ids = [1, 2, 3, 4] 我使用这个配置的话,识别出来hm就是1,我应该在哪里修改hm为4呢?这点我比较困惑。

对于您说建议的评价指标的修改意见,我发现我这里并没有保存好的result.json文件,这是什么原因呢?

s153g commented 6 months ago

您好,我再次仔细检查了我的代码,发现在opt.txt中,我的hm就已经是4了,这是什么原因呢?还有什么可能的问题,希望您能回复我,谢谢!!!

s153g commented 6 months ago

我重启机器以后,使用python main.py circledet --exp_id CircleNet_DLA_mIHC --arch dla_34 --batch_size 32 --master_batch 32 --lr 2.5e-4 --dataset mIHC --load_model ../exp/circledet/CircleNet_DLA_mIHC/model_best.pth --test --ontestdata --debug 4命令,发现居然可以正常运行了,并且输出的heads中hm明显是4,这是一个很玄学的事情。 但是新的问题出现了,'Debugger' object has no attribute 'names'。这样我应该怎么做? heads {'hm': 4, 'cl': 1, 'reg': 2} Namespace(K=1000, aggr_weight=0.0, agnostic_ex=False, arch='dla_34', aug_ddd=0.5, aug_rot=0, batch_size=1, cat_spec_wh=False, center_thresh=0.1, chunk_sizes=[1], data_dir='/home/hoo/yjy/CircleNet/src/lib/../../data', dataset='mIHC', debug=4, debug_dir='/home/hoo/yjy/CircleNet/src/lib/../../exp/circledet/CircleNet_DLA_mIHC/debug', debugger_theme='white', demo='', demo_dir='', dense_hp=False, dense_wh=False, dep_weight=1, dim_weight=1, down_ratio=4, eval_oracle_dep=False, eval_oracle_hm=False, eval_oracle_hmhp=False, eval_oracle_hp_offset=False, eval_oracle_kps=False, eval_oracle_offset=False, eval_oracle_wh=False, exp_dir='/home/hoo/yjy/CircleNet/src/lib/../../exp/circledet', exp_id='CircleNet_DLA_mIHC', ez_guassian_radius=False, filter_boarder=False, fix_res=True, flip=0.5, flip_test=False, gpus=[0], gpus_str='1', head_conv=256, heads={'hm': 4, 'cl': 1, 'reg': 2}, hide_data_time=False, hm_hp=True, hm_hp_weight=1, hm_weight=1, hp_weight=1, input_h=512, input_res=512, input_w=512, keep_res=False, kitti_split='3dop', load_model='../exp/circledet/CircleNet_DLA_mIHC/model_best.pth', lr=0.00025, lr_step=[90, 120], lv=2, mask_focal_loss=False, master_batch_size=1, mean=array([[[0.40789655, 0.44719303, 0.47026116]]], dtype=float32), metric='loss', mse_loss=False, nms=False, no_color_aug=False, norm_wh=False, not_cuda_benchmark=False, not_hm_hp=False, not_prefetch_test=False, not_rand_crop=False, not_reg_bbox=False, not_reg_hp_offset=False, not_reg_offset=False, num_classes=4, num_epochs=200, num_iters=-1, num_stacks=1, num_workers=0, off_weight=1, ontestdata=True, output_h=128, output_res=128, output_w=128, pad=31, peak_thresh=0.2, print_iter=0, rect_mask=False, reg_bbox=True, reg_hp_offset=True, reg_loss='l1', reg_offset=True, resume=False, root_dir='/home/hoo/yjy/CircleNet/src/lib/../..', rot_weight=1, rotate=0, rotate_reproduce=0, save_all=False, save_dir='/home/hoo/yjy/CircleNet/src/lib/../../exp/circledet/CircleNet_DLA_mIHC', scale=0.4, scores_thresh=0.1, seed=317, shift=0.1, std=array([[[0.2886383 , 0.27408165, 0.27809834]]], dtype=float32), task='circledet', test=True, test_scales=[1.0], test_val_name='', trainval=False, val_intervals=1, vis_thresh=0.2, wh_weight=0.1) Creating model... loaded ../exp/circledet/CircleNet_DLA_mIHC/model_best.pth, epoch 37 Setting up data... ==> initializing mIHC test data. loading annotations into memory... Done (t=0.07s) creating index... index created! loading annotations into memory... Done (t=0.12s) creating index... index created! Loaded test 352 samples circledet/CircleNet_DLA_mIHC/home/hoo/.conda/envs/CircleNet/lib/python3.7/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead. warnings.warn(warning.format(ret)) circledet/CircleNet_DLA_mIHC |################################| val: [0][351/352]|Tot: 0:00:41 |ETA: 0:00:01 |loss 0.0171 |hm_loss 0.0161 |cl_loss 0.0011 |offloss 0.0009 |Data 0.104s(0.094s) |Net 0.117sTraceback (most recent call last): File "main.py", line 322, in main(opt) File "main.py", line 61, in main , preds = trainer.val(0, val_loader) File "/home/hoo/yjy/CircleNet/src/lib/trains/base_trainer.py", line 126, in val return self.run_epoch('val', epoch, data_loader) File "/home/hoo/yjy/CircleNet/src/lib/trains/base_trainer.py", line 99, in run_epoch self.debug(batch, output, iter_id) File "/home/hoo/yjy/CircleNet/src/lib/trains/circledet.py", line 142, in debug dets_gt[i, k, 3], img_id='out_gt') File "/home/hoo/yjy/CircleNet/src/lib/utils/debugger.py", line 212, in add_coco_circle txt = '{}{:.1f}'.format(self.names[cat], conf) AttributeError: 'Debugger' object has no attribute 'names'