YOLOv7 はクラウド GPU を使用して独自のデータセットをトレーニングします

使用しているクラウド GPU は Hengyuan Cloud で、ヘルプ ドキュメントは非常に詳細です. 時間があれば、クラウド GPU の使用方法に関する別の記事を書き、グラフィック カードを持っていない学生がクラウドを使用したい場合に役立つことを願っています. GPU。ポイントに行きましょう

私はクラウド GPU+pycharm プロフェッショナル版を使用しています (コミュニティ版はリモートでリンクできません。学生の場合、教育用メールボックスを使用してプロフェッショナル版を申請できます。申し込み)

まず、YOLOv7 (公式) のコード リンクを貼り付けます。

https://github.com/WongKinYu/yolov7

ただし、github にアクセスすると不安定なことが多く、理解が深まります。そのため、オンライン ディスクへのリンクも貼り付けます (速度もある程度遅くなりますが)。重量ファイルは .zip 形式で、ダウンロード後に .pt サフィックスに変更できます。コードのダウンロード時間は約 7.17 です。

体重リンク リンク: https://pan.baidu.com/s/18FyZKy1u4QOUnAH0nGkjrg 
抽出コード: oxle

コードリンク: https://pan.baidu.com/s/13wwiix8q75fHDZzEULc9yw 
抽出コード: rto5

pycharm のインタープリター構成:

train.pyのパラメータ設定

その中で、weights cfg data hyp を設定する必要があります.batch-size が大きすぎると、ビデオカードのメモリが不足しているというエラーが発生する場合があります.workers については、https://blog.csdn.net を参照してください/フレームボックス/記事/詳細/123011129

ウェイト

上記のリンクを使用して、重量ファイルをダウンロードし、サーバーにアップロードしてください。私は yolo7.pt のみを使用しました。興味がある場合は、他のウェイト ファイルを試すことができますが、train_aux.py を使用することもできます。

cfg と hyp

 yolov7 モデル ファイルは、コード内で yaml ファイルを使用しますが、nc を独自のデータ セットのカテゴリ数に変更する必要があります。ハイパーパラメータもデフォルトのファイルです。

 

 データ

 データセット ファイルの場合は、データ ファイルの下にある coco.yaml をコピーして、mydata.yaml という名前を付けます。このうち、train_list.txt は自身のデータセット images/train の絶対パス、val_list.txt は images/val の絶対パスです。ここに相対パスを書きますが、この相対パスは mydata.yaml ファイルではなく、train.py ファイルからの相対パスであることに注意してください。もちろん絶対パスで間違いはありませんが、相対パスでエラーが出るというブロガーを見たので試してみたところ、../train_list.txtを使用するとエラーになり、プログラムが見つけられませんでした。ファイル。

データセット train と val の images フォルダー内の画像の絶対パスを自動的に取得します。https: //blog.csdn.net/qq_58355216/article/details/125677147を参照してください。

以下は、train_list.txt を生成するコードです. val_list.txt を生成する場合は、train をパスに変更し、open('./train_list.txt', 'w') as f: を val に変更します

# From Mr. Dinosaur https://blog.csdn.net/qq_58355216/article/details/125677147

import os


def listdir(path, list_name):  
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            listdir(file_path, list_name)
        else:
            list_name.append(file_path)


list_name = []
path = '/hy-tmp/yolov7-main/mydata/images/train'  # 训练集图像所在文件夹的绝对路径
listdir(path, list_name)
print(list_name)

with open('./train_list.txt', 'w') as f:  # 在当前目录下生成train_list.txt文件
    write = ''
    for i in list_name:
        write = write + str(i) + '\n'
    f.write(write)

 ただし、mydata.yaml も YOLOv5 の data パラメータと同じ値に設定して、トレーニングを開始することもできます。(では、これら2つの方法の違いは何ですか?知っている人はコメント欄で教えてください)

 訓練

基本的に、設定が必要なパラメータは問題なく、トレーニングを開始できます。変更したプロジェクトをクラウドと同期することを忘れないでください。そうすれば、train.py ファイルを実行できます。

実行できるかどうかをテストするだけなので、エポックは 30 に設定されています。トレーニング結果は、runs/train/exp に保存されます。

 エラーを報告する

1. Hengyuan クラウド GPU トレーニングを使用すると表示されます (環境の問題かどうかはわかりません)。

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

ターミナルに次のコードを入力します

apt-get install libglib2.0-dev 

2. RuntimeError: バッチ サイズが大きすぎると、CUDA out of memory が表示されます。 

3. エラー報告については、https://blog.csdn.net/qq_36944952/article/details/124683408を参照してください。

AttributeError:module ‘distutils’ has no attribute 'version

次のコードを使用します

pip uninstall setuptools
pip install setuptools==59.5.0 //需要比你之前的低 

テスト

テストファイルのパラメータ設定

重み付けは、30 回トレーニングされた best.pt ファイルを使用し、画像フォルダーの推論/画像を予測し、正しいパスに注目します。--view-img パラメーターのデフォルトは false であり、true に設定すると予測結果ウィンドウを表示できます (ただし、detect.py ファイルをクラウドで実行すると、表示でエラーが報告され、多くのチュートリアルは未確認です(チュートリアルでは mobaxterm を使用するように指示されています)、解決方法を知っている場合は、その方法のコメント欄で教えてください)。プロジェクトと名前は、結果の保存パスruns/detect/exp.

 結果

エラーを報告する

1. detect.py をサーバーにアップロードするのを忘れたため、常に実行に失敗しました。次のエラーを報告する

subprocess.CalledProcessError: Command ‘git tag’ returned non-zero exit status 128

パラメータ設定に問題がある可能性もあり、じっくりと確認できます

ps 上記は単純に yolov7 のトレーニングです。記事に誤りがある場合、またはより良い洞察がある場合はお知らせください。

おすすめ

転載: blog.csdn.net/weixin_43764678/article/details/125863456