调试mmcls

调试mmcls主要是让自己记住要改的几步,不然总是容易忘。

1.数据输入有两种,一种可以带ann_file形式,一种是不带,通常不带的,就直接取train文件下的几类做训练的,如果是带,形式上是一行图片名称,后面跟类别,

135efbeaeb592d3b51edca5dff099de6 1

这种形式是不可取的,要完整的文件名,否则要去修改一下,要记住mm系列中数据集和数据前处理是分离的,数据集是用来__getitem__和测评数据的,前处理是处理成模型想要的输入格式。格式不对,属于读取数据在loadImageFromFile(pipeline)中,我把图片后缀加上了.jpg。

 def __call__(self, results):
        if self.file_client is None:
            self.file_client = mmcv.FileClient(**self.file_client_args)

        if results['img_prefix'] is not None:
            filename = osp.join(results['img_prefix'],
                                results['img_info']['filename']+".jpg")
        else:
            filename = results['img_info']['filename'] +".jpg"

        img_bytes = self.file_client.get(filename)
        img = mmcv.imfrombytes(img_bytes, flag=self.color_type)
        if self.to_float32:
            img = img.astype(np.float32)

        results['filename'] = filename
        results['ori_filename'] = results['img_info']['filename']
        results['img'] = img
        results['img_shape'] = img.shape
        results['ori_shape'] = img.shape
        num_channels = 1 if len(img.shape) < 3 else img.shape[2]
        results['img_norm_cfg'] = dict(
            mean=np.zeros(num_channels, dtype=np.float32),
            std=np.ones(num_channels, dtype=np.float32),
            to_rgb=False)
        return results

这样有可能图片有问题,在dataset中__getitem__做这个修改,mmclassification-master/mmcls/datasets/base_dataset.py:

    def __getitem__(self, idx):
        try:
            return self.prepare_data(idx)
        except:
            return self.__getitem__(np.random.randint(self.__len__()))

2.在imagenet中修改classes。

3.在config的model中修改classes。

4.在config中的dataset中修改数据的路径名称,samples_pre_gpu这些数据,通常1080ti上224的图片的bs大概在56-96之间,此外works指的是cpu的进程,通常取2.另外就是间隔保存,evluation的评估间隔等这些。

5.如果你是二分类,记得在model中更改topk=(1,),然后在mmclassification-master/mmcls/datasets/base_dataset.py中有两个固定的(1,5)要更改一下,这两个是写死的,如果类别不够5,会在评估时报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值