【YOLO】YOLOXトレーニングCOCOデータセット

別の Yolox 記事、Voc データ セットでの AP の解決は 0 です: YOLOX のトレーニング時に AP を解決するのは 0 です

友人が coco データセットをトレーニングしているとき、AP は 0 になります。実際、私はこの問題に遭遇したことがありません。ここでテストしたところ、正常に実行できました。しかし、何人かの友人が質問したので、ここでその方法をまとめておきます。 Coco データセットをトレーニングしましょう。


次のように進めます

  • まず、Coco データセットが正しい形式であることを確認してください。
    Animals_Coco
       ├─annotations
       ├─train2017
       └─val2017
    
    annotationsフォルダーの下に2 つのinstances_train2017.json重要なファイルが含まれておりトレーニングと検証用の画像データinstances_val2017.json
    が含まれていますtrain2017val2017
  • 次に、 を変更しyolox/data/datasets/coco_classes.py、独自のデータセットのカテゴリに変更します。
    COCO_CLASSES = (
    "tiger",
    "panda",
    )
    
  • その後、必要に応じて変更しますyolox/exp/yolox_base.py(または変更しません)。
    (这里应该也可以不用修改,因为后面的exps/example/yolox_voc/yolox_s.py会对self.num_classes进行重载)
    将self.num_classes修改为自己的类别数
    self.num_classes = 2 (我的数据集是 2)
    
    你还可以修改 self.inputsize, self.random_size 改变训练尺寸大小
    
    你还可以修改 self.test_size 改变测试的尺寸大小
    
  • 改訂exps/example/custom/yolox_s.py
    修改数据集地址 self.data_dir
    self.data_dir = "D:/Z_Data/Animals_Coco"
    
    修改类别 self.num_classes
    self.num_classes = 2
    
    剩下的 self.max_epoch,self.data_num_workers,self.eval_interval 可自行选择修改
    
  • 最後にtools/train.pyパラメータ設定を変更します。
    设置 default="Animals_Coco", 训练后结果就会保存在 tools/YOLOX_outputs/Animals_Coco下
    parser.add_argument("-expn", "--experiment-name", type=str, default=None)
    
    设置 model_name,我也不太清楚这是不是必须项 (我觉得不是)
    parser.add_argument("-n", "--name", type=str, default="yolox-s", help="model name")
    
    设置 batch_size
    parser.add_argument("-b", "--batch-size", type=int, default=64, help="batch size")
    
    设置gpu,因为我只有一张卡,所以设 default=0
    parser.add_argument(
        "-d", "--devices", default=0, type=int, help="device for training"
    )
    
    设置你的数据配置的路径,default="../exps/example/custom/yolox_s.py"
    parser.add_argument(
        "-f",
        "--exp_file",
        default="../exps/example/custom/yolox_s.py",
        type=str,
        help="plz input your expriment description file",
    )
    
    设置预训练权重路径, default="../weights/yolox_s.pth"
    parser.add_argument("-c", "--ckpt", default="../weights/yolox_s.pth", type=str, help="checkpoint file")
    

上記の操作を行った後、下図のように正常に動作していることが分かりますが、ここに画像の説明を挿入
この一連の操作を行ってもAPが0のままであれば、jsonファイルの内容に問題があると個人的に推測しています。

テスト結果を見てみましょうここに画像の説明を挿入
画像の説明を追加してください

画像の説明を追加してください
一般的に言えば、速度と精度はまだ問題ありません。


最後に、トレーニング プロセスでTypeError: 'numpy.float64' object cannot be interpreted as an integer
見つかっAnaconda3\Lib\site-packages\pycocotools\cocoeval.py た場合は pycahrm行を変更External Librariesします。site-packages\pycocotools\cocoeval.py507、508

self.iouThrs = np.linspace(.5, 0.95, np.round((0.95 - .5) / .05) + 1, endpoint=True)
self.recThrs = np.linspace(.0, 1.00, np.round((1.00 - .0) / .01) + 1, endpoint=True)

修改为

self.iouThrs = np.linspace(.5, 0.95, 10, endpoint=True)
self.recThrs = np.linspace(.0, 1.00, 101, endpoint=True)

おすすめ

転載: blog.csdn.net/weixin_42166222/article/details/119739396