diff --git a/detect.py b/detect.py
index 537f47dfa..8dbb656ed 100644
--- a/detect.py
+++ b/detect.py
@@ -175,7 +175,7 @@ if __name__ == '__main__':
     parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference')
     opt = parser.parse_args()
     print(opt)
-    check_requirements(exclude=('tensorboard', 'pycocotools', 'thop'))
+    check_requirements(exclude=('tensorboard', 'thop'))
 
     if opt.update:  # update all models (to fix SourceChangeWarning)
         for opt.weights in ['yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt']:
diff --git a/hubconf.py b/hubconf.py
index bedbee18f..429e61bba 100644
--- a/hubconf.py
+++ b/hubconf.py
@@ -31,7 +31,7 @@ def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbo
     from utils.torch_utils import select_device
 
     check_requirements(requirements=Path(__file__).parent / 'requirements.txt',
-                       exclude=('tensorboard', 'pycocotools', 'thop', 'opencv-python'))
+                       exclude=('tensorboard', 'thop', 'opencv-python'))
     set_logging(verbose=verbose)
 
     fname = Path(name).with_suffix('.pt')  # checkpoint filename
diff --git a/requirements.txt b/requirements.txt
index a20fb6ad0..b413ec01b 100755
--- a/requirements.txt
+++ b/requirements.txt
@@ -26,5 +26,5 @@ pandas
 
 # extras --------------------------------------
 # Cython  # for pycocotools https://github.com/cocodataset/cocoapi/issues/172
-pycocotools>=2.0  # COCO mAP
+# pycocotools>=2.0  # COCO mAP
 thop  # FLOPs computation
diff --git a/test.py b/test.py
index 6a2a4e47c..515b984bc 100644
--- a/test.py
+++ b/test.py
@@ -260,6 +260,7 @@ def test(data,
             json.dump(jdict, f)
 
         try:  # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb
+            check_requirements(['pycocotools'])
             from pycocotools.coco import COCO
             from pycocotools.cocoeval import COCOeval
 
@@ -311,7 +312,7 @@ if __name__ == '__main__':
     opt.save_json |= opt.data.endswith('coco.yaml')
     opt.data = check_file(opt.data)  # check file
     print(opt)
-    check_requirements(exclude=('tensorboard', 'pycocotools', 'thop'))
+    check_requirements(exclude=('tensorboard', 'thop'))
 
     if opt.task in ('train', 'val', 'test'):  # run normally
         test(opt.data,
diff --git a/train.py b/train.py
index 093a6197f..aad8ff258 100644
--- a/train.py
+++ b/train.py
@@ -495,7 +495,7 @@ if __name__ == '__main__':
     set_logging(opt.global_rank)
     if opt.global_rank in [-1, 0]:
         check_git_status()
-        check_requirements(exclude=('pycocotools', 'thop'))
+        check_requirements(exclude=['thop'])
 
     # Resume
     wandb_run = check_wandb_resume(opt)