美文网首页
YoLo5 AI机器学习识别从入门到放弃

YoLo5 AI机器学习识别从入门到放弃

作者: 清明捉鬼 | 来源:发表于2022-11-17 18:41 被阅读0次

    前言

    做AI做的事儿,让世界充满AI
    原定目标主要是对安卓手机进行UI实时监测,思路是利用投屏原理拿到图像帧,在使用过程中进行无感知UI检测,我认为目前最大支持仅为60fps,作用能干嘛呢?作用可多了,譬如训练单图标配合无障碍点击进行智能化抢红包,刷金币,还有可能打王者,本篇为基础搭建篇。
    之所以放日志是因为工作环境是内网,很多网站无法正常访问,我是在家做一遍再在公司实现,主要用来对比执行差异。

    版本

    Win10
    Python 3.9.12
    conda 22.9.0
    Yolo5

    全程高能注意

    所有名称不得出现中文名,否则报错

    目录
    • 安装miniconda
    • 配置conda国内下载镜像
    • 安装Pytorch
    • 创建conda虚拟环境
    • 从git上下载Yolo5
    • 图片数据标记软件
    • 数据标记
    • 数据筹备
    • 训练筹备
    • 训练可视化
    • 检测目标图片

    一、安装miniconda

    它是Anaconda的简化版,由于Anaconda每次安装卸载太慢故用简化版,安装卸载注意:
    1.注册表:\HKEY_CURRENT_USER\Software\Microsoft\Command Processor
    下可能会多一个Autorun导致cmd打开就立即运行完,安装完成后删掉即可
    2.安装miniconda可能会由于权限等原因导致安装的内容大量残缺,典型的属于缺失python.exe,Library文件夹,如若发生建议先在C盘先安装一遍再安装到别的盘,之后为了节约C盘空间可以将其卸载
    3.配置环境变量,若在安装过程中没有勾选那个自动给配置环境变量的勾可以手动配置(事实上我勾了它也没自动配置成功),主要配置如下:

    D:\Miniconda3
    D:\Miniconda3\Scripts
    D:\Miniconda3\Library\bin
    

    二、配置conda国内下载镜像

    由于原生下载链接有些包下载慢或下载不下来,我们在这里使用清华镜像(推荐使用豆瓣镜像,清华镜像有点小垃圾),按照官网教程做法生成.condarc文件巴拉巴拉后,发现连conda命令都无法正常使用,一直报某个python脚本的编码错误,中间碰到一堆博客说啥https改http,去除-defaults都无法正常下载,最终找到如下镜像配置替换,conda命令方既能正常使用,下载还飞起,至此镜像配置完成:

    channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
      - defaults
    show_channel_urls: true
    channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
    default_channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
    custom_channels:
      conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
      simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
    

    三、安装Pytorch

    因工作电脑是集成显卡,未防显卡烧坏,我在Pytorch官网下载CPU版本,命令如下:
    conda install pytorch torchvision torchaudio cpuonly -c pytorch
    注:如若你的电脑需要cpu与gpu版本,建议在conda创建的虚拟环境中使用pip方式下载,这样下载的东西应该与虚拟环境绑定,s可以执行多个版本。
    执行日志:(简书Markdown无折叠语法,真垃圾)

    C:\Users\NewBeeChina>conda install pytorch torchvision torchaudio cpuonly -c pytorch
    Collecting package metadata (current_repodata.json): done
    Solving environment: |
    Warning: >10 possible package resolutions (only showing differing packages):
      - https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/noarch::colorama-0.4.4-pyhd3eb1b0_0, defaults/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/win-64::console_shortcut-0.1.1-4, defaults/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/noarch::colorama-0.4.4-pyhd3eb1b0_0, defaults/win-64::console_shortcut-0.1.1-4, defaults/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/noarch::colorama-0.4.4-pyhd3eb1b0_0, defaults/win-64::powershell_shortcut-0.0.1-3, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::win_inet_pton-1.1.0-py39haa95532_0
      - defaults/win-64::powershell_shortcut-0.0.1-3, defaults/win-64::win_inet_pton-1.1.0-py39haa95532_0, https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4
      - defaults/win-64::win_inet_pton-1.1.0-py39haa95532_0, https://repo.anaconda.com/pkgs/main/noarch/noarch::colorama-0.4.4-pyhd3eb1b0_0, https://repo.anaconda.com/pkgs/main/win-64/win-64::console_shortcut-0.1.1-4, https://repo.anaconda.com/pkgs/main/win-64/win-64::powershell_shortcut-0.0.1-3
      ... and othedone
    
    ## Package Plan ##
    
      environment location: D:\Miniconda3
    
      added / updated specs:
        - cpuonly
        - pytorch
        - torchaudio
        - torchvision
    
    
    The following packages will be downloaded:
    
        package                    |            build
        ---------------------------|-----------------
        blas-1.0                   |              mkl           6 KB  defaults
        ca-certificates-2022.10.11 |       haa95532_0         125 KB  defaults
        certifi-2022.9.24          |   py39haa95532_0         154 KB  defaults
        conda-22.9.0               |   py39haa95532_0         888 KB  defaults
        cpuonly-2.0                |                0           2 KB  pytorch
        freetype-2.12.1            |       ha860e81_0         490 KB  defaults
        intel-openmp-2021.4.0      |    haa95532_3556         2.2 MB  defaults
        jpeg-9e                    |       h2bbff1b_0         292 KB  defaults
        lerc-3.0                   |       hd77b12b_0         120 KB  defaults
        libdeflate-1.8             |       h2bbff1b_5          46 KB  defaults
        libpng-1.6.37              |       h2a8f88b_0         333 KB  defaults
        libtiff-4.4.0              |       h8a3f274_1         832 KB  defaults
        libuv-1.40.0               |       he774522_0         255 KB  defaults
        libwebp-1.2.4              |       h2bbff1b_0          67 KB  defaults
        libwebp-base-1.2.4         |       h2bbff1b_0         279 KB  defaults
        lz4-c-1.9.3                |       h2bbff1b_1         132 KB  defaults
        mkl-2021.4.0               |     haa95532_640       114.9 MB  defaults
        mkl-service-2.4.0          |   py39h2bbff1b_0          51 KB  defaults
        mkl_fft-1.3.1              |   py39h277e83a_0         139 KB  defaults
        mkl_random-1.2.2           |   py39hf11a4ad_0         225 KB  defaults
        numpy-1.23.3               |   py39h3b20f71_0          11 KB  defaults
        numpy-base-1.23.3          |   py39h4da318b_0         5.0 MB  defaults
        openssl-1.1.1s             |       h2bbff1b_0         5.5 MB  defaults
        pillow-9.2.0               |   py39hdc2b20a_1         908 KB  defaults
        pytorch-1.13.0             |      py3.9_cpu_0       138.2 MB  pytorch
        pytorch-mutex-1.0          |              cpu           3 KB  pytorch
        tk-8.6.12                  |       h2bbff1b_0         3.1 MB  defaults
        toolz-0.12.0               |   py39haa95532_0         106 KB  defaults
        torchaudio-0.13.0          |         py39_cpu         4.5 MB  pytorch
        torchvision-0.14.0         |         py39_cpu         6.3 MB  pytorch
        typing_extensions-4.3.0    |   py39haa95532_0          42 KB  defaults
        xz-5.2.6                   |       h8cc25b3_0         240 KB  defaults
        zlib-1.2.13                |       h8cc25b3_0         113 KB  defaults
        zstd-1.5.2                 |       h19a0ad4_0         509 KB  defaults
        ------------------------------------------------------------
                                               Total:       285.8 MB
    
    The following NEW packages will be INSTALLED:
    
      blas               pkgs/main/win-64::blas-1.0-mkl
      cpuonly            pytorch/noarch::cpuonly-2.0-0
      freetype           pkgs/main/win-64::freetype-2.12.1-ha860e81_0
      intel-openmp       pkgs/main/win-64::intel-openmp-2021.4.0-haa95532_3556
      jpeg               pkgs/main/win-64::jpeg-9e-h2bbff1b_0
      lerc               pkgs/main/win-64::lerc-3.0-hd77b12b_0
      libdeflate         pkgs/main/win-64::libdeflate-1.8-h2bbff1b_5
      libpng             pkgs/main/win-64::libpng-1.6.37-h2a8f88b_0
      libtiff            pkgs/main/win-64::libtiff-4.4.0-h8a3f274_1
      libuv              pkgs/main/win-64::libuv-1.40.0-he774522_0
      libwebp            pkgs/main/win-64::libwebp-1.2.4-h2bbff1b_0
      libwebp-base       pkgs/main/win-64::libwebp-base-1.2.4-h2bbff1b_0
      lz4-c              pkgs/main/win-64::lz4-c-1.9.3-h2bbff1b_1
      mkl                pkgs/main/win-64::mkl-2021.4.0-haa95532_640
      mkl-service        pkgs/main/win-64::mkl-service-2.4.0-py39h2bbff1b_0
      mkl_fft            pkgs/main/win-64::mkl_fft-1.3.1-py39h277e83a_0
      mkl_random         pkgs/main/win-64::mkl_random-1.2.2-py39hf11a4ad_0
      numpy              pkgs/main/win-64::numpy-1.23.3-py39h3b20f71_0
      numpy-base         pkgs/main/win-64::numpy-base-1.23.3-py39h4da318b_0
      pillow             pkgs/main/win-64::pillow-9.2.0-py39hdc2b20a_1
      pytorch            pytorch/win-64::pytorch-1.13.0-py3.9_cpu_0
      pytorch-mutex      pytorch/noarch::pytorch-mutex-1.0-cpu
      tk                 pkgs/main/win-64::tk-8.6.12-h2bbff1b_0
      toolz              pkgs/main/win-64::toolz-0.12.0-py39haa95532_0
      torchaudio         pytorch/win-64::torchaudio-0.13.0-py39_cpu
      torchvision        pytorch/win-64::torchvision-0.14.0-py39_cpu
      typing_extensions  pkgs/main/win-64::typing_extensions-4.3.0-py39haa95532_0
      xz                 pkgs/main/win-64::xz-5.2.6-h8cc25b3_0
      zlib               pkgs/main/win-64::zlib-1.2.13-h8cc25b3_0
      zstd               pkgs/main/win-64::zstd-1.5.2-h19a0ad4_0
    
    The following packages will be UPDATED:
    
      ca-certificates                      2022.3.29-haa95532_1 --> 2022.10.11-haa95532_0
      certifi                          2021.10.8-py39haa95532_2 --> 2022.9.24-py39haa95532_0
      conda                               4.12.0-py39haa95532_0 --> 22.9.0-py39haa95532_0
      openssl                                 1.1.1n-h2bbff1b_0 --> 1.1.1s-h2bbff1b_0
    
    
    Proceed ([y]/n)? y
    
    
    Downloading and Extracting Packages
    xz-5.2.6             | 240 KB    | ############################################################################ | 100%
    zlib-1.2.13          | 113 KB    | ############################################################################ | 100%
    zstd-1.5.2           | 509 KB    | ############################################################################ | 100%
    jpeg-9e              | 292 KB    | ############################################################################ | 100%
    toolz-0.12.0         | 106 KB    | ############################################################################ | 100%
    torchaudio-0.13.0    | 4.5 MB    | ############################################################################ | 100%
    certifi-2022.9.24    | 154 KB    | ############################################################################ | 100%
    cpuonly-2.0          | 2 KB      | ############################################################################ | 100%
    torchvision-0.14.0   | 6.3 MB    | ############################################################################ | 100%
    conda-22.9.0         | 888 KB    | ############################################################################ | 100%
    pytorch-mutex-1.0    | 3 KB      | ############################################################################ | 100%
    libpng-1.6.37        | 333 KB    | ############################################################################ | 100%
    lz4-c-1.9.3          | 132 KB    | ############################################################################ | 100%
    libdeflate-1.8       | 46 KB     | ############################################################################ | 100%
    libuv-1.40.0         | 255 KB    | ############################################################################ | 100%
    lerc-3.0             | 120 KB    | ############################################################################ | 100%
    libtiff-4.4.0        | 832 KB    | ############################################################################ | 100%
    typing_extensions-4. | 42 KB     | ############################################################################ | 100%
    numpy-1.23.3         | 11 KB     | ############################################################################ | 100%
    ca-certificates-2022 | 125 KB    | ############################################################################ | 100%
    libwebp-base-1.2.4   | 279 KB    | ############################################################################ | 100%
    freetype-2.12.1      | 490 KB    | ############################################################################ | 100%
    mkl-2021.4.0         | 114.9 MB  | ############################################################################ | 100%
    mkl_fft-1.3.1        | 139 KB    | ############################################################################ | 100%
    numpy-base-1.23.3    | 5.0 MB    | ############################################################################ | 100%
    intel-openmp-2021.4. | 2.2 MB    | ############################################################################ | 100%
    mkl_random-1.2.2     | 225 KB    | ############################################################################ | 100%
    tk-8.6.12            | 3.1 MB    | ############################################################################ | 100%
    libwebp-1.2.4        | 67 KB     | ############################################################################ | 100%
    blas-1.0             | 6 KB      | ############################################################################ | 100%
    openssl-1.1.1s       | 5.5 MB    | ############################################################################ | 100%
    pytorch-1.13.0       | 138.2 MB  | ############################################################################ | 100%
    mkl-service-2.4.0    | 51 KB     | ############################################################################ | 100%
    pillow-9.2.0         | 908 KB    | ############################################################################ | 100%
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    
    C:\Users\NewBeeChina>
    

    三、创建conda虚拟环境

    conda的主要作用就是其可以管理不同版本的python,最典型的场景就是我同时有py2与py3项目,通过conda创建不同的环境就可以同时执行两个版本的py工程.
    创建格式:conda create --name 你起的环境名 python=你想创建的py版本

    conda create --name LgpLoYo5 python=3.9.12
    

    需要联网下一点包,然后敲命令conda activate 你起的环境名手动激活刚创建的虚拟环境,若忘了名字可以在磁盘D:\Miniconda3\envs目录下看到你刚创建的虚拟环境,激活后就如下所示
    注意:
    1.激活与关闭命令也在如下所示的注释
    2.若第一次搭建环境在激活虚拟环境前需关闭重开cmd窗口否则可能报错

    done
    #
    # To activate this environment, use
    #
    #     $ conda activate LgpLoYo5
    #
    # To deactivate an active environment, use
    #
    #     $ conda deactivate
    
    Retrieving notices: ...working... done
    

    可能的报错:

    CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
    If using 'conda activate' from a batch script, change your
    invocation to 'CALL conda.bat activate'.
    
    To initialize your shell, run
    
        $ conda init <SHELL_NAME>
    
    Currently supported shells are:
      - bash
      - cmd.exe
      - fish
      - tcsh
      - xonsh
      - zsh
      - powershell
    
    See 'conda init --help' for more information and options.
    
    IMPORTANT: You may need to close and restart your shell after running 'conda init'.
    

    几个常用参考的命令:
    查看版本号:conda -V
    初始化:conda init
    创建虚拟环境:conda create --name LgpYoLo5 python=3.9.12 -y
    激活虚拟环境:conda activate LgpYoLo5
    设置自动激活虚拟环境:conda config --set auto_activate_base true
    查看所有虚拟环境:conda env list
    退出虚拟环境:conda deactivate

    四、从git上下载Yolo5

    在刚才激活的命令行环境中cd到从git下载的Yolo5工程的目录,我一开始从别人博客复制命令pip install -r requirement.txt报了错,后发现名称错了,真名为requirements.txt
    若未进行文件夹的命令行切换则报错,所以在pip前一定要切换命令行的目录到工程根目录下

    #未切目录执行命令报错
    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    

    第二次从别人博客上复制的,由于博客将requirements.txt写成requirement.txt报了如下错

    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>cd E:\AIWorkSpace\yolov5-master
    
    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>pip install -r requirement.txt
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirement.txt'
    

    第三次我是从文件夹里找到了这个文件,手动敲的回车键,开始下载requirements.txt里列出的包,但是报了错,

    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>pip install -r requirements.txt
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    Collecting ipython
      Downloading ipython-8.6.0-py3-none-any.whl (761 kB)
         ---------------------------------------- 761.1/761.1 kB 18.4 kB/s eta 0:00:00
    Collecting matplotlib>=3.2.2
      Downloading matplotlib-3.6.2-cp39-cp39-win_amd64.whl (7.2 MB)
         ---------------------------------------- 0.1/7.2 MB 14.5 kB/s eta 0:08:14
    ERROR: Exception:
    Traceback (most recent call last):
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\urllib3\response.py", line 435, in _error_catcher
        yield
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\urllib3\response.py", line 516, in read
        data = self._fp.read(amt) if not fp_closed else b""
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 90, in read
        data = self.__fp.read(amt)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\http\client.py", line 463, in read
        n = self.readinto(b)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\http\client.py", line 507, in readinto
        n = self.fp.readinto(b)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\socket.py", line 704, in readinto
        return self._sock.recv_into(b)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\ssl.py", line 1241, in recv_into
        return self.read(nbytes, buffer)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\ssl.py", line 1099, in read
        return self._sslobj.read(len, buffer)
    socket.timeout: The read operation timed out
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\cli\base_command.py", line 167, in exc_logging_wrapper
        status = run_func(*args)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\cli\req_command.py", line 247, in wrapper
        return func(self, options, args)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\commands\install.py", line 369, in run
        requirement_set = resolver.resolve(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 92, in resolve
        result = self._result = resolver.resolve(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 481, in resolve
        state = resolution.resolve(requirements, max_rounds=max_rounds)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 348, in resolve
        self._add_to_criteria(self.state.criteria, r, parent=None)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 172, in _add_to_criteria
        if not criterion.candidates:
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\resolvelib\structs.py", line 151, in __bool__
        return bool(self._sequence)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 155, in __bool__
        return any(self)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 143, in <genexpr>
        return (c for c in iterator if id(c) not in self._incompatible_ids)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 47, in _iter_built
        candidate = func()
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 206, in _make_candidate_from_link
        self._link_candidate_cache[link] = LinkCandidate(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 297, in __init__
        super().__init__(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 162, in __init__
        self.dist = self._prepare()
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 231, in _prepare
        dist = self._prepare_distribution()
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 308, in _prepare_distribution
        return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\operations\prepare.py", line 438, in prepare_linked_requirement
        return self._prepare_linked_requirement(req, parallel_builds)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\operations\prepare.py", line 483, in _prepare_linked_requirement
        local_file = unpack_url(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\operations\prepare.py", line 165, in unpack_url
        file = get_http_url(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\operations\prepare.py", line 106, in get_http_url
        from_path, content_type = download(link, temp_dir.path)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\network\download.py", line 147, in __call__
        for chunk in chunks:
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\cli\progress_bars.py", line 53, in _rich_progress_bar
        for chunk in iterable:
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunks
        for chunk in response.raw.stream(
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\urllib3\response.py", line 573, in stream
        data = self.read(amt=amt, decode_content=decode_content)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\urllib3\response.py", line 538, in read
        raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\contextlib.py", line 137, in __exit__
        self.gen.throw(typ, value, traceback)
      File "D:\Miniconda3\envs\LgpLoYo5\lib\site-packages\pip\_vendor\urllib3\response.py", line 440, in _error_catcher
        raise ReadTimeoutError(self._pool, None, "Read timed out.")
    pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
    

    打开requirements.txt文件查看,很明显是下载第二个包matplotlib时发生了错误

    # YOLOv5 🚀 requirements
    # Usage: pip install -r requirements.txt
    
    # Base ------------------------------------------------------------------------
    ipython  # interactive notebook
    matplotlib>=3.2.2
    numpy>=1.18.5
    opencv-python>=4.1.1
    Pillow>=7.1.2
    psutil  # system resources
    PyYAML>=5.3.1
    requests>=2.23.0
    scipy>=1.4.1
    thop>=0.1.1  # FLOPs computation
    torch>=1.7.0  # see https://pytorch.org/get-started/locally (recommended)
    torchvision>=0.8.1
    tqdm>=4.64.0
    # protobuf<=3.20.1  # https://github.com/ultralytics/yolov5/issues/8012
    
    # Logging ---------------------------------------------------------------------
    tensorboard>=2.4.1
    # clearml>=1.2.0
    # comet
    
    # Plotting --------------------------------------------------------------------
    pandas>=1.1.4
    seaborn>=0.11.0
    
    # Export ----------------------------------------------------------------------
    # coremltools>=6.0  # CoreML export
    # onnx>=1.9.0  # ONNX export
    # onnx-simplifier>=0.4.1  # ONNX simplifier
    # nvidia-pyindex  # TensorRT export
    # nvidia-tensorrt  # TensorRT export
    # scikit-learn<=1.1.2  # CoreML quantization
    # tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
    # tensorflowjs>=3.9.0  # TF.js export
    # openvino-dev  # OpenVINO export
    
    # Deploy ----------------------------------------------------------------------
    # tritonclient[all]~=2.24.0
    
    # Extras ----------------------------------------------------------------------
    # mss  # screenshots
    # albumentations>=1.0.3
    # pycocotools>=2.0  # COCO mAP
    # roboflow
    # ultralytics  # HUB https://hub.ultralytics.com
    
    

    不服输,又把命令敲了一次,但是又发生了报错
    本次:

    Collecting matplotlib>=3.2.2
      Downloading matplotlib-3.6.2-cp39-cp39-win_amd64.whl (7.2 MB)
         ----------------------------- ---------- 5.4/7.2 MB 4.2 kB/s eta 0:07:20
    

    上一次:

    Collecting matplotlib>=3.2.2
      Downloading matplotlib-3.6.2-cp39-cp39-win_amd64.whl (7.2 MB)
         ---------------------------------------- 0.1/7.2 MB 14.5 kB/s eta 0:08:14
    

    巧了么不是,这TNND网络不稳定还是咋地,后来查博客发现了如下命令,它是有效的(不要试图将此链接添加至.condarc文件中使用,它就是个临时工官网详情)

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    

    安装日志如下:

    Microsoft Windows [版本 10.0.19044.2130]
    (c) Microsoft Corporation。保留所有权利。
    
    C:\Users\NewBeeChina>e:
    
    E:\>cd E:\AIWorkSpace\yolov5-master
    
    E:\AIWorkSpace\yolov5-master>conda activate LgpLoYo5
    
    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    Collecting ipython
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c7/53/072d677a16fd61f5806d80218c65202cc0ee77b831088af8f79ef59efcf2/ipython-8.6.0-py3-none-any.whl (761 kB)
         ---------------------------------------- 761.1/761.1 kB 1.2 MB/s eta 0:00:00
    Collecting matplotlib>=3.2.2
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/78/af/4c83c99656c500ca0db7fe6f349d6309372ea8bad9c78d5c161930977bfd/matplotlib-3.6.2-cp39-cp39-win_amd64.whl (7.2 MB)
         ---------------------------------------- 7.2/7.2 MB 2.1 MB/s eta 0:00:00
    Collecting numpy>=1.18.5
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/af/74/c02ece94ef88bed0a7f266959fd9bb2c97140345bc792f281b7db390eea9/numpy-1.23.4-cp39-cp39-win_amd64.whl (14.7 MB)
         ---------------------------------------- 14.7/14.7 MB 2.4 MB/s eta 0:00:00
    Collecting opencv-python>=4.1.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/cf/09/b24c266cd61ddeed101b90c92a26f54d060b06f4a1b102eb891576d6e9e2/opencv_python-4.6.0.66-cp36-abi3-win_amd64.whl (35.6 MB)
         ---------------------------------------- 35.6/35.6 MB 3.0 MB/s eta 0:00:00
    Collecting Pillow>=7.1.2
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c0/8f/dfa473f3a6241bff91ae8bb905bd0afceb827f37de2917a94b5c4b1112bf/Pillow-9.3.0-cp39-cp39-win_amd64.whl (2.5 MB)
         ---------------------------------------- 2.5/2.5 MB 2.7 MB/s eta 0:00:00
    Collecting psutil
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/25/6e/ba97809175c90cbdcd33b470e466ebf0854d15d1506e605cc0ddd284d5b6/psutil-5.9.4-cp36-abi3-win_amd64.whl (252 kB)
         ---------------------------------------- 252.5/252.5 kB 3.9 MB/s eta 0:00:00
    Collecting PyYAML>=5.3.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/08/f4/ffa743f860f34a5e8c60abaaa686f82c9ac7a2b50e5a1c3b1eb564d59159/PyYAML-6.0-cp39-cp39-win_amd64.whl (151 kB)
         ---------------------------------------- 151.6/151.6 kB 4.4 MB/s eta 0:00:00
    Collecting requests>=2.23.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ca/91/6d9b8ccacd0412c08820f72cebaa4f0c0441b5cda699c90f618b6f8a1b42/requests-2.28.1-py3-none-any.whl (62 kB)
         ---------------------------------------- 62.8/62.8 kB ? eta 0:00:00
    Collecting scipy>=1.4.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d0/96/4f6eac3fea18f836a0e403539556b1684e6f3361fa39aa5d5797dedecd75/scipy-1.9.3-cp39-cp39-win_amd64.whl (40.2 MB)
         ---------------------------------------- 40.2/40.2 MB 2.9 MB/s eta 0:00:00
    Collecting thop>=0.1.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bb/0f/72beeab4ff5221dc47127c80f8834b4bcd0cb36f6ba91c0b1d04a1233403/thop-0.1.1.post2209072238-py3-none-any.whl (15 kB)
    Collecting torch>=1.7.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4c/d9/713853e06954bb657607d1e59d29e5896e1933e5d7fb50847a5730ad7325/torch-1.13.0-cp39-cp39-win_amd64.whl (167.2 MB)
         ---------------------------------------- 167.2/167.2 MB 2.3 MB/s eta 0:00:00
    Collecting torchvision>=0.8.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a7/f3/aaac29c2cdb84b0be1302aa17a68a7c39b05d9bca810d144e42c7131fb0d/torchvision-0.14.0-cp39-cp39-win_amd64.whl (1.1 MB)
         ---------------------------------------- 1.1/1.1 MB 2.4 MB/s eta 0:00:00
    Collecting tqdm>=4.64.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/47/bb/849011636c4da2e44f1253cd927cfb20ada4374d8b3a4e425416e84900cc/tqdm-4.64.1-py2.py3-none-any.whl (78 kB)
         ---------------------------------------- 78.5/78.5 kB 1.5 MB/s eta 0:00:00
    Collecting tensorboard>=2.4.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/05/70/ee7968f4a92ff9f95354d0ccaa9c0ba17b2644a33472ea845d92dd4e4821/tensorboard-2.11.0-py3-none-any.whl (6.0 MB)
         ---------------------------------------- 6.0/6.0 MB 1.6 MB/s eta 0:00:00
    Collecting pandas>=1.1.4
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/60/53/619c0bcdc45b0a2ac94fc840c67073f8ca3f69344383c7dca0ed20e1ea73/pandas-1.5.1-cp39-cp39-win_amd64.whl (10.9 MB)
         ---------------------------------------- 10.9/10.9 MB 2.7 MB/s eta 0:00:00
    Collecting seaborn>=0.11.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/77/18/7354cb68dd7906d5a3118e0ed3e30c37502f9e6253139ecfcf4fa33af210/seaborn-0.12.1-py3-none-any.whl (288 kB)
         ---------------------------------------- 288.2/288.2 kB 658.7 kB/s eta 0:00:00
    Collecting traitlets>=5
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ed/f9/caefd8c90955184e7426ef930e38c185e047169b520b35bdd57d341d03f4/traitlets-5.5.0-py3-none-any.whl (107 kB)
         ---------------------------------------- 107.4/107.4 kB 2.1 MB/s eta 0:00:00
    Collecting decorator
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl (9.1 kB)
    Collecting colorama
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl (25 kB)
    Collecting pygments>=2.4.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4f/82/672cd382e5b39ab1cd422a672382f08a1fb3d08d9e0c0f3707f33a52063b/Pygments-2.13.0-py3-none-any.whl (1.1 MB)
         ---------------------------------------- 1.1/1.1 MB 725.7 kB/s eta 0:00:00
    Collecting stack-data
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/0b/d3/87a41424a1d24d2cb9f5ae4ef4a97c7437ad81eb37d21049ce5decd13d70/stack_data-0.6.0-py3-none-any.whl (24 kB)
    Collecting pickleshare
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
    Collecting backcall
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl (11 kB)
    Collecting jedi>=0.16
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b3/0e/836f12ec50075161e365131f13f5758451645af75c2becf61c6351ecec39/jedi-0.18.1-py2.py3-none-any.whl (1.6 MB)
         ---------------------------------------- 1.6/1.6 MB 748.9 kB/s eta 0:00:00
    Collecting matplotlib-inline
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f2/51/c34d7a1d528efaae3d8ddb18ef45a41f284eacf9e514523b191b7d0872cc/matplotlib_inline-0.1.6-py3-none-any.whl (9.4 kB)
    Collecting prompt-toolkit<3.1.0,>3.0.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/03/22/784990e865d847384c28a05ff33ed09791251b320c212f957c62a11bd2ab/prompt_toolkit-3.0.32-py3-none-any.whl (382 kB)
         ---------------------------------------- 382.8/382.8 kB 335.9 kB/s eta 0:00:00
    Collecting pyparsing>=2.2.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl (98 kB)
         ---------------------------------------- 98.3/98.3 kB 704.8 kB/s eta 0:00:00
    Collecting kiwisolver>=1.0.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/49/b9/edd9b69e1f2a8339347bcfcfbb14ce19db4a81158d01d8fd26fc3a088109/kiwisolver-1.4.4-cp39-cp39-win_amd64.whl (55 kB)
         ---------------------------------------- 55.4/55.4 kB ? eta 0:00:00
    Collecting python-dateutil>=2.7
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
         ---------------------------------------- 247.7/247.7 kB 562.7 kB/s eta 0:00:00
    Collecting packaging>=20.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl (40 kB)
         ---------------------------------------- 40.8/40.8 kB 1.9 MB/s eta 0:00:00
    Collecting fonttools>=4.22.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e3/d9/e9bae85e84737e76ebbcbea13607236da0c0699baed0ae4f1151b728a608/fonttools-4.38.0-py3-none-any.whl (965 kB)
         ---------------------------------------- 965.4/965.4 kB 955.1 kB/s eta 0:00:00
    Collecting cycler>=0.10
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl (6.4 kB)
    Collecting contourpy>=1.0.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a6/43/05ca3815a88650734860766e4d25a98ee7b8bf9d5f4fe280438c07ba5f4f/contourpy-1.0.6-cp39-cp39-win_amd64.whl (161 kB)
         ---------------------------------------- 161.3/161.3 kB 807.9 kB/s eta 0:00:00
    Collecting idna<4,>=2.5
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl (61 kB)
         ---------------------------------------- 61.5/61.5 kB 814.3 kB/s eta 0:00:00
    Collecting charset-normalizer<3,>=2
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/db/51/a507c856293ab05cdc1db77ff4bc1268ddd39f29e7dc4919aa497f0adbec/charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
    Collecting urllib3<1.27,>=1.21.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6f/de/5be2e3eed8426f871b170663333a0f627fc2924cc386cd41be065e7ea870/urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
         ---------------------------------------- 140.4/140.4 kB 834.2 kB/s eta 0:00:00
    Requirement already satisfied: certifi>=2017.4.17 in d:\miniconda3\envs\lgployo5\lib\site-packages (from requests>=2.23.0->-r requirements.txt (line 12)) (2022.9.24)
    Collecting typing-extensions
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/0b/8e/f1a0a5a76cfef77e1eb6004cb49e5f8d72634da638420b9ea492ce8305e8/typing_extensions-4.4.0-py3-none-any.whl (26 kB)
    Requirement already satisfied: wheel>=0.26 in d:\miniconda3\envs\lgployo5\lib\site-packages (from tensorboard>=2.4.1->-r requirements.txt (line 21)) (0.37.1)
    Collecting tensorboard-data-server<0.7.0,>=0.6.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/74/69/5747a957f95e2e1d252ca41476ae40ce79d70d38151d2e494feb7722860c/tensorboard_data_server-0.6.1-py3-none-any.whl (2.4 kB)
    Collecting werkzeug>=1.0.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c8/27/be6ddbcf60115305205de79c29004a0c6bc53cec814f733467b1bb89386d/Werkzeug-2.2.2-py3-none-any.whl (232 kB)
         ---------------------------------------- 232.7/232.7 kB 158.1 kB/s eta 0:00:00
    Requirement already satisfied: setuptools>=41.0.0 in d:\miniconda3\envs\lgployo5\lib\site-packages (from tensorboard>=2.4.1->-r requirements.txt (line 21)) (65.5.0)
    Collecting grpcio>=1.24.3
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e1/20/38ea842e338fb62384629d65d17f494c0f348bc3c16e81df607b31eb70ff/grpcio-1.50.0-cp39-cp39-win_amd64.whl (3.7 MB)
         ---------------------------------------- 3.7/3.7 MB 256.7 kB/s eta 0:00:00
    Collecting google-auth<3,>=1.6.3
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9b/9b/f40ea5c60762eabeb17cebdc05c395f44584c5c7fd7ce636a869c4f1e05d/google_auth-2.14.1-py2.py3-none-any.whl (175 kB)
         ---------------------------------------- 175.4/175.4 kB 330.2 kB/s eta 0:00:00
    Collecting google-auth-oauthlib<0.5,>=0.4.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b1/0e/0636cc1448a7abc444fb1b3a63655e294e0d2d49092dc3de05241be6d43c/google_auth_oauthlib-0.4.6-py2.py3-none-any.whl (18 kB)
    Collecting tensorboard-plugin-wit>=1.6.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e0/68/e8ecfac5dd594b676c23a7f07ea34c197d7d69b3313afdf8ac1b0a9905a2/tensorboard_plugin_wit-1.8.1-py3-none-any.whl (781 kB)
         ---------------------------------------- 781.3/781.3 kB 262.5 kB/s eta 0:00:00
    Collecting protobuf<4,>=3.9.2
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/11/a5/e52b731415ad6ef3d841e9e6e337a690249e800cc7c06f0749afab26348c/protobuf-3.20.3-cp39-cp39-win_amd64.whl (904 kB)
         ---------------------------------------- 904.2/904.2 kB 457.7 kB/s eta 0:00:00
    Collecting markdown>=2.6.8
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/86/be/ad281f7a3686b38dd8a307fa33210cdf2130404dfef668a37a4166d737ca/Markdown-3.4.1-py3-none-any.whl (93 kB)
         ---------------------------------------- 93.3/93.3 kB 532.4 kB/s eta 0:00:00
    Collecting absl-py>=0.4
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2c/39/ba081c6f7837366a39c9286fa1bc9dbf217249df80e133f25c62b05d1a53/absl_py-1.3.0-py3-none-any.whl (124 kB)
         ---------------------------------------- 124.6/124.6 kB 522.1 kB/s eta 0:00:00
    Collecting pytz>=2020.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/85/ac/92f998fc52a70afd7f6b788142632afb27cd60c8c782d1452b7466603332/pytz-2022.6-py2.py3-none-any.whl (498 kB)
         ---------------------------------------- 498.1/498.1 kB 578.0 kB/s eta 0:00:00
    Collecting six>=1.9.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)
    Collecting rsa<5,>=3.1.4
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl (34 kB)
    Collecting pyasn1-modules>=0.2.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/95/de/214830a981892a3e286c3794f41ae67a4495df1108c3da8a9f62159b9a9d/pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
         ---------------------------------------- 155.3/155.3 kB 422.8 kB/s eta 0:00:00
    Collecting cachetools<6.0,>=2.0.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/68/aa/5fc646cae6e997c3adf3b0a7e257cda75cff21fcba15354dffd67789b7bb/cachetools-5.2.0-py3-none-any.whl (9.3 kB)
    Collecting requests-oauthlib>=0.7.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6f/bb/5deac77a9af870143c684ab46a7934038a53eb4aa975bc0687ed6ca2c610/requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
    Collecting parso<0.9.0,>=0.8.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/05/63/8011bd08a4111858f79d2b09aad86638490d62fbf881c44e434a6dfca87b/parso-0.8.3-py2.py3-none-any.whl (100 kB)
         ---------------------------------------- 100.8/100.8 kB 131.6 kB/s eta 0:00:00
    Collecting importlib-metadata>=4.4
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b5/64/ef29a63cf08f047bb7fb22ab0f1f774b87eed0bb46d067a5a524798a4af8/importlib_metadata-5.0.0-py3-none-any.whl (21 kB)
    Collecting wcwidth
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/59/7c/e39aca596badaf1b78e8f547c807b04dae603a433d3e7a7e04d67f2ef3e5/wcwidth-0.2.5-py2.py3-none-any.whl (30 kB)
    Collecting MarkupSafe>=2.1.1
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/71/dc/41cbfe0d9aefdf14226dbf4eccfd0079a0e297809a17c5b902c9a7a3cc9a/MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl (17 kB)
    Collecting asttokens>=2.1.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/23/f7/19e20888d0b1e44b40c2795894a05e7be1f631c09949f7e0b177df1ab7a2/asttokens-2.1.0-py2.py3-none-any.whl (26 kB)
    Collecting pure-eval
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2b/27/77f9d5684e6bce929f5cfe18d6cfbe5133013c06cb2fbf5933670e60761d/pure_eval-0.2.2-py3-none-any.whl (11 kB)
    Collecting executing>=1.2.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/28/3c/bc3819dd8b1a1588c9215a87271b6178cc5498acaa83885211f5d4d9e693/executing-1.2.0-py2.py3-none-any.whl (24 kB)
    Collecting zipp>=0.5
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/40/8a/d63273ed0fa4a3d06f77e7b043f6577d8894e95515b0c187c52e2c0efabb/zipp-3.10.0-py3-none-any.whl (6.2 kB)
    Collecting pyasn1<0.5.0,>=0.4.6
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
         ---------------------------------------- 77.1/77.1 kB 214.4 kB/s eta 0:00:00
    Collecting oauthlib>=3.0.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl (151 kB)
         ---------------------------------------- 151.7/151.7 kB 274.7 kB/s eta 0:00:00
    Installing collected packages: wcwidth, tensorboard-plugin-wit, pytz, pyasn1, pure-eval, pickleshare, executing, backcall, zipp, urllib3, typing-extensions, traitlets, tensorboard-data-server, six, rsa, PyYAML, pyparsing, pygments, pyasn1-modules, psutil, protobuf, prompt-toolkit, Pillow, parso, oauthlib, numpy, MarkupSafe, kiwisolver, idna, fonttools, decorator, cycler, colorama, charset-normalizer, cachetools, absl-py, werkzeug, tqdm, torch, scipy, requests, python-dateutil, packaging, opencv-python, matplotlib-inline, jedi, importlib-metadata, grpcio, google-auth, contourpy, asttokens, torchvision, thop, stack-data, requests-oauthlib, pandas, matplotlib, markdown, seaborn, ipython, google-auth-oauthlib, tensorboard
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    Successfully installed MarkupSafe-2.1.1 Pillow-9.3.0 PyYAML-6.0 absl-py-1.3.0 asttokens-2.1.0 backcall-0.2.0 cachetools-5.2.0 charset-normalizer-2.1.1 colorama-0.4.6 contourpy-1.0.6 cycler-0.11.0 decorator-5.1.1 executing-1.2.0 fonttools-4.38.0 google-auth-2.14.1 google-auth-oauthlib-0.4.6 grpcio-1.50.0 idna-3.4 importlib-metadata-5.0.0 ipython-8.6.0 jedi-0.18.1 kiwisolver-1.4.4 markdown-3.4.1 matplotlib-3.6.2 matplotlib-inline-0.1.6 numpy-1.23.4 oauthlib-3.2.2 opencv-python-4.6.0.66 packaging-21.3 pandas-1.5.1 parso-0.8.3 pickleshare-0.7.5 prompt-toolkit-3.0.32 protobuf-3.20.3 psutil-5.9.4 pure-eval-0.2.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pygments-2.13.0 pyparsing-3.0.9 python-dateutil-2.8.2 pytz-2022.6 requests-2.28.1 requests-oauthlib-1.3.1 rsa-4.9 scipy-1.9.3 seaborn-0.12.1 six-1.16.0 stack-data-0.6.0 tensorboard-2.11.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 thop-0.1.1.post2209072238 torch-1.13.0 torchvision-0.14.0 tqdm-4.64.1 traitlets-5.5.0 typing-extensions-4.4.0 urllib3-1.26.12 wcwidth-0.2.5 werkzeug-2.2.2 zipp-3.10.0
    
    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>
    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>
    

    五、图片数据标记软件

    数据标注软件市面上有很多,也有一些是自家开发的,此处介绍两种,转换为yolo5所需要的数据,本文使用的是精灵标注助手。

    • 精灵标注助手
      这款软件免费强大,可以多点标记,但目前掌握的脚本只支持4点矩形转换为Yolo的训练数据,所以画矩形,导出pascal-voc格式的数据。
    • labelimg(他是pyqt5写的,支持三种框架,但只能画4个点的矩形框)
      此处使用了临时镜像,原语句为 pip install labelimg
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple labelimg
    

    安装日志:

    (LgpLoYo5) E:\AIWorkSpace\yolov5-master>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple labelimg
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    Collecting labelimg
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c5/fb/9947097363fbbfde3921f7cf7ce9800c89f909d26a506145aec37c75cda7/labelImg-1.8.6.tar.gz (247 kB)
         ---------------------------------------- 247.7/247.7 kB 892.6 kB/s eta 0:00:00
      Preparing metadata (setup.py) ... done
    Collecting pyqt5
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bd/85/31a12415765acb48fddac3e207cfffcbbae826fe194cf1d92179d8872f59/PyQt5-5.15.7-cp37-abi3-win_amd64.whl (6.8 MB)
         ---------------------------------------- 6.8/6.8 MB 2.8 MB/s eta 0:00:00
    Collecting lxml
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/17/78/7cc7e269c7c58f0b94c4abdf6cf2bcce2fb0ca58d415e6e4e1b805cd9f17/lxml-4.9.1-cp39-cp39-win_amd64.whl (3.6 MB)
         ---------------------------------------- 3.6/3.6 MB 2.4 MB/s eta 0:00:00
    Collecting PyQt5-Qt5>=5.15.0
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/37/97/5d3b222b924fa2ed4c2488925155cd0b03fd5d09ee1cfcf7c553c11c9f66/PyQt5_Qt5-5.15.2-py3-none-win_amd64.whl (50.1 MB)
         ---------------------------------------- 50.1/50.1 MB 864.1 kB/s eta 0:00:00
    Collecting PyQt5-sip<13,>=12.11
      Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d1/85/e30b11daf7b8d4e00ed51c17204ec3df446041206d22087d2c5dc17d8543/PyQt5_sip-12.11.0-cp39-cp39-win_amd64.whl (78 kB)
         ---------------------------------------- 78.3/78.3 kB 1.4 MB/s eta 0:00:00
    Building wheels for collected packages: labelimg
      Building wheel for labelimg (setup.py) ... done
      Created wheel for labelimg: filename=labelImg-1.8.6-py2.py3-none-any.whl size=261524 sha256=fbba7beb072b63726ff5f9032343755ca971f144630c1808903f87c5ff277364
      Stored in directory: c:\users\newbeechina\appdata\local\pip\cache\wheels\d6\ba\ac\0b1de7ebb0074df1740d334b53680cbca868c0d4792450d895
    Successfully built labelimg
    Installing collected packages: PyQt5-Qt5, PyQt5-sip, lxml, pyqt5, labelimg
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
      WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    WARNING: Ignore distutils configs in setup.cfg due to encoding errors.
    Successfully installed PyQt5-Qt5-5.15.2 PyQt5-sip-12.11.0 labelimg-1.8.6 lxml-4.9.1 pyqt5-5.15.7
    

    六、数据标记

    • 精灵标注助手
      新建➠位置标注➠填写 项目名称、设置标注图片文件夹、设置即将标注的分类,用矩形框进行标记,你要问我能不能用多边形框进行标记,从我目前获得的脚本来看只能转换四点的bndbox无法转换cubic_bezier。

    • labelimg
      在当前虚拟环境中敲击labelimg会打开标记软件,目前它仅支持PascalVOCYOLOCreateML三种标记,它默认是PascalVOC所以我们需要将其切换为YOLO

      image.png
      点击Open Dir -> 选择需要标注的文件夹 -> ok

    七、数据筹备

    • 理论指引
      训练集(train set):训练模型
      验证集(val set):评估模型,用来调整模型参数从而选择最优模型
      测试集(test set):一旦找到了最佳参数,就开始最终训练
      一组数据大致分为以上三类,
      在深度学习中,由于数据量本身很大,而且训练神经网络需要的数据很多,可以把更多的数据分给training,而相应减少validation和test,这三者一般的比例为training:validation:test = 2:1:1, 但是有些时候如果模型不需要很多调整只要拟合就可时,或者training本身就是training+validation (比如cross validation)时,也可以比例为training:test =7:3,这一段描述从网上找的,准确性不敢保证但好歹我现在能配置比例了。
    • 实操
      建立以下文件夹
      1)根目录/data/Annotations 储存pascal-voc格式.xml数据。
      2)根目录/data/ImageSets 存储脚本生成的 train.txttest.txtval.txttrainval.txt ;这几个文本文件存储的待训练图片文件名称。
      3)根目录/data/JPEGImages存储所有训练图片
      在根目录创建preLabelsTxt.py,运行后在 ./data/ImageSets 会生成数据集分类txt文件,内容是一批图片名
      preLabelsTxt.py:
    import os
    import random
    
    ROOT_PATH = 'E:/PyWorkSpace/LgpYolov53/'
    trainval_percent = 0.3
    train_percent = 0.7
    xmlfilepath = ROOT_PATH + 'data/Annotations'
    txtsavepath = ROOT_PATH + 'data/ImageSets'
    total_xml = os.listdir(xmlfilepath)
    num = len(total_xml)
    list = range(num)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(list, tv)
    train = random.sample(trainval, tr)
    ftrainval = open(ROOT_PATH + 'data/ImageSets/trainval.txt', 'w',encoding='utf-8')
    ftest = open(ROOT_PATH + 'data/ImageSets/test.txt', 'w',encoding='utf-8')
    ftrain = open(ROOT_PATH + 'data/ImageSets/train.txt', 'w',encoding='utf-8')
    fval = open(ROOT_PATH + 'data/ImageSets/val.txt', 'w',encoding='utf-8')
    for i in list:
        name = total_xml[i][:-4] + '\n'
        if i in trainval:
            ftrainval.write(name)
            if i in train:
                ftest.write(name)
            else:
                fval.write(name)
        else:
            ftrain.write(name)
    ftrainval.close()
    ftrain.close()
    fval.close()
    ftest.close()
    

    在根目录创建convertLabels.py,运行后会生成根目录/data/labels/...
    在labels文件夹下就是Yolo5框架训练所需的标注数据集,并且在/data/目录下生成test.txt、train.txt、val.txt 三个带储存路径的txt图片数据集
    convertLabels.py:

    import xml.etree.ElementTree as ET
    import pickle
    import os
    from os import listdir, getcwd
    from os.path import join
    
    ROOT_PATH = 'E:/PyWorkSpace/LgpYolov53/'
    
    sets = ['train', 'test','val']
    classes = ['狗']
    def convert(size, box):
        dw = 1. / size[0]
        dh = 1. / size[1]
        x = (box[0] + box[1]) / 2.0
        y = (box[2] + box[3]) / 2.0
        w = box[1] - box[0]
        h = box[3] - box[2]
        x = x * dw
        w = w * dw
        y = y * dh
        h = h * dh
        return (x, y, w, h)
    def convert_annotation(image_id):
        in_file = open(ROOT_PATH+'data/Annotations/%s.xml' % (image_id),'r',encoding='utf-8')
        out_file = open(ROOT_PATH+'data/labels/%s.txt' % (image_id), 'w',encoding='utf-8')
        tree = ET.parse(in_file)
        root = tree.getroot()
        size = root.find('size')
        w = int(size.find('width').text)
        h = int(size.find('height').text)
        for obj in root.iter('object'):
            difficult = obj.find('difficult').text
            cls = obj.find('name').text
            if cls not in classes or int(difficult) == 1:
                continue
            cls_id = classes.index(cls)
            xmlbox = obj.find('bndbox')
            b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
                 float(xmlbox.find('ymax').text))
            bb = convert((w, h), b)
            out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
    wd = getcwd()
    print(wd)
    for image_set in sets:
        if not os.path.exists('data/labels/'):
            os.makedirs('data/labels/')
        image_ids = open(ROOT_PATH+'data/ImageSets/%s.txt' % (image_set),'r',encoding='utf-8').read().strip().split()
        list_file = open(ROOT_PATH+'data/%s.txt' % (image_set), 'w',encoding='utf-8')
        for image_id in image_ids:
            list_file.write(ROOT_PATH+'data/JPEGImages/%s.png\n' % (image_id))
            print("lgp:"+image_id)
            convert_annotation(image_id)
        list_file.close()
    
    八、训练筹备

    1.修改yolov5l.yaml 的nc值
    根目录/models/文件夹下找到yolov5l.yaml, n、s、m、l、x几个文件因为其配置的参数不同,所以需要训练的时间依次增加,参数不要动只修改nc值,nc:【 你需要训练的类型数量】,我训练的只有一个“狗”所以我的修改为nc:1
    2.创建自己的训练文件
    根目录/data/文件夹下创建【你自己要训练的】.yaml,我的是LgpDog.yaml,我从coco.yaml复制部分内容并修改为

    path: E:/PyWorkSpace/LgpYolov53/data  # dataset root dir
    train: train.txt  # train images (relative to 'path') 118287 images
    val: val.txt  # train images (relative to 'path') 5000 images
    test: test-dev.txt  # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
    
    # Classes
    nc: 1  # number of classes
    names: ['狗']  # class names
    
    

    文件中配置的train.txt与另两个txt文件就是convertLabels.py脚本生成的三个训练集文件,里面存储的是图片的路径。
    3.修改根目录/train.py文件
    a)修改参数:
    修改参数如下图,
    --weights是训练的权重文件,初始训练时是没有训练数据的,所以用官方默认的,这里第1次不用改,之后可以改成自己训练的.pt文件路径。
    --cfg就是创建的
    --data 就是自己建立的训练配置,我的是LgpDos.yaml,里面配置了训练的类型,此处,以及图片源路径
    --epochs就是训练迭代次数
    --device暂时未弄清楚,貌似是后续检测脚本detect.py执行用的
    --name保存训练时.pt文件的文件夹名,改不改都行

    image.png
    b)ROOT可能取得C盘路径,所以直接注释掉,这样就是自己的项目路径了,这里需要注意
    image.png

    然后在虚拟环境中运行train.py,若是第1次执行会下载一些东西,譬如.pt文件,从官网上下载的yolos.pt会在根目录下存在,若根目录下已经存在这个文件那就不会下载,这样省流量,在执行过程中遇到过各种错误:
    错1:

    ModuleNotFoundError: No module named 'yaml'
    Requirement already satisfied: pyyaml in d:\miniconda3\envs\lgpyolo5\lib\sit
    

    没包一般就是环境进错了,关闭窗口使用conda命令重新进入目标虚拟环境并切换到你的工程目录,之后再执行train.py
    错2:

    RuntimeError: result type Float can't be cast to the desired output type __int64
    

    这是官方文件出问题了,解决方式未打开 根目录/utils/loss.py文件
    CTRL+F搜索for i in range(self.nl)

    anchors, shape = self.anchors[i]
    替换为
    anchors, shape = self.anchors[i], p[i].shape
    CTRL+F搜索indices.append

    indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1)))
    替换为
    indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid
    错3:说报一堆文件与labels找不到的错误
    貌似是训练的标注数据是通过图片路径查找的,所以将标注的一批.txt文件与图片文件放在一个文件夹里,我这里图片在JPEGImages,所以

    九、训练可视化

    另起一个cmd窗口,如下指令,激活虚拟环境,敲击命令tensorboard --logdir 【你的Yolo5的项目路径】\runs,在浏览器输入http://localhost:6006
    执行日志:

    C:\Users\22090201>conda activate LgpYolo5
    
    (LgpYolo5) C:\Users\22090201>tensorboard --logdir E:\PyWorkSpace\LgpYolov53\runs
    TensorFlow installation not found - running with reduced feature set.
    Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
    TensorBoard 2.11.0 at http://localhost:6006/ (Press CTRL+C to quit)
    

    指标含义:
    LOSS
    loss分为cls_loss, box_loss, obj_loss三部分。
    cls_loss用于监督类别分类,计算锚框与对应的标定分类是否正确。
    box_loss用于监督检测框的回归,预测框与标定框之间的误差(CIoU)。
    obj_loss用于监督grid中是否存在物体,计算网络的置信度。

    mAP(IoU@0.75),这是一个对检测能力要求更高的标准。
    mAP(IoU@0.5),跟Pascal VOC mAP标准计算方式一致;
    mAP(IoU@[0.5:0.05:0.95]),需要计算10个IoU阈值下的mAP,然后计算平均值。这个评估指标比仅考虑通用IoU阈值(0.5)评估指标更能体现出模型的精度。
    参考资料:https://blog.csdn.net/u011994454/article/details/119564834
    https://pytorch.apachecn.org/#/docs/1.7/19

    十、检测目标图片

    训练完后会在根目录\runs\train\exp11\weights\ 文件夹下生成best.pt、last.pt两个文件 我们使用best.pt权重文件
    在虚拟环境中cd 到Yolo5所在目录,敲击命令
    python detect.py --weights 【权重文件路径】 --source 【目标检测文件夹】 --device 【训练显卡或cpu】 --save-txt
    示例:
    python detect.py --weights runs/train/exp11/weights/best.pt --source ./data/JPEGImages --device cpu --save-txt
    敲完之后会自动在runs/detect/exp生成文件夹,里面存放着你目标检测文件,如下图上面有相似度,样本+训练资源+训练时长+训练参数+训练框架=不同的效果,这张图的相似度很低,因为我训练1.5h且使用1个cpu,资源量很低,另一方面我训练的是狗但我检测的是狼,我突然想这两物种连人都很难分辨,AI检测啥样子,从效果来看这块确实是人工智障,拆解成元素来看狼狗分辨主要是情感,尾巴下垂 ,但据说哈士奇尾巴是可下可上的,这个就难搞,这点我还没有想到有啥解,这个问题解决需要对两者进行解构,咱毕竟掌握信息元素不够。

    image.png

    参考文章
    参考文章2

    相关文章

      网友评论

          本文标题:YoLo5 AI机器学习识别从入门到放弃

          本文链接:https://www.haomeiwen.com/subject/sjvatdtx.html