{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Introduction\n", "We developed a series of lightweight models, named PP-PicoDet. Because of the excellent performance, our models are very suitable for deployment on mobile or CPU.\n", "\n", "The PP-PicoDet model has the following characteristics:\n", "- 🌟 Higher mAP: the **first** object detectors that surpass mAP(0.5:0.95) **30+** within 1M parameters when the input size is 416.\n", "- 🚀 Faster latency: 150FPS on mobile ARM CPU.\n", "- 😊 Deploy friendly: support PaddleLite/MNN/NCNN/OpenVINO and provide C++/Python/Android implementation.\n", "- 😍 Advanced algorithm: use the most advanced algorithms and offer innovation, such as ESNet, CSP-PAN, SimOTA with VFL, etc.\n", "\n", "For more details, please refer to [official documentation](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/configs/picodet/README_en.md)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Model Effects\n", "The accuracy and speed comparison of PP-Picodet and other lightweight models is shown below:\n", "
\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. How to use the model\n", "Clone PaddleDetection firstly and put the COCO-style dataset in `dataset/coco`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# clone PaddleDetection\n", "%mkdir -p ~/work\n", "%cd ~/work/\n", "!git clone https://github.com/PaddlePaddle/PaddleDetection.git\n", "\n", "# Other Dependencies\n", "%cd PaddleDetection\n", "%mkdir -p demo_input demo_output\n", "!pip install -r requirements.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 Training\n", "Training PP-Picodet with following command" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# training with single GPU\n", "!CUDA_VISIBLE_DEVICES=0 python tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml --eval\n", "\n", "# training with mutiple GPUs\n", "!CUDA_VISIBLE_DEVICES=0,1,2,3 python -m paddle.distributed.launch --gpus 0,1,2,3 tools/train.py -c configs/picodet/picodet_s_320_coco_lcnet.yml --eval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Notes:**\n", "- All models of PicoDet are trained by 4 GPUs. If the number of GPUs is changed, the learning rate `base_lr` needs to be scaled linearly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 Deployment\n", "\n", "Run the following command to quickly deploy the model using PaddleInference" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# export the model\n", "!python tools/export_model.py -c configs/picodet/picodet_s_320_coco_lcnet.yml -o weights=https://paddledet.bj.bcebos.com/models/picodet_s_320_coco_lcnet.pdparams\n", "\n", "# inference\n", "!wget -P demo_input -N https://paddledet.bj.bcebos.com/modelcenter/images/General/000000014439.jpg\n", "!python deploy/python/infer.py --model_dir=output_inference/picodet_s_320_coco_lcnet --image_file=demo_input/000000014439.jpg --device=GPU --output_dir=demo_output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PP-Picodet supports multiple deployment methods, please refer to [PP-Picodet deployment](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/configs/picodet/README_en.md#deployment) for details." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Model principle\n", "The overall structure of PP-Picodet is shown below:\n", "
\n", " \n", "
\n", "PP-Picodet is composed of following methods:\n", "- Enhanced ShuffleNet-ESNet\n", "- CSP-PAN\n", "- SimOTA label assignment\n", "\n", "For more details, please refer to our technical report: https://arxiv.org/abs/2111.00902" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Attention\n", "**All commands run on AI Studio's `jupyter` by default. If running on a terminal, remove the % or ! at the beginning of the command.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Related papers and citations\n", "```\n", "@article{yu2021pp,\n", " title={PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices},\n", " author={Yu, Guanghua and Chang, Qinyao and Lv, Wenyu and Xu, Chang and Cui, Cheng and Ji, Wei and Dang, Qingqing and Deng, Kaipeng and Wang, Guanzhong and Du, Yuning and others},\n", " journal={arXiv preprint arXiv:2111.00902},\n", " year={2021}\n", "}\n", "```" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.6 64-bit", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.10.6" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 2 }