検索
ホームページテクノロジー周辺機器AIGitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

物体検出はコンピュータ ビジョンの分野における基本的なタスクですが、適切な Model Zoo がなければどうやってそれを行うことができるでしょうか?

今日は、シンプルで使いやすいターゲット検出アルゴリズム モデル ライブラリ miemiedetection を紹介します。現在、GitHub で 130 個のスターを獲得しています

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

コードリンク: https://github.com/miemie2013/miemiedetection

miemiedetection は、YOLOX をベースに開発された個人検出ライブラリで、PPYOLO、PPYOLOv2、PPYOLOE、FCOS などのアルゴリズムもサポートしています。

YOLOX の優れたアーキテクチャのおかげで、miemiedetection でのアルゴリズムのトレーニング速度は非常に速く、データの読み取りがトレーニング速度のボトルネックになることはなくなりました。

コード開発で使用される深層学習フレームワークは pyTorch です。これは、変形可能な畳み込み DCNv2、行列 NMS、およびその他の難しい演算子を実装し、単一マシンのシングルカード、単一マシンのマルチカード、およびマルチマシン マルチカード トレーニング モード (マルチカード トレーニング モードには Linux システムを推奨)、Windows および Linux システムをサポートします。

miemiedetection はインストール不要の検出ライブラリであるため、コードを直接変更して実行ロジックを変更できるため、ライブラリに新しいアルゴリズムを追加することも簡単です。

著者は、将来的にはさらに多くのアルゴリズムのサポート (および女性用の衣類) が追加される予定であると述べています。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

#アルゴリズムは本物であることが保証されています

モデルを再現するために最も重要なことは、基本的に精度がオリジナルのものと同じです。

まず、PPYOLO、PPYOLOv2、PPYOLOE の 3 つのモデルを見てみましょう。著者はすべて、損失アライメントと勾配アライメントの実験を受けています。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

証拠を保存するために、ソース コード内の *.npz の読み取りと書き込みの部分がコメント化されており、すべて残されています。アライメント実験のコードから。

また、著者はパフォーマンス調整のプロセスを詳細に記録しました。初心者にとって、この道に従うことは良い学習プロセスでもあります。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

すべてのトレーニング ログも記録され、ウェアハウスに保存されます。これは、PPYOLO シリーズ アルゴリズムの再現が正確であることを証明するのに十分です。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

最終的なトレーニング結果は、再現された PPYOLO アルゴリズムが元のウェアハウスと同じ損失と勾配を持っていることを示しています。

さらに、著者は、元のウェアハウスと miemiedetection 転移学習 voc2012 データセットの使用も試みましたが、(同じハイパーパラメータを使用して) 同じ精度も得られました。

元の実装と同じで、同じ学習率、同じ学習率減衰戦略 Warm_piecewisedecay (PPYOLO および PPYOLOv2 で使用) および Warm_cosinedecay (PPYOLOE で使用) を使用し、同じ指数移動平均 EMA 、同じデータ前処理方法、同じパラメータ L2 重み減衰、同じ損失、同じ勾配、同じ事前学習モデル、同じ精度が得られた転移学習。

誰もが素晴らしい体験をできるよう、十分な実験を行い、多くのテストを行いました。

998 または 98 はありません。スターをクリックするだけで、すべてのターゲット検出アルゴリズムを無料で持ち帰ることができます。

モデルのダウンロードと変換

モデルを実行したい場合、パラメーターは非常に重要です。作成者は、変換された事前トレーニング pth 重みファイルを提供します。 Baidu Netdisk から直接ダウンロードできます。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えますリンク: https://pan.baidu.com/s/1ehEqnNYKb9Nz0XNeqAcwDw

抽出コード: qe3i

または、以下の手順に従って取得します。

最初の手順では、重みファイルをダウンロードし、プロジェクトのルート ディレクトリで実行します (つまり、ファイルをダウンロードします。Windows ユーザーは次の手順を使用できます)。 wget をダウンロードするには Thunder またはブラウザを使用します。リンクは、美しさを示すためにここにあります。ppyoloe_crn_l_300e_coco のみが例として使用されています):

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

# word pretrained は ImageNet バックボーン ネットワークで事前にトレーニングされており、PPYOLO、PPYOLOv2、PPYOLOE はこれらの重みをロードして COCO データ セットをトレーニングします。残りは COCO で事前トレーニングされたモデルです。

2 番目のステップである重みの変換は、プロジェクトのルート ディレクトリで実行します:

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えますGitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

各パラメータの意味は次のとおりです:

- -f は使用される構成ファイルを表します。

- -c は読み取りソース重みファイルを表します;

- -oc は出力 (保存された) pytorch 重みファイルを表します;

- -nc はデータ セット内のカテゴリの数を表します;

- --only_backbone True の場合、バックボーン ネットワークの重みのみを変換することを意味します ;

実行後、変換された *.pth 重みファイルがプロジェクトのルート ディレクトリに取得されます。

ステップバイステップ チュートリアル

次のコマンドのほとんどはモデルの構成ファイルを使用するため、最初に構成ファイルについて詳しく説明する必要があります。 。

mmdet.exp.base_exp.BaseExp は構成ファイルの基本クラスであり、モデルの取得方法を示す get_model() などの一連の抽象メソッドを宣言する抽象クラスです。モデルの取得方法を示すget_data_loader()、学習済みデータローダの取得方法、オプティマイザの取得方法を示すget_optimizer()など。

mmdet.exp.datasets.coco_base.COCOBaseExp はデータ セットの構成であり、BaseExp を継承しており、データ セットの構成のみを提供します。このウェアハウスは、COCO アノテーション形式のデータセットのトレーニングのみをサポートしています。

他のアノテーション形式のデータセットは、トレーニング前に COCO アノテーション形式に変換する必要があります (サポートされるアノテーション形式が多すぎると、作業負荷が大きくなりすぎます)。カスタマイズされたデータセットは、miemieLabels を通じて COCO ラベル形式に変換できます。すべての検出アルゴリズム構成クラスは COCOBaseExp を継承します。これは、すべての検出アルゴリズムが同じデータ セット構成を共有することを意味します。

COCOBaseExp の設定項目は次のとおりです。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

このうち

- self.num_classes はデータ セット内のカテゴリの数を表します;

- self.data_dir はデータ セットのルート ディレクトリを表します;

- self.cls_names はデータセットのカテゴリ名ファイルパスを表し、txt ファイルで 1 行がカテゴリ名を表します。カスタム データ セットの場合は、新しい txt ファイルを作成してカテゴリ名を編集し、それを指すように self.cls_names を変更する必要があります。

- self.ann_folder は次のことを表します。データセットのアノテーションファイル ルートディレクトリは self.data_dir ディレクトリにある必要があります;

- self.train_ann はデータセットのトレーニングセットのアノテーションファイル名を表します

- self.val_ann は、データ セットの検証セットのアノテーション ファイル名を表し、self.ann_folder ディレクトリに配置する必要があります。 .ann_folder ディレクトリ;

- self.train_image_folder は、データ セットのトレーニング セットの画像フォルダー名を表し、self.data_dir ディレクトリに配置する必要があります。

- self.val_image_folder は、データ セットの検証セットのイメージ ファイルを表します。フォルダー名は self.data_dir ディレクトリにある必要があります。

VOC 2012 データ セットの場合、データ セットの構成を次のように変更する必要があります。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

さらに、次の構成も変更できます。 exps/ppyoloe/ppyoloe_crn_l_voc2012.py のようにサブクラスの self.num_classes と self.data_dir が削除され、COCOBaseExp の設定が上書きされてしまいます(無効)。

前述のモデルをダウンロードした後、VOC2012 データ セットの self.data_dir ディレクトリに新しいフォルダー annotations2 を作成し、voc2012_train.json と voc2012_val.json をこのファイル フォルダーに配置します。

最後に、COCO データ セット、VOC2012 データ セット、およびこのプロジェクトの配置場所は次のようになります。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

データ セットのルート ディレクトリと miemiedetection-master は同じレベルのディレクトリです。個人的には、データ セットを miemiedetection-master に置くことはお勧めしません。そうしないと、PyCharm を開くときに非常に遅くなります。さらに、複数のプロジェクト (mmdetection、PaddleDetection、AdelaiDet など) がデータ セットを共有する場合、データ セットのパスを設定し、プロジェクト 名前は関係ありません。

mmdet.exp.ppyolo.ppyolo_method_base.PPYOLO_Method_Exp は、特定のアルゴリズムのすべての抽象メソッドを実装するクラスで、すべての抽象メソッドを実装する COCOBaseExp を継承します。

exp.ppyolo.ppyolo_r50vd_2x.Exp は、PPYOLO アルゴリズムの Resnet50Vd モデルの最終構成クラスであり、PPYOLO_Method_Exp を継承します。

# PPYOLOE設定ファイルも同様の構造です。

予測

まず、入力データが画像の場合は、プロジェクトのルート ディレクトリで実行します。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

各パラメータの意味は次のとおりです:

- -f は使用される構成ファイルを表します;

- -c は重みファイルを表します読み取り;

- --path は画像のパスを表します;

- --conf はスコアのしきい値を表し、予測ボックスのみがそれより高くなりますこのしきい値よりも描画されます;

##- --tsize は、予測中に画像を --tsize にサイズ変更する解像度を表します。予測が完了すると、コンソールには結果画像の保存パスが出力され、ユーザーはそれを開いて表示できます。トレーニング カスタム データ セットに保存されたモデルを予測用に使用している場合は、-c をモデルのパスに変更するだけです。

予測がフォルダー内のすべての画像を対象とする場合は、プロジェクトのルート ディレクトリで実行します:

--path を、対応する画像フォルダーのパスに変更します。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます#トレーニング COCO2017 データ セット

ImageNet 事前トレーニング バックボーン ネットワーク トレーニング COCO データ セットを読み取った場合は、プロジェクトのルート ディレクトリで実行します。

1 つのコマンドで、単一マシン 8 カードのトレーニングが直接開始されます もちろん、実際に単一マシン 8 カードのスーパーコンピューターがあることが前提となります。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

各パラメータの意味は次のとおりです:

-f は使用される構成ファイルを表します;

-d はグラフィックス カードの数を表します。

#-b はトレーニング中のバッチ サイズ (すべてのカード) を表します。

-eb評価中のバッチ サイズ (すべてのカード) を表します;

-c は読み取り重みファイルを表します;

--fp16、自動混合精密トレーニング;

--num_machines、マシンの数。単一マシン上で複数のカードを使用してトレーニングすることをお勧めします;

- - 再開はトレーニングを再開するかどうかを示します;

トレーニング カスタム データ セット

収束が速いため、トレーニングのために COCO 事前トレーニング重みを読み取ることをお勧めします。

上記の VOC2012 データセットを例として、ppyolo_r50vd モデルの場合、マシン 1 台とカード 1 枚の場合、次のコマンドを入力してトレーニングを開始します。

トレーニングが何らかの理由で中断され、以前に保存したモデルを読み取ってトレーニングを再開したい場合は、 -c を読みたいモデルへのパスに変更するだけです。 --resume パラメータを追加できます。

2 台のマシンと 2 枚のカード、つまり各マシンに 1 枚のカードがある場合は、マシン 0 で次のコマンドを入力します。 GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

そして、マシン 1 で次のコマンドを入力します。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

上記の 192.168.0.107 を変更するだけです。 0 への 2 つのコマンド マシンの LAN IP で十分です。

マシン 1 台とカード 2 枚の場合は、次のコマンドを入力してトレーニングを開始します: GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

転移学習 VOC2012 データセットでは、ppyolo_r50vd_2x の測定 AP (0.50:0.95) は 0.59、AP (0.50) は 0.82、AP (小) は 0.18 に達する可能性があります。一枚のカードでも複数のカードでもこの結果が得られます。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます 転移学習中は PaddleDetection と同等の精度と収束速度を実現しており、両方の学習ログは train_ppyolo_in_voc2012 フォルダーにあります。 GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

ppyoloe_l モデルの場合は、単一マシンで次のコマンドを入力してトレーニングを開始します (バックボーン ネットワークがフリーズします)

転移学習 VOC2012 データセットでは、ppyoloe_l の測定 AP (0.50:0.95) は 0.66、AP (0.50) は 0.85、AP (小) は 0.28 に達する可能性があります。

評価

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

コマンドと具体的なパラメータは以下のとおりです。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

プロジェクトのルート ディレクトリで実行した結果は次のとおりです。

GitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えます

実行後の精度重みに換算すると0.4%程度の若干のロスになります。

以上がGitHub オープンソース 130+Stars: PPYOLO シリーズに基づいたターゲット検出アルゴリズムを再現する方法を段階的に教えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
特斯拉自动驾驶算法和模型解读特斯拉自动驾驶算法和模型解读Apr 11, 2023 pm 12:04 PM

特斯拉是一个典型的AI公司,过去一年训练了75000个神经网络,意味着每8分钟就要出一个新的模型,共有281个模型用到了特斯拉的车上。接下来我们分几个方面来解读特斯拉FSD的算法和模型进展。01 感知 Occupancy Network特斯拉今年在感知方面的一个重点技术是Occupancy Network (占据网络)。研究机器人技术的同学肯定对occupancy grid不会陌生,occupancy表示空间中每个3D体素(voxel)是否被占据,可以是0/1二元表示,也可以是[0, 1]之间的

基于因果森林算法的决策定位应用基于因果森林算法的决策定位应用Apr 08, 2023 am 11:21 AM

译者 | 朱先忠​审校 | 孙淑娟​在我之前的​​博客​​中,我们已经了解了如何使用因果树来评估政策的异质处理效应。如果你还没有阅读过,我建议你在阅读本文前先读一遍,因为我们在本文中认为你已经了解了此文中的部分与本文相关的内容。为什么是异质处理效应(HTE:heterogenous treatment effects)呢?首先,对异质处理效应的估计允许我们根据它们的预期结果(疾病、公司收入、客户满意度等)选择提供处理(药物、广告、产品等)的用户(患者、用户、客户等)。换句话说,估计HTE有助于我

Mango:基于Python环境的贝叶斯优化新方法Mango:基于Python环境的贝叶斯优化新方法Apr 08, 2023 pm 12:44 PM

译者 | 朱先忠审校 | 孙淑娟引言模型超参数(或模型设置)的优化可能是训练机器学习算法中最重要的一步,因为它可以找到最小化模型损失函数的最佳参数。这一步对于构建不易过拟合的泛化模型也是必不可少的。优化模型超参数的最著名技术是穷举网格搜索和随机网格搜索。在第一种方法中,搜索空间被定义为跨越每个模型超参数的域的网格。通过在网格的每个点上训练模型来获得最优超参数。尽管网格搜索非常容易实现,但它在计算上变得昂贵,尤其是当要优化的变量数量很大时。另一方面,随机网格搜索是一种更快的优化方法,可以提供更好的

因果推断主要技术思想与方法总结因果推断主要技术思想与方法总结Apr 12, 2023 am 08:10 AM

导读:因果推断是数据科学的一个重要分支,在互联网和工业界的产品迭代、算法和激励策略的评估中都扮演者重要的角色,结合数据、实验或者统计计量模型来计算新的改变带来的收益,是决策制定的基础。然而,因果推断并不是一件简单的事情。首先,在日常生活中,人们常常把相关和因果混为一谈。相关往往代表着两个变量具有同时增长或者降低的趋势,但是因果意味着我们想要知道对一个变量施加改变的时候会发生什么样的结果,或者说我们期望得到反事实的结果,如果过去做了不一样的动作,未来是否会发生改变?然而难点在于,反事实的数据往往是

使用Pytorch实现对比学习SimCLR 进行自监督预训练使用Pytorch实现对比学习SimCLR 进行自监督预训练Apr 10, 2023 pm 02:11 PM

SimCLR(Simple Framework for Contrastive Learning of Representations)是一种学习图像表示的自监督技术。 与传统的监督学习方法不同,SimCLR 不依赖标记数据来学习有用的表示。 它利用对比学习框架来学习一组有用的特征,这些特征可以从未标记的图像中捕获高级语义信息。SimCLR 已被证明在各种图像分类基准上优于最先进的无监督学习方法。 并且它学习到的表示可以很容易地转移到下游任务,例如对象检测、语义分割和小样本学习,只需在较小的标记

​盒马供应链算法实战​盒马供应链算法实战Apr 10, 2023 pm 09:11 PM

一、盒马供应链介绍1、盒马商业模式盒马是一个技术创新的公司,更是一个消费驱动的公司,回归消费者价值:买的到、买的好、买的方便、买的放心、买的开心。盒马包含盒马鲜生、X 会员店、盒马超云、盒马邻里等多种业务模式,其中最核心的商业模式是线上线下一体化,最快 30 分钟到家的 O2O(即盒马鲜生)模式。2、盒马经营品类介绍盒马精选全球品质商品,追求极致新鲜;结合品类特点和消费者购物体验预期,为不同品类选择最为高效的经营模式。盒马生鲜的销售占比达 60%~70%,是最核心的品类,该品类的特点是用户预期时

研究表明强化学习模型容易受到成员推理攻击研究表明强化学习模型容易受到成员推理攻击Apr 09, 2023 pm 08:01 PM

​译者 | 李睿 审校 | 孙淑娟​随着机器学习成为人们每天都在使用的很多应用程序的一部分,人们越来越关注如何识别和解决机器学习模型的安全和隐私方面的威胁。 然而,不同机器学习范式面临的安全威胁各不相同,机器学习安全的某些领域仍未得到充分研究。尤其是强化学习算法的安全性近年来并未受到太多关注。 加拿大的麦吉尔大学、机器学习实验室(MILA)和滑铁卢大学的研究人员开展了一项新研究,主要侧重于深度强化学习算法的隐私威胁。研究人员提出了一个框架,用于测试强化学习模型对成员推理攻击的脆弱性。 研究

机器学习必知必会十大算法!机器学习必知必会十大算法!Apr 12, 2023 am 09:34 AM

1.线性回归线性回归(Linear Regression)可能是最流行的机器学习算法。线性回归就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x 值)和数值结果(y 值)。然后就可以用这条线来预测未来的值!这种算法最常用的技术是最小二乘法(Least of squares)。这个方法计算出最佳拟合线,以使得与直线上每个数据点的垂直距离最小。总距离是所有数据点的垂直距离(绿线)的平方和。其思想是通过最小化这个平方误差或距离来拟合模型。例如

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター