【代码调试】《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》
論文地址:https://arxiv.org/pdf/2103.05950.pdf
代碼地址:https://github.com/megvii-research/FSCE
論文閱讀:https://blog.csdn.net/qiankendeNMY/article/details/128390284
我的配置:
Python :3.8(ubuntu18.04)
Pytorch :1.6.0
Cuda :10.1
GPU:RTX 2080 Ti(11GB) * 2
1、依賴安裝
requirements.txt文件下載:https://github.com/ucbdrive/few-shot-object-detection
pip install -r requirements.txt2、 安裝pycocoapi
pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'3、安裝fvcore庫(kù)
pip install 'git+https://github.com/facebookresearch/fvcore'報(bào)錯(cuò):
解決參考:
https://blog.csdn.net/weixin_45355608/article/details/116528406
4、Build
python setup.py build develop4.1、報(bào)錯(cuò)1
解決:
(1)修改 ./fedet/model_zoo下configs文件的內(nèi)容,改成configs文件夾所在的路徑
(2)執(zhí)行以下命令,創(chuàng)建軟鏈接
ln -sf 【configs文件夾所在的路徑】 ./fsdet/model_zoo例如:
ln -sf /root/autodl-tmp/configs ./fsdet/model_zoo4.2、報(bào)錯(cuò)2
解決:
降低pytorch的版本,原來我的pytorch版本是1.6,降低到了1.4就可以正常運(yùn)行了:
https://github.com/megvii-research/FSCE/issues/19
build成功
5、下載VOC數(shù)據(jù)集
cd datasets wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar tar xf VOCtrainval_11-May-2012.tar tar xf VOCtrainval_06-Nov-2007.tar tar xf VOCtest_06-Nov-2007.tar6、訓(xùn)練基礎(chǔ)檢測(cè)器
python tools/train_net.py --num-gpus 2 --config-file configs/PASCAL_VOC/base-training/R101_FPN_base_training_split1.yml6.1、報(bào)錯(cuò)1
解決:
手動(dòng)下載pkl文件:
https://dl.fbaipublicfiles.com/detectron2/ImageNetPretrained/MSRA/R-101.pkl
然后,修改yml.py中pkl文件的路徑,改為pkl文件在本機(jī)上的存儲(chǔ)路徑,例如: /path/to/ImageNetPretrained/MSRA/R-101.pkl.
6.2、報(bào)錯(cuò)2
Traceback (most recent call last):File "/root/miniconda3/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 20, in _wrapfn(i, *args)File "/root/autodl-tmp/fsdet/engine/launch.py", line 84, in _distributed_workermain_func(*args)File "/root/autodl-tmp/tools/train_net.py", line 116, in mainreturn trainer.train()File "/root/autodl-tmp/fsdet/engine/defaults.py", line 397, in trainsuper().train(self.start_iter, self.max_iter)File "/root/autodl-tmp/fsdet/engine/train_loop.py", line 132, in trainself.run_step()File "/root/autodl-tmp/fsdet/engine/train_loop.py", line 212, in run_steploss_dict = self.model(data)File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__result = self.forward(*input, **kwargs)File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 458, in forwardoutput = self.module(*inputs[0], **kwargs[0])File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__result = self.forward(*input, **kwargs)File "/root/autodl-tmp/fsdet/modeling/meta_arch/rcnn.py", line 166, in forward_, detector_losses = self.roi_heads(images, features, proposals, gt_instances)File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__result = self.forward(*input, **kwargs)File "/root/autodl-tmp/fsdet/modeling/roi_heads/roi_heads.py", line 443, in forwardlosses = self._forward_box(features_list, proposals) # get losses from fast_rcnn.py::FastRCNNOutputsFile "/root/autodl-tmp/fsdet/modeling/roi_heads/roi_heads.py", line 464, in _forward_boxbox_features = self.box_pooler(features, [x.proposal_boxes for x in proposals]) # [None, 256, POOLER_RESOLU, POOLER_RESOLU]File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__result = self.forward(*input, **kwargs)File "/root/autodl-tmp/fsdet/modeling/poolers.py", line 233, in forwardoutput[inds] = pooler(x_level, pooler_fmt_boxes_level)File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__result = self.forward(*input, **kwargs)File "/root/autodl-tmp/fsdet/layers/roi_align.py", line 93, in forwardreturn roi_align(File "/root/autodl-tmp/fsdet/layers/roi_align.py", line 19, in forwardoutput = _C.roi_align_forward( RuntimeError: Not compiled with GPU support這個(gè)問題死活解決不了,刪了所有環(huán)境重新配置之后就沒有再出現(xiàn)這個(gè)問題了。但是花了不少時(shí)間,希望有大佬看到的話能夠提出解決方案。
基礎(chǔ)訓(xùn)練完成:
7、隨機(jī)初始化新類別的權(quán)重
python tools/ckpt_surgery.py --src1 checkpoints/voc/faster_rcnn/faster_rcnn_R_101_FPN_base1/model_final.pth --method randinit --save-dir checkpoints/voc/faster_rcnn/faster_rcnn_R_101_FPN_all18、數(shù)據(jù)集split
方法一:
python datasets/prepare_voc_few_shot.py --seeds 1 30方法二:直接選擇下載作者提供的網(wǎng)頁數(shù)據(jù)集
wget -r -R index.html http://dl.yf.io/fs-det/datasets將下載好的VOC數(shù)據(jù)集存放在datasets文件夾中的vocsplit文件夾下:
注:
9、微調(diào)
修改模型的權(quán)重路徑為model_resnet_surgery.pth文件的保存路徑:
微調(diào)結(jié)束:
10、評(píng)估
python tools/test_net.py --num-gpus 2 \--config-file configs/PASCAL_VOC/split1/10shot_CL_IoU.yml \--eval-only報(bào)錯(cuò):
解決:
參考:https://github.com/megvii-research/FSCE/issues/9
評(píng)估結(jié)束:
如有錯(cuò)誤,歡迎指正!
總結(jié)
以上是生活随笔為你收集整理的【代码调试】《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【51单片机】汽车里程表之测速功能
- 下一篇: Flutter汽车仪表盘DashBoar