yolov5 画像セグメンテーションを使用して文字キーイングを行う

序文

yolov5 の 6.2 バージョンでは、前回の記事で述べた分類モデルが更新されるだけでなく、画像セグメンテーション モデルも更新されます。公式チュートリアルと使い方が公開される前に (2022/09/19)、公式 Partial を元に作成しました推論スクリプトの修正により、画像分割に基づく単純な文字キーイングが実現されます。
注: この記事で使用されているモデルは、公式の事前トレーニング済みモデルである yolov5s-seg です。

結果の表示

早速、まずは写真を載せていきましょう!
1 つ目は公式の画像セグメンテーション推論の結果です。小さなパートナーの情報が公開されないように、ここにモザイクがあります:
ここに画像の説明を挿入
2 つ目は、修正後に必要な文字マット化の結果です。
ここに画像の説明を挿入

達成方法

新しいバージョンの yolov5 ソース コードのクローンを作成し、それを解凍した後 (これについては説明しません)
1. まず、yolov5-master\utils の下にある Lots.py を変更します。

#plots.py
def masks(self, masks, colors, im_gpu=None, alpha=1):

ここのアルファ値は 1 に変更する必要があります。アルファはマスク、つまりマスク レイヤの透明度に影響します。デフォルトは 0.5 で、次の効果になります。

ここに画像の説明を挿入
暗い半円は明らかに今回の効果と一致していないことがわかります。

次に、コードの数行を変更する必要があります。わかりやすくするために、変更内容を元のファイルと直接比較し、スクリーンショットを撮ります。

ここに画像の説明を挿入
つまり、次のように変更されます。

masks = masks.unsqueeze(3)  # shape(n,h,w,1)
masks_color = masks * (colors * alpha)  # shape(n,h,w,3)
inv_alph_masks = (masks * alpha).cumprod(0)  # 1-masks*alpha
mcs = (masks_color * inv_alph_masks).sum(0) * 2  # mask color summand shape(n,h,w,3)
im_gpu = im_gpu.flip(dims=[0])  # flip channel
im_gpu = im_gpu.permute(1, 2, 0).contiguous()  # shape(h,w,3)
im_gpu = im_gpu * inv_alph_masks[0] #no mcs

このうち、最初に mcs (つまり、カラーリング ブロック) を削除し、次に背景を削除して前景を保持したいため、1 マスクにアルファを乗算したものを、アルファを乗算したマスクに変更する必要があります。同時に、最大のオブジェクトのみを取得するために、inv_alph_masks の -1 (すべて取得) を 0 (最初のオブジェクトのみ取得) に変更します。

理解を深めるために、mcsinv_alph_masksの効果を次に示します。
ここに画像の説明を挿入
ここに画像の説明を挿入
2. yolov5-master\segmant\predict.py ファイルを変更します。

ここに画像の説明を挿入

上記の 2 行のコードの意味は、ここでマスク内の最初のオブジェクト、つまり検出値が最も大きいオブジェクトを取得することですが、他のオブジェクトは必要ありません (これはデマンド処理に依存します)。 , ターゲット検出枠を削除したい場合は、次の 4 行を追加するだけです。コードをコメントアウトするだけです。

3. 予測:

#D:\yolov5-master-seg\yolov5-master\segment在当前目录下启动命令行
python predict.py --weights yolov5s-seg.pt --source 3014193119028716040.avi --class 0

–source の後に、必要なビデオ ファイルまたはビデオ ソースが続きます。
–class 0 は、0 の分類のみが予測されることを示します。ここでの分類は coco データ セットから取得され、0 は人を意味するため、人の画像セグメンテーションのみが実行されます。
推論の結果は次のとおりです。

Speed: 0.4ms pre-process, 8.3ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to ..\runs\predict-seg\exp24

rtx4000 グラフィックス カードを使用しており、速度は非常に理想的です。また、ここで言及しますが、yolov5s の推論速度は yolov5n より少し遅い (約 2ms) ものの、効果ははるかに優れています。あなたの実際の状況に合わせて。

おすすめ

転載: blog.csdn.net/weixin_43945848/article/details/126926929