RepPoints V2代码实现

  • Post author:
  • Post category:其他




离线服务器RepPoints v2配置

一、系统要求

Centos7.4,cuda10.1,python3.7,pytorch=1.5.1,mmcv=0.6.2,gcc=5.4,pycocotools=2.0.2,opencv-python=4.1.1.26,numpy=1.19.2,若有其他依赖包自行进行安装。

二、服务器升级gcc

由于种种原因,最终将服务器gcc=4.8.5升级为5.4.0版本,下面就介绍下如何在服务器升级gcc。

(1)安装包准备

gcc-5.4.0.tar.gz 安装包 地址:http://mirror.hust.edu.cn/gnu/gcc/

gmp-4.3.2.tar.bz2 gcc依赖包 地址:http://mirror.hust.edu.cn/gnu/gmp/

mpfr-2.4.2.tar.bz2 gcc依赖包 地址:http://mirror.hust.edu.cn/gnu/mpfr/

mpc-0.8.1.tar.gz gcc依赖包 地址:http://mirror.hust.edu.cn/gnu/mpc/

isl-0.14.tar.bz2 gcc依赖包 地址:http://isl.gforge.inria.fr/

这里的版本是对应的,我们可以在解压后的gcc-5.4.0的contrib/download_prerequisites文件里查看到gcc-5.4.0对应依赖包的版本,如图:

在这里插入图片描述

注意:离线服务器要将wegt这句话注释了,否则会报错

(2)离线服务器安装

将gcc-5.4.0及依赖包上传到服务器,

在这里插入图片描述

依次进行如下操作:

tar -xvzf gcc-5.4.0.tar.gz
#将mpfr、mpc、gmp、isl四个安装包移入gcc-5.4.0文件中
mv gmp-4.3.2.tar.bz2 gcc-5.4.0
mv mpfr-2.4.2.tar.bz2 gcc-5.4.0
mv mpc-0.8.1.tar.gz gcc-5.4.0
mv isl-0.14.tar.bz2 gcc-5.4.0
cd gcc-5.4.0/
./contrib/download_prerequisites
mkdir temp
cd temp
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j16  #进行编译,编译时间较长,如果你的机器提示线程不足可以尝试make -j4或者make -j8
make install 
gcc -v 

#出现下面的结果表明升级成功
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 5.4.0 (GCC) 

'''
gcc -v 出现5.4.0即表示更新成功了,这种方法我尝试时不需要配置环境的,
如果在使用本文档配置出现错误时可以尝试将环境变量配置一下:
cd /usr/bin/
sudo ln -s /usr/local/gcc-5.4/bin/gcc /usr/local/bin/gcc54
sudo ln -s /usr/local/gcc-5.4/bin/g++ /usr/local/bin/g++54
vi /etc/profile
#添加如下代码
export  LD_LIBRARY_PATH=/usr/local/gcc-5.4/lib:/usr/local/gcc-5.4/lib64:$LD_LIBRARY_PATH
#保存退出后,生效
source /etc/profile
'''

三、编译并运行RepPointsV2的测试文件

(1)下载RepPointsV2官方代码,地址:https://github.com/Scalsol/RepPointsV2

解压RepPointsV2-master.zip

cd RepPointsV2-master/
python setup.py develop
#编译后成功后
pip list #会有mmdet 2.2.0+unknown /home/deployer/RepPointsV2-master的版本mmdet出现
ls mmdet/ops/corner_pool/
#会看到有corner_pool_ext.cpython-37m-x86_64-linux-gnu.so代表编译完成

(2)运行测试文件

vi demo_image.py
from mmdet.apis import init_detector, inference_detector
import mmcv, os, time
config_file = 'configs/reppoints_v2/reppoints_v2_r50_fpn_giou_1x_coco.py'
checkpoint_file = 'checkpoints/reppoints_v2_r50_fpn_giou_1x_coco-766a3447.pth'

# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file, device='cuda:0')

save_path = '11test_result'
local_file = os.listdir('11test_pic/')
for i in range(len(local_file)):
    img = '11test_pic/'+local_file[i]  # or img = mmcv.imread(img), which will only load it once
    print(f'img : {img}')
    result = inference_detector(model, img)
    model.show_result(img, result, score_thr=0.5, thickness=1, font_scale=0.5, out_file=save_path+'/result_'+local_file[i])

#运行demo_image.py文件即可以进行文件夹内图片的检测

if 你觉得原版结果可以:
    pass
 else:
    #修改下原版的mmcv.imshow_det_bboxes()画图
    ####这里先用python -c "import mmcv;print(mmcv)"找到mmcv安装包的位置
    
    #结果中<module 'mmcv' from '/home/deployer/anaconda3/lib/python3.7/site-packages/mmcv-0.6.2-py3.7-linux-x86_64.egg/mmcv/__init__.py'>
    /home/deployer/anaconda3/lib/python3.7/site-packages/mmcv-0.6.2-py3.7-linux-x86_64.egg/mmcv就是mmcv的安装包,再运行如下语句进行画图修改
    vi /home/deployer/anaconda3/lib/python3.7/site-packages/mmcv-0.6.2-py3.7-linux-x86_64.egg/mmcv/visualization/image.py
    找到80行的imshow_det_bboxes函数,将125行后面修改为下面的代码:
    tl = round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1
    for bbox, label in zip(bboxes, labels):
        tf = max(tl - 1, 1)
        bbox_int = bbox.astype(np.int32)
        left_top = (bbox_int[0], bbox_int[1])
        right_bottom = (bbox_int[2], bbox_int[3])
        cv2.rectangle(img, left_top, right_bottom, bbox_color, thickness=tl, lineType=cv2.LINE_AA)
        label_text = class_names[
            label] if class_names is not None else f'cls {label}'
        if len(bbox) > 4:
            label_text += f'|{bbox[-1]:.02f}'
        t_size = cv2.getTextSize(label_text, 0, fontScale=tl / 3, thickness=tf)[0]
        c2 = left_top[0] + t_size[0], left_top[1] - t_size[1] - 3
        cv2.rectangle(img, left_top, c2, bbox_color, -1, cv2.LINE_AA)
        cv2.putText(img, label_text, (left_top[0], left_top[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)

    vi mmdet/models/detectors/base.py
    #修改这个文件夹下的292行的show_result函数的bbox_color和text_color,固定框子颜色
    bbox_color=(234, 71, 87),
    text_color=(141, 97, 71),

至此,测试代码运行完成,看看结果吧。

数据集来自voc2007

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本次分享就到此结束。



版权声明:本文为m0_47913742原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。