文章目录

  • 前言
  • 一、源码
  • 二、安装依赖包
    • 1.运行安装脚本
    • 2.安装成功显示如下信息
  • 三、安装apex
    • 1.安装报错
      • 解决方法
    • 2.安装报错
      • 解决 方法1
      • 解决方法2
    • 四、安装pycocotools
    • 五、验证环境
      • 检测结果:看到下图说明环境没有问题了
    • 六、数据集
    • 七、修改配置
      • 1、 修改类别个数
      • 2、修改类别
      • 3、修改数据集目录
  • 参考链接

前言

YOLOX 是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。
其中YOLOX-L版本以 68.9 FPS 的速度在 COCO 上实现了 50.0% AP,比 YOLOv5-L 高出 1.8% AP!还提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本,本文将详细介绍如何使用 YOLOX进行物体检测。


一、源码

GitHub地址:https://github.com/Megvii-BaseDetection/YOLOX

(base) omg@omg:~/work/code/deep_learn$ git clone https://github.com/Megvii-BaseDetection/YOLOX.git

可以用PyCharm打开。

二、安装依赖包

1.运行安装脚本

(base) omg@omg:~/work/code/deep_learn/YOLOX$ python setup.py install

2.安装成功显示如下信息

......
......
Using /home/omg/anaconda3/lib/python3.9/site-packages
Searching for wheel==0.37.0
Best match: wheel 0.37.0
Adding wheel 0.37.0 to easy-install.pth file
Installing wheel script to /home/omg/anaconda3/binUsing /home/omg/anaconda3/lib/python3.9/site-packages
Finished processing dependencies for yolox==0.3.0

三、安装apex

APEX是英伟达开源的,完美支持PyTorch框架,用于改变数据格式来减小模型显存占用的工具。其中最有价值的是amp(Automatic Mixed Precision),将模型的大部分操作都用Float16数据类型测试,一些特别操作仍然使用Float32。并且用户仅仅通过三行代码即可完美将自己的训练代码迁移到该模型。实验证明,使用Float16作为大部分操作的数据类型,并没有降低参数,在一些实验中,反而由于可以增大Batch size,带来精度上的提升,以及训练速度上的提升。

(base) omg@omg:~/work/code/deep_learn$ git clone https://github.com/NVIDIA/apex.git

1.安装报错

Processing /home/zhaoyq6/work/code/deep_learn/apexRunning command python setup.py egg_infoTraceback (most recent call last):File "<string>", line 2, in <module>File "<pip-setuptools-caller>", line 34, in <module>File "/home/zhaoyq6/work/code/deep_learn/apex/setup.py", line 137, in <module>_, bare_metal_version = get_cuda_bare_metal_version(CUDA_HOME)File "/home/zhaoyq6/work/code/deep_learn/apex/setup.py", line 17, in get_cuda_bare_metal_versionraw_output = subprocess.check_output([cuda_dir + "/bin/nvcc", "-V"], universal_newlines=True)File "/home/zhaoyq6/anaconda3/lib/python3.9/subprocess.py", line 424, in check_outputreturn run(*popenargs, stdout=PIPE, timeout=timeout, check=True,File "/home/zhaoyq6/anaconda3/lib/python3.9/subprocess.py", line 505, in runwith Popen(*popenargs, **kwargs) as process:File "/home/zhaoyq6/anaconda3/lib/python3.9/subprocess.py", line 951, in __init__self._execute_child(args, executable, preexec_fn, close_fds,File "/home/zhaoyq6/anaconda3/lib/python3.9/subprocess.py", line 1821, in _execute_childraise child_exception_type(errno_num, err_msg, err_filename)FileNotFoundError: [Errno 2] No such file or directory: ':/usr/local/cuda/bin/nvcc'torch.__version__  = 1.13.0+cu117error: subprocess-exited-with-error× python setup.py egg_info did not run successfully.│ exit code: 1╰─> See above for output.

解决方法

(base) omg@omg:~/work/code/deep_learn/apex$ export CUDA_HOME=/usr/local/cuda
(base) omg@omg:~/work/code/deep_learn/apex$ pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

2.安装报错

Installing collected packages: apexDEPRECATION: apex is being installed using the legacy 'setup.py install' method, because the '--no-binary' option was enabled for it and this currently disables local wheel building for projects that don't have a 'pyproject.toml' file. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/11451Running command Running setup.py install for apextorch.__version__  = 1.13.0+cu117Compiling cuda extensions withnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Fri_Dec_17_18:16:03_PST_2021Cuda compilation tools, release 11.6, V11.6.55Build cuda_11.6.r11.6/compiler.30794723_0from /usr/local/cuda/binTraceback (most recent call last):File "<string>", line 2, in <module>File "<pip-setuptools-caller>", line 34, in <module>File "/home/zhaoyq6/work/code/deep_learn/apex/setup.py", line 178, in <module>check_cuda_torch_binary_vs_bare_metal(CUDA_HOME)File "/home/zhaoyq6/work/code/deep_learn/apex/setup.py", line 33, in check_cuda_torch_binary_vs_bare_metalraise RuntimeError(RuntimeError: Cuda extensions are being compiled with a version of Cuda that does not match the version used to compile Pytorch binaries.  Pytorch binaries were compiled with Cuda 11.7.In some cases, a minor-version mismatch will not cause later errors:  https://github.com/NVIDIA/apex/pull/323#discussion_r287021798.  You can try commenting out this check (at your own risk).error: subprocess-exited-with-error× Running setup.py install for apex did not run successfully.│ exit code: 1╰─> See above for output.

解决 方法1

安装匹配CUDA的版本

(base) omg@omg:~/work/code/deep_learn/apex$ conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch

解决方法2

通过测试发现,如果cuda跟pytorch的版本不对应,apex直接不带–global-option安装好像也能用。

四、安装pycocotools

略…

五、验证环境

下载预训练模型,本文选用的是YOLOX-s,
下载地址:https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
下载完成后,将预训练模型放到工程的根目录:

(base) omg@omg:~/work/code/deep_learn/YOLOX$ python tools/demo.py image -n yolox-s -c yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu
2022-12-05 14:04:38.871 | INFO     | __main__:main:259 - Args: Namespace(demo='image', experiment_name='yolox_s', name='yolox-s', path='assets/dog.jpg', camid=0, save_result=True, exp_file=None, ckpt='yolox_s.pth', device='gpu', conf=0.25, nms=0.45, tsize=640, fp16=False, legacy=False, fuse=False, trt=False)
2022-12-05 14:04:46.267 | INFO     | __main__:main:269 - Model Summary: Params: 8.97M, Gflops: 26.93
2022-12-05 14:05:00.505 | INFO     | __main__:main:282 - loading checkpoint
2022-12-05 14:05:00.681 | INFO     | __main__:main:286 - loaded checkpoint done.
2022-12-05 14:05:33.607 | INFO     | __main__:inference:165 - Infer time: 32.2062s
2022-12-05 14:05:33.718 | INFO     | __main__:image_demo:202 - Saving detection result in ./YOLOX_outputs/yolox_s/vis_res/2022_12_05_14_05_00/dog.jpg

检测结果:看到下图说明环境没有问题了

六、数据集

数据集我们采用VOC数据集,原始数据集是Labelme标注的数据集。
下载地址:

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget http://pjreddie.com/media/files/VOC2012test.tar关于VOC数据集的介绍,参考:
https://blog.csdn.net/qiqisunshine/article/details/126399423
https://blog.csdn.net/xiaotudui/article/details/122163725

数据集目录结构:

七、修改配置

修改数据配置文件

1、 修改类别个数

文件路径:exps/example/yolox_voc/yolox_voc_s.py,本次使用的类别有20类,所以将num_classes修改为20。

class Exp(MyExp):def __init__(self):super(Exp, self).__init__()self.num_classes = 20self.depth = 0.33self.width = 0.50self.warmup_epochs = 1# ---------- transform config ------------ #self.mosaic_prob = 1.0self.mixup_prob = 1.0self.hsv_prob = 1.0self.flip_prob = 0.5self.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]

2、修改类别

打开yolox/data/datasets/voc_classes.py文件,修改为自己的类别名:

# VOC_CLASSES = ( '__background__', # always index 0
VOC_CLASSES = ("aeroplane","bicycle","bird","boat","bottle","bus","car","cat","chair","cow","diningtable","dog","horse","motorbike","person","pottedplant","sheep","sofa","train","tvmonitor",
)

3、修改数据集目录

文件路径:exps/example/yolox_voc/yolox_voc_s.py,data_dir修改为“./data/VOCdevkit”,image_sets删除2012的,最终结果如下:

    def get_eval_loader(self, batch_size, is_distributed, testdev=False, legacy=False):from yolox.data import VOCDetection, ValTransformvaldataset = VOCDetection(data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),image_sets=[('2007', 'test')],img_size=self.test_size,preproc=ValTransform(legacy=legacy),)

参考链接

https://view.inews.qq.com/a/20210919A03ZZK00
https://blog.csdn.net/qq_48480265/article/details/126028230

使用YOLOX进行物体检测相关推荐

  1. 超详细!手把手教你使用YOLOX进行物体检测(附数据集)

    点击下方卡片,关注3D视觉工坊公众号 3D视觉干货第一时间送达 作者:王浩,3D视觉开发者社区签约作者,毕业于北京航空航天大学,人工智能领域优质创作者,CSDN博客认证专家. 编辑:3D视觉开发者社区 ...

  2. 【超详细】手把手教你使用YOLOX进行物体检测(附数据集)

    作者:王浩 毕业于北京航空航天大学,人工智能领域优质创作者 编辑:3D视觉开发者社区 ✨如果觉得文章内容不错,别忘了三连支持下哦

  3. anchor base和anchor free, 小物体检测, YOLO V1-3 9000 V4 V5 的区别,yolov5-8, yolox创新点

    文章目录 Anchor base和Anchor Free的区别: 如何增强模型对小物体的检测效果 Yolo基本思想 不同版本的Yolo网络差异 YOLO V1 YOLO V2 YOLO9000 YOL ...

  4. 分享 | 物体检测和数据集

    因为最近学习任务比较紧(但也不妨碍元旦摆烂三天),所以中间有几个实战Kaggle比赛就跳过了,等以后有时间再回头来看看.物体检测和数据集这一节花了有一天的时间,一直有一个bug困扰,后来改了代码把bo ...

  5. 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。

    1.背景差分法: 它的基本思想是将输入图像与背景模型进行比较,通过判定灰度等特征的变化,或用直方图等统计信息的变化来分割运动目标. 首先建立好背景模型,存储背景图像.当当前帧与背景图像相减大于一定的阈 ...

  6. 达摩院实现自动驾驶核心技术突破,达摩院首次实现3D物体检测精度与速度的兼得

    阿里巴巴达摩院在自动驾驶3D物体检测领域取得了新突破!达摩院近期一篇论文入选计算机视觉顶会CVPR 2020,该论文提出了一个通用.高性能的自动驾驶检测器,首次实现3D物体检测精度与速度的兼得,有效提 ...

  7. 63万张!旷视发布最大物体检测数据集Objects365 | 技术头条

    编辑 | 琥珀 来源 | AI科技大本营(id:rgznai100) 昨日,在旷视科技联合北京智源人工智能研究院举办的发布会上,旷视研究院发布了物体检测数据集 Objects365,包含 63 万张图 ...

  8. 中科院自动化所博士带你入门CV物体检测算法

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...

  9. 阿里达摩院新研究:实习生一作突破自动驾驶技术难题,首次实现3D物体检测精度与速度兼得...

    本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 乾明 发自 凹非寺 最新消息,阿里达摩院又有新的研究进展,这次在自动驾驶3D物体检测领域. 达摩院的研究人员提出一个通用.高性能的 ...

最新文章

  1. lvs的十种调度算法概念
  2. [WCF]配置文件中Certificate 的encodeValue怎么设置?
  3. *.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z
  4. nfa状态转换图正规式_0x02 从NFA到DFA
  5. html大学生活主题班会,我的大学生活主题班会策划书
  6. 如何实现A星寻路算法 Cocos2d-x 3.0 beta2
  7. oracle忘记sys密码处理
  8. 将视频或动态壁纸设置成桌面
  9. 哪个搜索引擎干净?无追踪无监控且保护用户隐私安全的小众搜索引擎推荐
  10. Rasa3 domain官方文档翻译
  11. 华为服务器jbod修改启动项,服务器设置jbod
  12. 环境模块迁移-freeze
  13. 微信小程序杂技之---九宫格图片排版与操作
  14. 雷军与小米:上扬的微笑与下行的隐忧
  15. 哔哩哔哩 2019校园招聘 开发工程师-2018.09.21
  16. 【测试面经】软件测试面试题大全,软件测试必问必背面试题,敢说会70%就可以轻松拿offer......
  17. 基于 vue.js 的仿QQ聊天室
  18. VM安装VMTool工具
  19. 2017年互联网百强榜单出炉 迅雷连续5年上榜
  20. 计算机电工电子学试题及答案,电工电子学实验410.doc

热门文章

  1. 打印快递单不显示收货人省市区,提供两种解决方案
  2. 金融IT的“困”与“道”
  3. 各大主流招聘平台的优缺点和适合人群【总结】
  4. 上海高中计算机知识点总结,上海高中高考数学知识点总结(大全)
  5. vmware开启虚拟机时虚拟机黑屏的解决办法
  6. 刷题刷题(个人记录)
  7. Linux一键实现ramos打造自己的livecd
  8. 洛谷千题详解 | P1010 [NOIP1998 普及组] 幂次方【C++、Java、Python、Pascal语言】
  9. 希望各位博友解答一下
  10. 《歌剧魅影》(Phantom of the Opera)