Skip to content

Latest commit

 

History

History
164 lines (110 loc) · 6.19 KB

README_zh.md

File metadata and controls

164 lines (110 loc) · 6.19 KB

关于模型

本模型主干网络为CSP-Darknet,特征提取网络为PANet,检测头网络为Decoupled head。

我们对整体网络有哪些改进?

  1. 我们将CSP-Darknet的layer5的SPP换成了SPPF,在SPPF后加入了MobileViT(我们基于苹果的论文所复现的《MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer》);
  2. 在主干网络中,我们对后4个CSPLayer中的Bottleneck设置了(1: 1: 3: 1)的比例,参考论文:《A ConvNet for the 2020s》
  3. 在主干网络与特征提取网络的中间我们加入了三层CBAM注意力机制;
  4. 我们将整体网络的下采样结构进行了调整,使用全新的下采样方法,减少颗粒度损失。

未来的工作

  • 加强对小目标物体的识别
  • 增加COCO格式训练文件
  • TensorRT版本的开发
  • 增加AMFF-YOLOX结构

如何训练与评估

  1. 将数据集放到datasets中,并为其创建一个新的文件夹(所有路径请勿使用中文),需要使用VOC格式(JPEGImages、Annotations);
  2. 关于生成数据集,在tools/annotations.py修改voc_classesfile_dir,右键运行;
  3. 关于训练,在tools/train.py修改if __name__ == "__main__"中的参数,右键运行训练即可;
  4. 训练数据在控制台中输入tensorboard --logdir=results即可,打开浏览器,输入localhost:6006查看;
  5. 关于评估,在tools/eval.py修改if __name__ == "__main__"中的参数,右键运行评估即可。

前置部署

  1. 我们默认使用者使用Linux,安装Anaconda、Miniconda等虚拟环境,所以这里不做过多赘述。如有不会的请自行询问搜索引擎或ChatGPT

  2. 为你的虚拟环境创建一个新的环境或使用base环境,在项目目录中找到auto_install_package.sh文件,使用命令进行本项目所需包的安装

    sh auto_install_package.sh
  3. 将工作环境设置为默认开启,例如以Miniconda为例,使用命令打开.bashrc文件

    sudo vim ~/.bashrc

    在最后一行加入以下语句

    conda activate XXX(你的Pytorch环境)

    保存后使用命令即可完成配置

    source ~/.bashrc

如何进行与Springboot等服务器进行交互

  1. tools/socket2springboot.py文件中,我们使用socket进行通信。项目默认端口为12345

  2. 项目提供自动部署脚本文件socket2springboot.sh,使用前请先修改脚本文件中的project_path,运行方式如下

    sh socket2springboot.sh
  3. 当然你也可以手动部署,在当前工作环境中使用以下命令即可运行,此命令仅后台运行

    nohup python tools/socket2springboot.py

    我们也可以使用命令将python后台运行并将输出日志保存到指定文件

    nohup python -u tools/socket2springboot.py > /your/path/log/logname.log 2>&1 &

    如果需要重启或关闭服务,使用htop命令找到运行程序后Kill,或使用指令kill

    kill $(ps -ef | grep "socket2springboot.py" | grep -v grep | awk "{print $2}")
  4. 当测试是否运行成功时,我们使用命令查看当前程序运行的pid

    ps -def | grep "socket2springboot.py"

    当其可以被找到后,运行method_test.py发送测试的Json数据流

    python test/method_test.py
  5. 数据流传输均使用Json格式,由客户端传到服务端格式如下

    {
        "model_name": "Net", 
        "model_path": "/your/modle/path/your_model_name.pth",
        "dataset": "NEUDET",
        "input_shape": [224, 224],
        "conf_thres": 0.5,
        "nms_thres": 0.6,
        "image_path": ["/your/image/path/image1.jpg",
                       "/your/image/path/image2.jpg",
                       "/your/image/path/image3.jpg"]
    }
  6. 当发送完数据后,我们使用命令打开log文件,此时文件中将记录服务端返回Json数据流

    vim log/socket2springboot_timestamp.log
  7. 数据流由服务端返回到客户端格式如下

    {
        "image": [
            {"image_path": "/your/image/path/image1.jpg", "image_id": 0}, 
            {"image_path": "/your/image/path/image2.jpg", "image_id": 1}, 
            {"image_path": "/your/image/path/image3.jpg", "image_id": 2}], 
        "annotations": [
            {"image_id": 0, "box": [117.38097, 32.385307, 133.57707, 62.68074], "predicted_class": "class1", "conf": 0.66143817}, 
            {"image_id": 0, "box": [33.51411, 6.4222217, 48.198418, 34.87923], "predicted_class": "class1", "conf": 0.64585626}, 
            {"image_id": 0, "box": [112.736916, 146.3184, 133.77809, 198.33405], "predicted_class": "class1", "conf": 0.63799584}, 
            {"image_id": 0, "box": [114.86066, 73.44805, 142.24493, 114.508995], "predicted_class": "class1", "conf": 0.61806077}, 
            {"image_id": 1, "box": [108.89356, -5.1439524, 180.93867, 138.25955], "predicted_class": "class2", "conf": 0.7961505}, 
            {"image_id": 1, "box": [92.11259, 127.67179, 183.05533, 199.58357], "predicted_class": "class2", "conf": 0.7741741}, 
            {"image_id": 1, "box": [10.045683, 65.02976, 73.03552, 122.30415], "predicted_class": "class2", "conf": 0.72269356}, 
            {"image_id": 2, "box": [32.543327, 38.372814, 145.7598, 195.50223], "predicted_class": "class3", "conf": 0.7584684}]
    }
    

项目具体实施界面展示

该界面编写作者为@lizhaoguo123

检测界面

image-20221209010633957

image-20221209011503907

管理员界面

image-20221209010009245

image-20221209010021494

image-20221209010031676

image-20221209010224632

image-20221209010147174

image-20221209010607772