BoxInst配置及训练

BoxInst安装

使用BoxInst需要先安装AdelaiDet,AdelaiDet是一个运行在Detectron2基础上的工具箱,可以实现以下多个算法:

FCOS,BlendMask,MEInst,ABCNet,ABCNetv2,CondInst,SOLO,SOLOv2,BoxInst,DenseCL,FCPose,DirectPose
github地址:https://github.com/aim-uofa/AdelaiDet

requirement

  • linux or macOS with Python >= 3.7

  • pytorch >= 1.8 (最好是1.8.1,1.10以上的会出一点bug,很怪,最后也没解决掉)

  • Opencv

  • gcc&g++ >= 5.4

    sudo apt-get install gcc
    
  • ninja

Build detectron2 from source

git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2

如果安装出了bug,需要重新安装,使用指令 rm -rf build/ **/*.so清除掉旧的build文件,然后重新安装

如果重新安装的pytorch,也需要对detectron2进行重新安装。

Install AdelaiDet

git clone https://github.com/aim-uofa/AdelaiDet.git
cd AdelaiDet
python setup.py build develop

可能会出的bug:

这一步基本上没啥bug出现,很常见的一个bug,就是

AdelaiDet/adet/layers/csrc/ml_nms/ml_nms.cu:4:10: fatal error: THC/THC.h: No such file or directory
    4 | #include <THC/THC.h>
      |          ^~~~~~~~~~~
compilation terminated.

类似于这个样子的。

这个,主要原因是因为Pytorch的后期版本,把这个模块移除了

解决方案有两个

  1. 降级pytorch,降级到1.8.1(已验证,可以解决)
  2. 使用issue#516的解决方案,我用这个方法最后没解决掉

Start BoxInst

ok,如果安装好的AdelaiDet,就可以开始进入BoxInst的使用了。

首先,因为AdelaiDet是在Detectron2上运行的,所以他的所有数据集都需要在detectron2上注册后才能使用。

Register Dataset

首先,把以下的代码引入AdelaiDet/tools/train_net.py里

#写你自己的类别
CLASS_NAMES =["tower"]
# 数据集路径
DATASET_ROOT = 'path'
ANN_ROOT = os.path.join(DATASET_ROOT, '你json文件的目录')
TRAIN_PATH = os.path.join(DATASET_ROOT, '训练集图片文件夹')
VAL_PATH = os.path.join(DATASET_ROOT, '验证集图片文件夹')
TRAIN_JSON = os.path.join(ANN_ROOT, 'train.json')
VAL_JSON = os.path.join(ANN_ROOT, 'val.json')
#VAL_JSON = os.path.join(ANN_ROOT, 'test.json')
# 声明数据集的子集
PREDEFINED_SPLITS_DATASET = {
    "my_dataset_train": (TRAIN_PATH, TRAIN_JSON),
    "my_dataset_val": (VAL_PATH, VAL_JSON),
}
def plain_register_dataset():
    DatasetCatalog.register("coco_my_train", lambda: load_coco_json(TRAIN_JSON, TRAIN_PATH))
    MetadataCatalog.get("coco_my_train").set(thing_classes=CLASS_NAMES, 
                                                    evaluator_type='coco',
                                                    json_file=TRAIN_JSON,
                                                    image_root=TRAIN_PATH)

    DatasetCatalog.register("coco_my_val", lambda: load_coco_json(VAL_JSON, VAL_PATH))
    MetadataCatalog.get("coco_my_val").set(thing_classes=CLASS_NAMES,
                                                evaluator_type='coco', 
                                                json_file=VAL_JSON,
                                                image_root=VAL_PATH)

然后在train_net.py的main类里,加入plain_register_dataset(),这样就算注册完了

修改配置文件

进到configs/boxinst文件夹,改掉base-Boxinst.yaml文件里的DATASETS,改成你的数据集名称

进行训练

运行以下代码去执行训练

OMP_NUM_THREADS=1 python tools/train_net.py --config-file configs/BoxInst/MS_R_50_1x.yaml --num-gpus 1 OUTPUT_DIR training_dir/BoxInst_MS_R_50_1x

config-file:调整为你需要的模型

num-gpus:你用几个gpu就写几个

按回车,跑就行了

常见bug

ModuleNotFoundError: No module named 'adet'

在train_net.py开头加入如下代码:

import sys
sys.path.append("/home/detectron2/")
sys.path.append("/home/AdelaiDet") #你的adelaiDet和detectron2路径

训练结果验证

python demo/demo.py \
    --config-file configs/BoxInst/MS_R_50_3x.yaml \
    --input input1.jpg input2.jpg \ #改成你的需要验证的图片路径
    --opts MODEL.WEIGHTS BoxInst_MS_R_50_3x.pth #改成你的模型文件
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值