roboflow-100-benchmark
roboflow-100-benchmark copied to clipboard
Code for replicating Roboflow 100 benchmark results and programmatically downloading benchmark datasets
Note RF100 is part of the CVinW challenge!
Roboflow 100 📸: A Rich, Multi-Domain Object Detection Benchmark

This repository implements the Roboflow 100 benchmark developed by Roboflow. It contains code to download the dataset and reproduce mAP values for YOLOv5 and YOLOv7 Fine-Tuning and GLIP Evaluation on 100 of Roboflow Universe datasets.
RF100 was sponsored with ❤️ by Intel
RF100 paper is on arxiv, if you used RF100 in your research, please consider citing us
@misc{2211.13523,
Author = {Floriana Ciaglia and Francesco Saverio Zuppichini and Paul Guerrie and Mark McQuade and Jacob Solawetz},
Title = {Roboflow 100: A Rich, Multi-Domain Object Detection Benchmark},
Year = {2022},
Eprint = {arXiv:2211.13523},
}
RF100
RF100 contains the following datasets, carefully chosen from more than 90'000 datasets hosted on our universe hub. The datasets are splitted in 7 categories: Aerial, Videogames, Microscopic, Underwater, Documents, Electromagnetic and Real World.
| Category | Datasets | Images | Classes |
|---|---|---|---|
| Aerial | 7 | 9683 | 24 |
| Videogames | 7 | 11579 | 88 |
| Microscopic | 11 | 13378 | 28 |
| Underwater | 5 | 18003 | 39 |
| Documents | 8 | 24813 | 90 |
| Electromagnetic | 12 | 36381 | 41 |
| Real World | 50 | 110615 | 495 |
| Total | 100 | 224,714 | 805 |
Note some datasets failed, only on 88
| category | yolov5 | yolov7 | yolov8 | glip |
|---|---|---|---|---|
| aerial | 0.636 | 0.504286 | 0.707286 | 0.0238571 |
| documents | 0.716125 | 0.7225 | 0.79775 | 0.018625 |
| electromagnetic | 0.7423 | 0.639 | 0.7899 | 0.0697 |
| microscopic | 0.650727 | 0.59166 | 0.747455 | 0.0230909 |
| real world | 0.781659 | 0.705276 | 0.842171 | 0.117049 |
| underwater | 0.56 | 0.6624 | 0.7024 | 0.1876 |
| videogames | 0.863333 | 0.783167 | 0.881 | 0.1625 |
| Total | 0.7071 | 0.6583 | 0.7811 | 0.0860 |
🚨 Head over the Appendix at the bottom to see samples from each dataset
We provide a notebook to help you using RF100 with PyTorch
Getting Started
First, clone this repo and go inside it.
git clone https://github.com/roboflow-ai/roboflow-100-benchmark.git
cd roboflow-100-benchmark
git submodule update --init --recursive
You will need an API key. RF100 can be accessed with any key from Roboflow, head over our doc to learn how to get one.
Then, export the key to your current shell
export ROBOFLOW_API_KEY=<YOUR_API_KEY>
Note: The datasets are taken from datasets_links.txt, you can modify that file to add/remove datasets.
Docker
The easiest and faster way to download RF100 is using docker and our Dockerfile.
NOTE Be sure to do the post process steps after you installed docker, we will read and write to shared volumes so your user should also be in the docker group.
If you have an NVIDIA GPU, be sure to also install nvidia docker
Be sure to have the ROBOFLOW_API_KEY in your env, then run it (we are passing our user so you shouldn't have permission errors on rf100 folder)
docker run --rm -it \
-e ROBOFLOW_API_KEY=$ROBOFLOW_API_KEY \
-v $(pwd)/rf100:/workspace/rf100 \
-v /etc/group:/etc/group:ro \
-u "$(id -u):$(id -g)" \
roboflow/rf100-download
roboflow/rf100-download is hosted on our docker hub
Internally, RF100 will downloaded to /app/rf100. You can also specify the format with the -f flag, by default coco is used.
docker run --rm -it \
-e ROBOFLOW_API_KEY=$ROBOFLOW_API_KEY \
-v ${PWD}/rf100:/workspace/rf100 \
-v /etc/group:/etc/group:ro \
-u "$(id -u):$(id -g)" \
roboflow/rf100-download -f yolov5
If you want to build the container and not use the image on the hub, run
docker build -t rf100-download -f Dockerfile.rf100.download .
Local Env
To download RF100 in your local enviroment (python >=3.6), you need to install roboflow
pip install roboflow
Then,
chmod 770 ./scripts/download_datasets.sh
./scripts/download_datasets.sh
./scripts/download_datasets.sh -f yolov5 $ change format
./scripts/download_datasets.sh -l <path_to_my_location> change download location
Formats
Supported formats are
cocoyolov5(used by YOLOv7 as well)
Reproduce Results
We will use docker to ensure the same enviroment is used.
First, build the container
docker build -t rf100-benchmark -f Dockerfile.rf100.benchmark .
Then, follow the guide for each model.
All results are stored inside ./runs.
Warning The run must be uninterrupted otherwise the downloaded datasets may be unfinished or corrupted
Warning If you have
permission deniederrors, you can either removerunswithsudo rm -rf ./runsor give permissions to everybodysudo chmod -R +x ./runs.
Warning Due to poor code support, random errors and time, we weren't able to run all the models on all datasets. Only 88 datasets were successfully benchmarked on all four models
YOLOv5 Fine-Tuning
Note, we will map the current folder to the container file system to persist data
mkdir -p runs &&
nvidia-docker run --gpus all --rm -it --ipc host --network host --shm-size 64g \
-e ROBOFLOW_API_KEY=$ROBOFLOW_API_KEY \
-v ${PWD}/runs:/workspace/runs \
-v ${PWD}/datasets_links_640.txt:/workspace/datasets_links_640.txt \
rf100-benchmark ./yolov5-benchmark/train.sh
YOLOv7 Fine-Tuning
Note, we will map the current folder to the container file system to persist data
mkdir -p runs &&
nvidia-docker run --gpus all --rm -d --ipc host --network host --shm-size 64g \
-e ROBOFLOW_API_KEY=$ROBOFLOW_API_KEY \
-v ${PWD}/runs:/workspace/runs \
-v ${PWD}/datasets_links_640.txt:/workspace/datasets_links_640.txt \
rf100-benchmark ./yolov7-benchmark/train.sh
YOLOv8 Fine-Tuning
Note, Doc coming soon but we have the results (was done internally by another team member)
Note The model failed on these datasets: bone-fracture-7fylg, brain-tumor-m2pbp, cable-damage, circuit-elements and printed-circuit-board
GLIP
Note The model failed on these datasets: apex-videogame, apples-fvpl5, hand-gestures-jps7z, road-traffic,
wall-damage
mkdir -p runs &&
nvidia-docker run --gpus all --rm -it --ipc host --network host --shm-size 64g \
-e ROBOFLOW_API_KEY=$ROBOFLOW_API_KEY \
-v ${PWD}/runs:/workspace/runs \
-v ${PWD}/datasets_links_640.txt:/workspace/datasets_links_640.txt \
rf100-benchmark ./GLIP-benchmark/train.sh
Note We create a notebook to analysis why and where GLIP did bad and good
COCO evaluation
If you are interesting in only the test annotations for rf100, e.g. you are using pycocotools to compute maps, we have create a zip file with root/<dataset_name>/<test_annotations>.json. We hope this will make it easier for you to evaluate your models.
Appendix
YOLOs Comparison
Note 5 datasets failed on v8, so the comparison is only on 95. Check v8 for more info.
Note We only train one seed for each model, take these results with a grain of salt
The following box plots shows [email protected] for each YOLOs model on RF100
The following bar plots shows [email protected] for each YOLOs model on each RF100 category
Samples
Credits
We thank all the authors of the original datasets, below a table linking the Roboflow 100 dataset's name to its original counterpart
| dataset | original |
|---|---|
| hand-gestures-jps7z | https://universe.roboflow.com/hand-gestures-recognition/hand-gestures-dataset |
| smoke-uvylj | https://universe.roboflow.com/sigma-pub/smoke-detection-sigma |
| wall-damage | https://universe.roboflow.com/sina-uyen0/damage_level_detection |
| corrosion-bi3q3 | https://universe.roboflow.com/khaingwintz-gmail-com/dataset--2-pathein-train-plus-v-3-update-mm |
| excavators-czvg9 | https://universe.roboflow.com/mohamed-sabek-6zmr6/excavators-cwlh0 |
| chess-pieces-mjzgj | https://universe.roboflow.com/joseph-nelson/chess-pieces-new |
| road-signs-6ih4y | https://universe.roboflow.com/project-sign-detection/traffic-sign-cdfml |
| street-work | https://universe.roboflow.com/cone/capacetes-e-cones |
| construction-safety-gsnvb | https://universe.roboflow.com/computer-vision/worker-safety |
| road-traffic | https://universe.roboflow.com/due/detection-dlzhy |
| washroom-rf1fa | https://universe.roboflow.com/imagetaggingworkspace/washroom-image-tagging |
| circuit-elements | https://universe.roboflow.com/new-workspace-rzrja/pcb-2.0 |
| mask-wearing-608pr | https://universe.roboflow.com/joseph-nelson/mask-wearing |
| cables-nl42k | https://universe.roboflow.com/annotationericsson/annotation-2.0 |
| soda-bottles | https://universe.roboflow.com/food7/test1-iajnv |
| truck-movement | https://universe.roboflow.com/psi-dhxqe/psi-rossville-pano |
| wine-labels | https://universe.roboflow.com/wine-label/wine-label-detection |
| digits-t2eg6 | https://universe.roboflow.com/dmrs/number-1gmaw |
| vehicles-q0x2v | https://universe.roboflow.com/7-class/11-11-2021-09.41 |
| peanuts-sd4kf | https://universe.roboflow.com/molds-onbk3/peanuts-mckge/ |
| printed-circuit-board | https://universe.roboflow.com/new-workspace-rzrja/pcb-2.0 |
| pests-2xlvx | https://universe.roboflow.com/gugugu/pests-f8kkr |
| cavity-rs0uf | https://universe.roboflow.com/duong-duc-cuong/cavity-n3ioq |
| leaf-disease-nsdsr | https://universe.roboflow.com/puri/puri4-ygapu |
| marbles | https://universe.roboflow.com/zhe-fan/marble-images |
| pills-sxdht | https://universe.roboflow.com/mohamed-attia-e2mor/pill-detection-llp4r |
| poker-cards-cxcvz | https://universe.roboflow.com/roboflow-100/poker-cards-cxcvz |
| number-ops | https://universe.roboflow.com/mnist-bvalq/mnist-icrul |
| insects-mytwu | https://universe.roboflow.com/nirmani/yolo-custome-925 |
| cotton-20xz5 | https://universe.roboflow.com/cotton-nqp2x/bt-cotton |
| furniture-ngpea | https://universe.roboflow.com/minoj-selvaraj/furniture-sfocl |
| cable-damage | https://universe.roboflow.com/st-hedgehog-yusupov-gmail-com/kanaaat |
| animals-ij5d2 | https://universe.roboflow.com/dane-sprsiter/barnyard |
| coins-1apki | https://universe.roboflow.com/labelimg/label_coin |
| apples-fvpl5 | https://universe.roboflow.com/arfiani-nur-sayidah-9lizr/apple-sorting-2bfhk |
| people-in-paintings | https://universe.roboflow.com/raya-al/french-paintings-dataset-d2vbe |
| circuit-voltages | https://universe.roboflow.com/vanitchaporn/circuit-gexit |
| uno-deck | https://universe.roboflow.com/joseph-nelson/uno-cards |
| grass-weeds | https://universe.roboflow.com/jan-douwe/testbl |
| gauge-u2lwv | https://universe.roboflow.com/evankim9903-gmail-com/gauge_detection |
| sign-language-sokdr | https://universe.roboflow.com/david-lee-d0rhs/american-sign-language-letters |
| valentines-chocolate | https://universe.roboflow.com/chocolates/valentines-chocolates |
| fish-market-ggjso | https://universe.roboflow.com/commolybroken/dataset-z2vab |
| lettuce-pallets | https://universe.roboflow.com/lettucedetector |
| shark-teeth-5atku | https://universe.roboflow.com/sharks/shark-taxonomy |
| bees-jt5in | https://universe.roboflow.com/jjb-object-detection-projects/bee-detection-pry0w |
| sedimentary-features-9eosf | https://universe.roboflow.com/sedimentary-structures/sedimentary-features-rmadz |
| currency-v4f8j | https://universe.roboflow.com/alex-hyams-cosqx/cash-counter/ |
| trail-camera | https://universe.roboflow.com/my-game-pics/my-game-pics |
| cell-towers | https://universe.roboflow.com/yuyang-li/tower_jointv1 |
| apex-videogame | https://universe.roboflow.com/apex-esoic/apexyolov4 |
| farcry6-videogame | https://universe.roboflow.com/kais-al-hajjih/farcry6-hackathon |
| csgo-videogame | https://universe.roboflow.com/new-workspace-rp0z0/csgo-train-yolo-v5 |
| avatar-recognition-nuexe | https://universe.roboflow.com/new-workspace-0pohs/avatar-recognition-rfw8d |
| halo-infinite-angel-videogame | https://universe.roboflow.com/graham-doerksen/halo-infinite-angel-aim |
| team-fight-tactics | https://universe.roboflow.com/lamaitw/lama-itw/ |
| robomasters-285km | https://universe.roboflow.com/etp5501-gmail-com/robomasters-colored |
| tweeter-posts | https://universe.roboflow.com/tweeter/tweeter |
| tweeter-profile | https://universe.roboflow.com/wojciech-blachowski/tweets |
| document-parts | https://universe.roboflow.com/new-workspace-vf0ib/calpers |
| activity-diagrams-qdobr | https://universe.roboflow.com/public1/activity-diagrams-s7sxv |
| signatures-xc8up | https://universe.roboflow.com/signature-detection/signaturesdetectiob |
| paper-parts | https://universe.roboflow.com/object-detection-alan-devera/object-detection-ycqjb |
| tabular-data-wf9uh | https://universe.roboflow.com/rik-biswas/tabular-data-dh4ek |
| paragraphs-co84b | https://universe.roboflow.com/new-workspace-4vus5/singlemcq |
| underwater-pipes-4ng4t | https://universe.roboflow.com/underwaterpipes/underwater_pipes_orginal_pictures |
| aquarium-qlnqy | https://universe.roboflow.com/brad-dwyer/aquarium-combined |
| peixos-fish | https://universe.roboflow.com/nasca37/peixos3 |
| underwater-objects-5v7p8 | https://universe.roboflow.com/workspace-txxpz/underwater-detection |
| coral-lwptl | https://universe.roboflow.com/nikita-manolis-je2ii/coral-growth-form |
| aerial-pool | https://universe.roboflow.com/a-s/uwh |
| secondary-chains | https://universe.roboflow.com/cc_moon/secondaries |
| aerial-spheres | https://universe.roboflow.com/mevil-crasta/annotating-spheres---11-04 |
| soccer-players-5fuqs | https://universe.roboflow.com/ilyes-talbi-ptwsp/futbol-players |
| weed-crop-aerial | https://universe.roboflow.com/new-workspace-csmgu/weedcrop-waifl |
| aerial-cows | https://universe.roboflow.com/omarkapur-berkeley-edu/livestalk |
| cloud-types | https://universe.roboflow.com/research-project/shallow-cloud |
| stomata-cells | https://universe.roboflow.com/new-workspace-fditd/stomata02 |
| bccd-ouzjz | https://universe.roboflow.com/team-roboflow/blood-cell-detection-1ekwu |
| parasites-1s07h | https://universe.roboflow.com/graduao/sistema-para-analise-de-ovos-de-parasitas-em-amostra-de-agua-e-sangue |
| cells-uyemf | https://universe.roboflow.com/new-workspace-86q1t/t03-proyecto-celula-dataset-ampliado |
| 4-fold-defect | https://universe.roboflow.com/kat-laura/defect-detection-gil85 |
| bacteria-ptywi | https://universe.roboflow.com/terada-shoma/gram-positive-bacteria |
| cotton-plant-disease | https://universe.roboflow.com/quandong-qian/desease-cotton-plant |
| mitosis-gjs3g | https://universe.roboflow.com/20029-tkmce-ac-in/mitosis-dwute |
| phages | https://universe.roboflow.com/danish2562022-gmail-com/microglia_rgb/ |
| liver-disease | https://universe.roboflow.com/liver-t5yvf/liver-diseases |
| asbestos | https://universe.roboflow.com/ahmad-rabiee/asbest91 |
| thermal-dogs-and-people-x6ejw | https://universe.roboflow.com/joseph-nelson/thermal-dogs-and-people |
| solar-panels-taxvb | https://universe.roboflow.com/new-workspace-rt1da/solarpaneldetectmodel |
| radio-signal | https://universe.roboflow.com/danil/ |
| thermal-cheetah-my4dp | https://universe.roboflow.com/brad-dwyer/thermal-cheetah |
| x-ray-rheumatology | https://universe.roboflow.com/publictestsite/xray-rheumatology-images-public |
| acl-x-ray | https://universe.roboflow.com/objectdetection-9lu9z/detectron2-acl |
| abdomen-mri | https://universe.roboflow.com/xinweihe/circle-3train |
| axial-mri | https://universe.roboflow.com/tfg-2nmge/axial-dataset |
| gynecology-mri | https://universe.roboflow.com/yuanyuanpei7/5-8w |
| brain-tumor-m2pbp | https://universe.roboflow.com/yousef-ghanem-jzj4y/brain-tumor-detection-fpf1f |
| bone-fracture-7fylg | https://universe.roboflow.com/science-research/science-research-2022:-bone-fracture-detection |
| flir-camera-objects | https://universe.roboflow.com/thermal-imaging-0hwfw/flir-data-set |


































































































