blog

AIは大きな可能性を秘めている:NAIEプラットフォームは廃棄物分類を支援する

今やAIはすでに知性の代名詞のような時代で、どんな分野にもAIがあり、当然、ゴミの分類や監督といったシーンも「AI+」の力を借りないわけにはいきません。 しかし、ゴミはしばしば商品の極端な変形に属し、...

Aug 1, 2020 · 6 min. read
シェア
生活廃棄物の分類と処理は、社会全体が関心を寄せているホットな話題です。生活廃棄物をいかに簡潔かつ効率的に分類し、検出するかは、廃棄物の輸送と処理にとって極めて重要です。

いまやAIはすでにインテリジェンスの代名詞のような時代で、どんな分野にもAIがあり、当然、廃棄物の分類や監督などのシーンも「AI+」によってパワーアップしています。

しかし、ゴミはしばしば商品の極端な変形に属し、特殊なケースです。現在の技術では、ゴミの分別や整理の有無を判断するなど、視覚的な視認性に基づいてゴミの分別アラームを発することは可能です。直接視覚的に検知・分類し、一定の結果を出すことが可能かどうかについては、実現可能性を判断するために、より多くのデータや実験的な裏付けが必要です。これらの質問に対しては、海華ゴミ分別チャレンジの参加者がどのようにテクノロジーを使って世界を変えようとしているのか、話を聞いてみるのもいいかもしれません。

Haihua Waste Sorting Challengeのデータは、シングルクラスのごみデータセットとマルチクラスのごみデータセットで構成されています。シングルクラスごみデータセットには80,000枚のシングルクラス家庭ごみイメージが含まれ、各シングルクラスごみイメージにはごみが1つだけ含まれています。マルチクラススパムデータセットには4,998枚のイメージが含まれ、そのうち2,998枚のマルチクラススパムイメージが学習セットデータとして使用され、AリストとBリストにはそれぞれ1,000枚のテストイメージが含まれ、各マルチクラススパムイメージには最大20個のスパムインスタンスが含まれます。この2つのデータセットを別々に紹介します。

マルチカテゴリーのゴミ

図1 マルチクラススパムデータカテゴリの分布

図1に示すように、マルチカテゴリースパムは204のカテゴリをカバーしていますが、これらの204カテゴリのデータは非常に不均一であり、いくつかのカテゴリは数が非常に少ないか、あるいは存在しないことさえあります。

図2 マルチカテゴリーのスパムデータの可視化

図2の2つのイメージはトレーニングセットの2つのイメージで、スパムターゲットは主にイメージの中央領域に集中しており、重複度が高く、さらに、角度のポーズが異なるもう一方のイメージにはターゲットがほとんど現れない傾向が見られます。

映像はトップダウンで撮影され、効果的なように水平と垂直の両方に反転されました。

カテゴリーは非常にアンバランスですが、ターゲットが繰り返し出現するため、多くの場合、複数のターゲットが学習され、同じターゲットを再度見ると100%の検出率が得られます。カテゴリのアンバランスは主にデータが非常に少ないオブジェクトに影響するため、インクカートリッジ、カタツムリ、梅の芯、貝類など、これらのターゲットのみを拡張する必要があります。

高いオーバーラップは、人為的に高いオーバーラップを持つターゲットを作成するミックスアップなどの方法を使用して訓練することができます。

表1 統計

イメージレベルのマクロ統計に加えて、データセットのターゲットを詳細に分析しました。表1はターゲットのサイズとアスペクト比レベルでの統計です。まずオブジェクトの長さはココによって分類され、96より大きいものは大きなオブジェクトであり、ターゲットの75%は大きなオブジェクトであることから、小さなオブジェクトに対するブースティング手法はほとんど効果がありません。第二に、アスペクト比はめったに大規模なオブジェクトはなく、アンカーのパラメータ調整に多くのインスピレーションを与えます。

単一カテゴリのゴミ

左の2つのイメージにあるように、シングルクラスのスパムはターゲットがより大きいです。1つは、より少ないカテゴリでデータを拡張することであり、もう1つは、より良い事前訓練モデルを得るために訓練するためにシングルカテゴリデータセットを使用することです。

図3 データの比較

データ拡張を行ったところ、単一クラスのザリガニはザリガニ、多クラスのザリガニは実際には牛乳パック、ダイオードはプラスチック管というラベルが貼られるなど、多クラスのゴミと比較すると、同一クラスは全く同じ対象ではないことがわかりました。この点から、単一クラスでデータ拡張を行おうとしても、データが均質でないためうまくいかないことがわかります。この解決策を試しましたが、精度は変わりませんでした。

事前学習モデルについては、ターゲットが大きいため、4*4に従ってイメージをスプライスすることで、データ量を削減し、1つのイメージ内のターゲットの数を強化することで、ある程度の結果も得られます。しかし、他の強調方法と組み合わせた場合、基本的に効果がないため、このオプションも放棄されます。

モデルのシナリオ



図4 ベースライン・プログラム

競技の最初に、トレーニングセットから2500個のデータがトレーニング用に、498個のデータがローカル検証用に選択され、その上でパラメータが調整されます。ターゲットの重なりが大きいため、softnmsのしきい値0.001、max_per_img = 300、flip testを使用すると、これらのパラメータを使用しない場合に比べ、結果が約0.02ほど向上します。ビデオメモリの制限からイメージからランダムにイメージ領域を切り出し、マルチスケール学習用に短辺を[640,960]、長辺を1800にランダムに制限し、テスト用にイメージの短辺を1200に適度にズームすると、OHEMの学習精度と合わせて88.3%に学習でき、498枚のイメージのローカル検証も学習に入力すると88.6%程度になります。0.5%改善して89.2%にすることができます。

カテゴリ数が少ない場合は、多クラス学習セットで貝の脱皮殻、カタツムリ、ダイオード、梅の芯のカテゴリを追加ラベル付けし、すべてのあいまいなターゲットをラベル付けすることで、約100以上のターゲットがラベル付けされ、Aリストでは約90%まで高めることができる回収率を向上させることができます。

また、大型物体の検出能力を向上させるために、FPNの階層分割を56から70に調整し、FPNの各階層に割り当てるターゲットを増やした上で、アンカーのスケールを8から12に変更しています。大型物体の検出

図5 アンカー修正

パラメータ調整後の Fig.6 に示すように、FPN のターゲット数の分布は正規分布に近くなっており、このような分布は検出に役立つと考えられます。ResNetの複数のステージの畳み込み数から、FPNの中間層はパラメータが多いResNetのステージに相当し、より多くのターゲットを検出すべきであり、FPNの両側はパラメータが少ないバックボーンに相当し、あまり多くのターゲットを検出すべきではないことがわかります。

図6 FPNにおけるターゲット数の分布の変化

イメージ強調については、24エポックのトレーニングでオンラインミックスアップを追加すると91.2%から91.3%に向上しましたが、12エポックだけでは向上しませんでした。ミックスアップは比較的簡単な方法で設定され、2つのイメージはそれぞれ0.5で融合されたため、損失を重み付けする必要はありませんでした。

図7 ミックスアップ・レンダリング

図8 wbf効果

表2 パラメータ設定

図9 Aリスト精度の変化

NAIEプラットフォームの展開

個人的には、NAIEプラットフォームは、ローカルデバッグ領域、クラウドストレージ領域、クラウドトレーニング領域の3つの主要な部分から構成されており、これら3つの部分それぞれの機能を理解すれば、すぐに始めることができると理解しています。

ローカルのデバッグ領域はvscodeに基づいており、GPUレスのサーバーに関連付けられ、通常のLinuxサーバーのようにコマンドラインで操作して、環境の初期展開とデバッグを行うことができます。

クラウドのストレージ領域には、主に大容量データと事前学習モデルが保存されており、事前学習モデルのような大容量ファイルは、ローカルのデバッグ領域からモデルのトレーニング領域に直接転送することはできません。

モデルのトレーニング領域では、GPUを呼び出してモデルのトレーニングを完了し、トレーニング済みのパラメトリックモデルをクラウドにコピーして保存します。

ここでは例としてmmdetectionの展開を紹介します。

  • )コードのアップロード

コードのアップロードは右クリックからNAIEアップロードを選択することで行います。アップロードには100Mを超えないサイズ制限があるので、プリトレーニングモデルや無関係なファイルを削除してコアコードのみを残すことをお勧めします。

  • )環境構築

環境のデプロイには、必要なpythonライブラリとバージョン番号を書いたrequirements.txtファイルをローカルコードエリアに書く必要があります。

  • )モデルラン

プラットフォームはshファイルの実行をサポートしていないので、例えばmodel.pyというpyを書いて、os.system()を使ってコマンドラインをエミュレートして実行する必要があります。

さらに、学習したモデルをクラウドに保存するために、model.pyでmoxingパッケージが呼び出されます。

モデルトレーニングエリアで、model.pyとトレーニングに必要なGPU仕様をチェックします。

  • )追加情報

数名の参加者は最終的にコンペティションを終了し、表彰を受けました。 順位は特に良いものではありませんでしたが、それでもコンペティションを通じて多くの経験を積み重ねました。彼らの成果は、ファーウェイのNAIEトレーニングプラットフォームの演算サポートと切っても切れないもので、トレーニング用にV100とP100グラフィックカードを無償で提供し、科学研究だけでなくコンペティションへの参加にも大きな助けとなり、コードやトレーニングの修正に非常に便利で、プラットフォームに慣れる初期段階で遭遇した問題の解決に回答または支援してくれたとのことです。私はこの共有を通じて、あなたに一定の参考を提供し、ピット経験を避けることができることを願っています。

[2]. 田中 浩 , Cisse M , Dauphin Y N , et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.

[3]. Solovyev R , Wang W . Weighted Boxes Fusion: ensembling boxes for object detection models[J]. arXiv, 2019.

[4]. P. Wang, X. Sun, W. Diao, and K. Fu, "Fmssd: Feature-merged single-shot detection for multiscale objects in large-scale remote sensing.Imageery," IEEE Transactions on Geoscience and Remote Sensing, 2019.

[5]. Tanaka S , Chi C , Yao Y , et al. Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection[J]. 2019.

[7]. Deng L , Yang M , Li T , et al. RFBNet: Deep Multimodal Networks with Residual Fusion Blocks for RGB-D Semantic Segmentation[J]. 2019.

[9]. Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.

[10]. J. Dai, H. Qi, Y. Xiong, Y. Li, G. Tanaka, H. Hu, and Y. Wei, "Deformable convolutional networks," in Proceedings of the IEEEinternational conference on computer vision, 2017, pp.

[11]. X. Zhu, H. Hu, S. Lin, and J. Dai, "Deformable convnets v2: More deformable, better results," in Proceedings of the IEEEConference on Computer Vision and Pattern Recognition, 2019, pp.

[12]. Z. Huang, X. Wang, L. Huang, C. Huang, Y. Wei, and W. Liu, "Ccnet: criss-cross attention for semantic segmentation," in.Proceedings of the IEEE International Conference on Computer Vision, 2019, pp.603-612.

[13]. Wang J , Chen K , Yang S , et al. Guided Anchoringによる領域提案[J]. 2019.





Read next

Javaのテンプレートデザインパターン、あまりにも実用的である!

名前が示すように、テンプレート設計パターンは、テンプレートにカプセル化された一般的な一般的なコードの多くであり、唯一のコードのさまざまなビジネスニーズを達成する必要があり、その後、テンプレートと組み合わせることで、完全なロジックを取得します。 日常的な開発では、一般的に使用されるテンプレートパターンは、実装の2つの方法があります:継承とインターフェイスコールバックは、次の2つの方法は、テンプレート設計パターンを実装します。 もしこのコードは非常に...

Aug 1, 2020 · 2 min read