目次
デフォルトでは、誰もが Anaconda と Pycharm をインストールしており、基本的な操作を知っています。
1. 新しい環境を作成する
cmd ウィンドウを開き、conda create -n yolov5 python=3.7 と入力し、Enter キーを押します。
な
しばらく待って、y と入力し、Enter キーを押します
な
しばらくすると、done が表示され、新しい環境が正常に作成されたことを示します。
な
名前は自由に選べますが、私と同じ名前を選ぶことをお勧めします.誰もが初めて始めることができるように、後続のすべての操作が私と一致することをお勧めします. Python インタープリターのバージョンは 3.7 を選択する必要があります. 、3.10 を選択する前に未知の問題に遭遇したため
2.Pytorch ライブラリをインポートする
私のパソコンはR7-5800HのThinkbook14pで、独立したディスプレイがないのでCPU版のPyTorchを使っています
まず、コマンド ウィンドウに conda activate yolov5 と入力し、Enter キーを押して、作成したばかりの新しい環境をアクティブ化します。
な
パスの前に (yolov5) が表示されていれば、アクティベーションは成功です。
な
次に、PyTorch公式 Web サイトPyTorchに入り、次の構成を選択します。
な
コードの最後の行をコマンド ウィンドウにコピーし、Enter キーを押します。
な
Wait for a while, enter y, press Enter; wait for a while, done と表示され、Pytorch ライブラリが正常にインポートされたことを示します!
3. 新規プロジェクト
まず、この Web サイトから yolov5 インストール パッケージmirrors/ultralytics/yolov5 GitCodeをダウンロードします。
ダウンロードが完了したら、解凍し、解凍したフォルダーを右クリックして、[Pycharm プロジェクトとして開く] を選択します。
な
開いた Pycharm インターフェイスは次のようになります。
な
右下隅にある <インタープリターなし> をクリックし、[インタープリターの追加] を選択します。
ポップアップ インターフェイスの左側にある Conda 環境をクリックし、既存の環境をクリックして、以前に作成した新しい環境で python 実行可能ファイルを選択し、[OK] をクリックします。
な
Pycharm インターフェイスの右下隅が Python3.7 (yolov5) になっていることがわかります。
な
4. テスト
yolov5 の実行に必要なさまざまなパッケージが含まれている requirements.txt ファイルを開きます。ターミナルで実行するコマンドの最初の行をコピーします
な
このプロセスは、ネットワークの速度に応じて高速または低速になる可能性があります。静かに待ちます〜いくつかのパッケージのインストールに問題がある可能性がありますが、問題ではありません。CSDN でエラー情報を検索して解決策を見つけることができます!
すべてをインストールしたら、左側の detect.py ファイルを実行します
な
操作後にエラーが発生せず、次の 2 つの処理済みの画像が左側の runs\detect\exp ディレクトリに表示される場合は、前の操作に問題がないことを意味します。おめでとうございます! 準備は終わり
な
な
5. データセットを準備する
私の方法に従って、yolov5-master パスの下に次の空のフォルダーを作成し、その後の管理を容易にしてください。
な
この記事でブロガーから提供された猫と犬の認識データ セットのトレーニング データZhihu - Zhihuをダウンロードしました。解凍後の写真は 25000 枚あります。最初の 121 枚の猫の写真を選択し、トレーニング セットとして yolov5-master\own_datas\images\train フォルダーにコピーしました。
な
次に、Pycharm ターミナルで pip install pyqt5 labelme と入力し、Enter キーを押します。これら 2 つのライブラリは、データセットのラベル付けに使用されます
な
インストールが完了したら、ターミナルに labelme と入力し、Enter キーを押します。
な
ウィンドウがポップアップし、このウィンドウでトレーニング セットがマークされます。
な
左上隅にある Open Dir をクリックし、yolov5-master\own_datas\images\train フォルダーを選択すると、トレーニング セット内の画像が表示されます。右クリックして [長方形を作成] を選択し、猫を写真に収めます。
な
ボックスの選択が完了したら、タグ名 cat を入力し、[OK] をクリックすると、タグが保存されます。複数の猫がいる場合は、引き続き選択してください
な
額縁全体を選択したら、左側の [次の画像] をクリックし、プロンプトに従って、ラベル ファイルをパス yolov5-master\own_datas\labels\json に保存します。ファイルの形式は .json です。
約30分後…
すべての写真がマークされた後、yolov5-master\own_datas\labels\json フォルダーのトレーニング セットで、同じ数の写真に対応する121 の .json ファイルを確認できます。
な
yolov5 は .txt 形式のタグしか認識できず、.json ファイルを .txt ファイルに変換する必要があるため、まだ終わっていません。
yolov5-master フォルダーに新しい json2txt.py ファイルを作成します。
な
次のコードをコピーします。
import json
import os
name2id = {'cat': 0} # 标签名称
def convert(img_size, box):
dw = 1. / (img_size[0])
dh = 1. / (img_size[1])
x = (box[0] + box[2]) / 2.0 - 1
y = (box[1] + box[3]) / 2.0 - 1
w = box[2] - box[0]
h = box[3] - box[1]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h)
def decode_json(json_floder_path, json_name):
txt_name = 'C:/Users/xieji/Downloads/yolov5-master/own_datas/labels/txt/' + json_name[0:-5] + '.txt'
# txt文件夹的绝对路径
txt_file = open(txt_name, 'w')
json_path = os.path.join(json_floder_path, json_name)
data = json.load(open(json_path, 'r', encoding='gb2312', errors='ignore'))
img_w = data['imageWidth']
img_h = data['imageHeight']
for i in data['shapes']:
label_name = i['label']
if (i['shape_type'] == 'rectangle'):
x1 = int(i['points'][0][0])
y1 = int(i['points'][0][1])
x2 = int(i['points'][1][0])
y2 = int(i['points'][1][1])
bb = (x1, y1, x2, y2)
bbox = convert((img_w, img_h), bb)
txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')
if __name__ == "__main__":
json_floder_path = 'C:/Users/xieji/Downloads/yolov5-master/own_datas/labels/json/'
# json文件夹的绝对路径
json_names = os.listdir(json_floder_path)
for json_name in json_names:
decode_json(json_floder_path, json_name)
コメントされている 3 つの場所は、調整が必要な場所です。誰もがまったく同じ方法で私に従っている場合は、C:/Users/xieji/Downloads/ を自分のパスに置き換えてください。
json2txt.py を実行すると、終了後に yolov5-master\own_datas\labels\txt フォルダーに対応する 121 個の .txt ファイルが表示されます。
な
最後のステップは、txt フォルダー内のすべてのファイルを yolov5-master\own_datas\labels\train フォルダーにコピーすることです。このステップを忘れないでください!そうしないと、トレーニング中にエラーが報告され、ラベルが見つかりません。
六、設定ファイルを修正する
最初に2つのファイルをコピーします
yolov5-master\data パスで coco128.yaml ファイルを見つけて、yolov5-master\own_datas パスにコピーし、名前を cat.yaml に変更します。
coco128 データセットではなく、独自の猫データセットを使用しているためです。本当は変えなくてもいいけど、分かりやすいように変えてみる
yolov5-master\models パスで yolov5s.yaml ファイルを見つけて、yolov5-master\own_datas パスにもコピーします。yolov5s を選択した理由は、あまり効果的ではありませんが、より高速だからです.以前に yolov5l を使用したことがあり、一晩中実行する必要があります...
な
な
cat.yaml ファイルを開きます。最初に変更する必要があるのは、次の 3 行です。
# path: ../datasets/coco128 # dataset root dir
train: own_datas/images/train # train images (relative to 'path') 128 images
val: own_datas/images/train # val images (relative to 'path') 128 images
最初の行をコメントアウトします
2 行目と 3 行目の相対パスは、まったく同じ方法で私に従っている場合は、私に従ってください
次に、次の 2 行を変更します。
nc: 1 # number of classes
names: ['cat'] # class names
nc はカテゴリの数、names はカテゴリ名です。まったく同じように私をフォローするなら、私に従ってください
coco128 データセットを使用しないため、最後にこの行をコメントアウトします。コメントしなくてもいい、どうでもいい、ただの強迫性障害だから
# download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
yolov5s.yaml ファイルを開き、次の行を変更する必要があります。
nc: 1 # number of classes
7. トレーニング
train.py ファイルを開く
な
まず、これらの行のデフォルトを変更します。
parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
parser.add_argument('--cfg', type=str, default='own_datas/yolov5s.yaml', help='model.yaml path')
parser.add_argument('--data', type=str, default='own_datas/cat.yaml', help='dataset.yaml path')
まったく同じように私をフォローするなら、私に従ってください
次に、この行のデフォルトを変更します。
parser.add_argument('--epochs', type=int, default=150)
デフォルト値は 300 ですが、トレーニング時間が長くなります。ここでは 150 に変更しました。
最後に変更するのは、この行のデフォルトです。
parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')
私のCPUには8コアと16スレッドがあるので、最初はデフォルト値の8を使用しました.この値を私のコンピューターのCPUコアの数に設定すると、トレーニング速度が最も速くなることが他の場所で見られましたが、エラートレーニング中に報告されます.おそらくメモリバーストを意味し、その後0に変更しました
よし、トレーニング開始!
train.py を実行して待ってください...ファンはノンストップで回転します...
な
3 時間トレーニングしました... CPU の使用が非常に遅いです...最後のエポックの後、[email protected] は 0.995 で停止し、[email protected]:0.95 は 0.904 で停止しました。非常に良好です。
な
トレーニング関連の情報は、yolov5-master\runs\train\exp フォルダーで確認できます。
な
weights フォルダー内の best.pt ファイルはトレーニング済みのモデルで、後でテストで使用されます。
8、サンプルテスト
モデルのトレーニングに 3 時間かかりました。どのように機能するか見てみましょう。
テスト用に撮影した猫の動画を使用しました 写真だけでなく、自分で使用することもできます(実際、以前にダウンロードしたデータ セットを直接使用できます。20,000 枚以上の写真を気軽に使用できます)
テスト ファイルを yolov5-master\own_datas\images\test フォルダーに配置します。
な
detect.py ファイルを開く
な
次の 2 行のデフォルトを変更します。
parser.add_argument('--weights', nargs='+', type=str, default='runs/train/exp/weights/best.pt', help='model path(s)')
parser.add_argument('--source', type=str, default='own_datas/images/test', help='file/dir/URL/glob, 0 for webcam')
最初のデフォルトは、前述のトレーニング済みモデル ファイルの相対パスです。
2 番目のデフォルトは、テスト ファイルが保存されているフォルダーの相対パスです。
まったく同じように私をフォローするなら、私に従ってください
detect.py を実行し、しばらくお待ちください...
終了後、yolov5-master\runs\detect\exp2 フォルダーで結果を確認できます。
な
ビデオを直接アップロードすることはできません。ビデオからいくつかの写真を撮ってお見せします。
な
な
な
100 枚以上の写真しか訓練されておらず、比較的貧弱な yolov5s ネットワークが使用されています。
9. 結論
私自身は初心者で、深層学習を始めたばかりで、このプロジェクトに数日間取り組んでおり、多くの知識を得ることができました。
下書きを書いた後、今までの作業をすべて削除して、書いた手順通りに再実行したところ、スムーズで問題ありませんでした。
私の工程によれば、1日で完成できそうです(もっと独立したディスプレイがあれば、GPUで実行した方が速いでしょう)。
問題が発生した場合は、CSDN で検索して、自分の知恵を組み合わせれば解決できると思います。
主にこのブログを参考にさせていただきます、ありがとうございます!