All Projects → AIOpenData → baai-federated-learning-helmet-baseline

AIOpenData / baai-federated-learning-helmet-baseline

Licence: Apache-2.0 license
电力人工智能数据竞赛——安全帽未佩戴行为目标检测赛道基准模型

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to baai-federated-learning-helmet-baseline

baai-federated-learning-crane-baseline
电力人工智能数据竞赛——液压吊车目标检测赛道
Stars: ✭ 17 (-34.62%)
Mutual labels:  federated-learning, yolov3
udacity-cvnd-projects
My solutions to the projects assigned for the Udacity Computer Vision Nanodegree
Stars: ✭ 36 (+38.46%)
Mutual labels:  yolov3
Awesome-Federated-Learning-on-Graph-and-GNN-papers
Federated learning on graph, especially on graph neural networks (GNNs), knowledge graph, and private GNN.
Stars: ✭ 206 (+692.31%)
Mutual labels:  federated-learning
CRFL
CRFL: Certifiably Robust Federated Learning against Backdoor Attacks (ICML 2021)
Stars: ✭ 44 (+69.23%)
Mutual labels:  federated-learning
DIoU YOLO V3
📈📈📈【口罩佩戴检测数据训练 | 开源口罩检测数据集和预训练模型】Train D/CIoU_YOLO_V3 by darknet for object detection
Stars: ✭ 53 (+103.85%)
Mutual labels:  yolov3
federated
Bachelor's Thesis in Computer Science: Privacy-Preserving Federated Learning Applied to Decentralized Data
Stars: ✭ 25 (-3.85%)
Mutual labels:  federated-learning
yolo deepsort
Fast MOT base on yolo+deepsort, support yolo3 and yolo4
Stars: ✭ 47 (+80.77%)
Mutual labels:  yolov3
facetouch
Neural Network to predict face touch on live feed and warn you, "don't touch the face".
Stars: ✭ 24 (-7.69%)
Mutual labels:  yolov3
detection util scripts
TF and YOLO utility scripts
Stars: ✭ 49 (+88.46%)
Mutual labels:  yolov3
detection-pytorch
A pytorch Implementation of classical object detection.
Stars: ✭ 24 (-7.69%)
Mutual labels:  yolov3
Alturos.ImageAnnotation
A collaborative tool for labeling image data for yolo
Stars: ✭ 47 (+80.77%)
Mutual labels:  yolov3
darknet
php ffi darknet
Stars: ✭ 21 (-19.23%)
Mutual labels:  yolov3
YOLO-Streaming
Push-pull streaming and Web display of YOLO series
Stars: ✭ 56 (+115.38%)
Mutual labels:  yolov3
FedScale
FedScale is a scalable and extensible open-source federated learning (FL) platform.
Stars: ✭ 274 (+953.85%)
Mutual labels:  federated-learning
FEDL
FEDL-Federated Learning algorithm using TensorFlow (Transaction on Networking 2021)
Stars: ✭ 41 (+57.69%)
Mutual labels:  federated-learning
NIID-Bench
Federated Learning on Non-IID Data Silos: An Experimental Study (ICDE 2022)
Stars: ✭ 304 (+1069.23%)
Mutual labels:  federated-learning
IBM-Data-Science-Capstone-Alejandra-Marquez
Homemade face mask detector fine-tuning a Yolo-v3 network
Stars: ✭ 28 (+7.69%)
Mutual labels:  yolov3
MIT-Driverless-CV-TrainingInfra
PyTorch pipeline of MIT Driverless Computer Vision paper(2020)
Stars: ✭ 89 (+242.31%)
Mutual labels:  yolov3
ESP32-CAM-MJPEG-Stream-Decoder-and-Control-Library
The library is MJPEG stream decoder based on libcurl and OpenCV, and written in C/C++.
Stars: ✭ 40 (+53.85%)
Mutual labels:  yolov3
Social-Distancing-Detection-in-Real-Time
Social distance monitoring in real-time with an IP camera. Optimized for better performance with threading.
Stars: ✭ 52 (+100%)
Mutual labels:  yolov3

电力人工智能数据竞赛-安全帽未佩戴行为目标检测赛道

以下为电力人工智能数据竞赛-安全帽未佩戴行为目标检测赛道基准模型介绍。其中包含了智源联邦学习框架的简化版本(真实版本后期会以论文的形式发布)、智源整理标注的初赛安全帽数据集和基于YOLOv3模型完成的实验。

环境要求

  • Python==3.7.6
  • Flask==1.1.1
  • gevent==20.9.0
  • loguru==0.5.3
  • numpy==1.18.1
  • Pillow==7.0.0
  • torch==1.6.0
  • terminaltables==3.1.0
  • torchvision==0.7.0
  • tqdm==4.42.1

详情请参考baai-federated-learning-helmet-baseline下面的requirements.txt

项目结构

.
├── README.md
├── baai-client  # 智源联邦学习客户端
│   ├── api
│   │   ├── __init__.py
│   │   └── my_api.py  # 选手联邦学习服务端需要调用智源联邦学习客户端的函数(训练、测试等)
│   ├── config
│   │   ├── __init__.py
│   │   └── project_conf.py  # 本机端口号和环境配置
│   ├── log
│   │   ├── D_preliminary_contest_helmet_federal_M_yolov3_SE_25_CE_4_ID_1.json  # 最后测试集提交结果
│   │   └── D_preliminary_contest_helmet_federal_M_yolov3_SE_25_CE_4_ID_1.log  # 训练、测试过程完整日志
│   ├── main.py  # 智源联邦学习客户端启动主函数
│   ├── service
│   │   └── federated
│   │       ├── client.py  # 智源联邦学习客户端类
│   │       ├── config
│   │       │   └── preliminary_contest_helmet_federal
│   │       │       ├── create_preliminary_contest_helmet_federal_model.sh  # 构建yolov3模型的bash脚本
│   │       │       ├── preliminary_contest_helmet_federal.data  # 本地初赛安全帽数据集路径信息
│   │       │       └── yolov3_preliminary_contest_helmet_federal.cfg  # 根据bash脚本生成的cfg文件
│   │       ├── models
│   │       │   └── models.py  # yolov3模型相关类
│   │       ├── utils
│   │       │   ├── data.py  # 处理加载数据集相关函数
│   │       │   ├── options.py  # 初始化参数函数
│   │       │   └── utils.py  # 辅助功能函数
│   └── utils
│       ├── __init__.py
│       ├── common_utils.py  # 常用功能函数
│       ├── http_request_utils.py  # 通信功能函数(GET、POST)
│       ├── request_api.py  # 调用通信功能函数api
│       └── result_utils.py  # 通信结果封装类
├── contestant-server  # 选手联邦学习服务端
│   ├── config
│   │   ├── __init__.py
│   │   └── project_conf.py  # 本机端口号和环境配置
│   ├── log
│   │   └── D_preliminary_contest_helmet_federal_M_yolov3_SE_25_CE_4.log  # 训练、测试过程完整日志
│   ├── service
│   │   └── federated
│   │       ├── config
│   │       │   └── preliminary_contest_helmet_federal
│   │       │       ├── create_preliminary_contest_helmet_federal_model.sh  # 构建yolov3模型的bash脚本
│   │       │       └── yolov3_preliminary_contest_helmet_federal.cfg  # 根据bash脚本生成的cfg文件
│   │       ├── models
│   │       │   └── models.py  # yolov3模型相关类
│   │       ├── server.py
│   │       ├── utils
│   │       │   ├── options.py  # 初始化参数函数
│   │       │   └── utils.py  # 辅助功能函数
│   │       └── weights  # 保存yolov3预训练模型
│   └── utils
│       ├── __init__.py
│       ├── common_utils.py  # 常用功能函数
│       ├── http_request_utils.py  # 通信功能函数(GET、POST)
│       ├── request_api.py  # 调用通信功能函数api
│       └── result_utils.py  # 通信结果封装类
├── requirements.txt  # 需要安装的python库
└── sgcc-client  # 国网电力联邦学习客户端(功能与智源联邦学习客户端相同,此处不展开介绍)
    ├── api
    │   ├── __init__.py
    │   └── my_api.py
    ├── config
    │   ├── __init__.py
    │   └── project_conf.py
    ├── log
    │   ├── D_preliminary_contest_helmet_federal_M_yolov3_SE_25_CE_4_ID_2.json
    │   └── D_preliminary_contest_helmet_federal_M_yolov3_SE_25_CE_4_ID_2.log
    ├── main.py
    ├── service
    │   └── federated
    │       ├── client.py
    │       ├── config
    │       │   └── preliminary_contest_helmet_federal
    │       │       ├── create_preliminary_contest_helmet_federal_model.sh
    │       │       ├── preliminary_contest_helmet_federal.data
    │       │       └── yolov3_preliminary_contest_helmet_federal.cfg
    │       ├── models
    │       │   └── models.py
    │       ├── utils
    │       │   ├── data.py
    │       │   ├── options.py
    │       │   └── utils.py
    └── utils
        ├── __init__.py
        ├── common_utils.py
        ├── http_request_utils.py
        ├── request_api.py
        └── result_utils.py

下载地址

  • 初赛安全帽数据集
    • 其中智源客户端的数据集包括
      • preliminary_contest_helmet_federal/annotations下面的train1.jsonval1.jsontest.jsontest_image_info.json
      • preliminary_contest_helmet_federal/images下面的train1val1test
    • 国网电力客户端的数据集包括
      • preliminary_contest_helmet_federal/annotations下面的train2.jsonval2.jsontest.jsontest_image_info.json
      • preliminary_contest_helmet_federal/images下面的train2val2test
  • yolov3预训练模型
    当前主要采用weights下面的darknet53.conv.74

运行方式

智源联邦学习客户端

  • 进入baai-client/service/federated/config/preliminary_contest_helmet_federal目录

    • 修改preliminary_contest_helmet_federal.data当中的数据路径
    • 生成yolov3模型的cfg文件(先删除旧的cfg文件)
      bash create_preliminary_contest_helmet_federal_model.sh 2
  • 进入baai-client/config

    • 修改project_conf.py当中的hostport
  • 进入baai-client/service/federated/utils目录

    • 配置参数,特别是data_configmodel_defserver_ipserver_portclient_ipclient_port
  • 启动智源联邦学习客户端

    • 进入baai-client,运行以下指令
      python main.py

国网电力联邦学习客户端

  • 进入sgcc-client/service/federated/config/preliminary_contest_helmet_federal目录

    • 修改preliminary_contest_helmet_federal.data当中的数据路径
    • 生成yolov3模型的cfg文件(先删除旧的cfg文件)
      bash create_preliminary_contest_helmet_federal_model.sh 2
  • 进入sgcc-client/config

    • 修改project_conf.py当中的hostport
  • 进入sgcc-client/service/federated/utils目录

    • 配置参数,特别是data_configmodel_defserver_ipserver_portclient_ipclient_port
  • 启动国网电力联邦学习客户端

    • 进入sgcc-client,运行以下指令
      python main.py

选手联邦学习服务端

  • 把下载好的yolov3预训练模型拷贝到contestant-server/service/federated/weights

  • 进入contestant-server/service/federated/config/preliminary_contest_helmet_federal目录

    • 生成yolov3模型的cfg文件(先删除旧的cfg文件)
      bash create_preliminary_contest_helmet_federal_model.sh 2
  • 进入contestant-server/config

    • 修改project_conf.py当中的hostport
  • 进入contestant-server/service/federated/utils目录

    • 配置参数,特别是pretrained_weightsmodel_defserver_ipserver_portclient_ipsclient_ports
  • 启动选手联邦学习服务端

    • 进入contestant-server,运行以下指令
      PYTHONPATH=your/project/path/contestant-server python service/federated/server.py

实验指标

  • 正确率:P (Precision) = TP / (TP + FP),所有预测出来的正例中有多少是真的正例
  • 召回率:R (Recall) = TP / (TP + FN),所有真实正例中预测出了多少真实正例
  • F1值:F1 Score = 2 * P * R / (P + R),精确率和召回率的调和均值
  • mAP (mean Average Precision): 目标检测模型的评估指标
  • 国网电力指标:电力人工智能数据竞赛指标计算方法和自动评测脚本的详细介绍

实验结果

基于默认实验参数,初赛安全帽测试集基于YOLOv3模型的结果:

false detection rate missed detection rate object detection correct rate sgcc helmet image score
0.3646477132262052 0.028833551769331587 0.8059418457648546 0.8373772793004436

选手问题答疑

问题1:

File "your/python/path/python3.7/site-packages/torch/nn/modules/container.py", line 74, in _get_item_by_idx  
raise IndexError('Index {} is out of range'.format(idx))  
IndexError: index 0 is out of range  

解决方案:在客户端和服务端生成新的cfg文件之前,先把旧的cfg文件删除掉。

问题2:

File "service/federated/server.py", line 81, in call_federated_train_size  
federated_train_size = Common.get_dict_by_json_str_func(train_job.value['data'])["federated_train_size"]  
TypeError: 'NoneType' object is not subscriptable

解决方案:查看客户端报错信息,如果是Flask包相关错误,将Flask升级为1.1.1版本。

问题3:

Start executing step: call federated train size  
Segmentation fault (core dumped)

解决方案:很可能是gevent版本的问题,升级到20.9.0版本。

问题4:
电力指标相关的问题。
已经在官网更新国网电力指标说明。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].