9 トピック PyTorch での畳み込みニューラル ネットワーク (CNN) の実装

9 トピック PyTorch での畳み込みニューラル ネットワーク (CNN) の実装

この写真をまだ覚えていますか?

ディープシステムでは、52 個のオブジェクト検出モデルが導入されています。2013 年から 2020 年までを振り返ると、初期の R-CNN である OverFeat から、その後の SSD、YOLO v3、昨年の M2Det まで、新しいモデルが次々と登場し、パフォーマンスはますます向上しています。

上記はソースコードと論文に焦点を当てています。さまざまな畳み込みニューラルネットワークモデルの実装については、この記事で非常に役立つ PyTorch 実装を紹介します。

このリソースは GitHub でオープンソース化されており、リンクは次のとおりです。

https://github.com/shanglianlm0525/PyTorch-ネットワーク

まずは要約から始めましょう。このシリーズの畳み込みニューラル ネットワークの実装には、次の 9 つの主要なトピックが含まれます。

1. 典型的なネットワーク

2. 軽量ネットワーク

3. 物体検出ネットワーク

4. セマンティックセグメンテーションネットワーク

5. インスタンスセグメンテーションネットワーク

6. 顔検出および認識ネットワーク

7. 人間の姿勢認識ネットワーク

8. 注意メカニズムネットワーク

9. ポートレートセグメンテーションネットワーク

詳しく見てみましょう:

1. 古典的なネットワーク

一般的な畳み込みニューラル ネットワークには、AlexNet、VGG、ResNet、InceptionV1、InceptionV2、InceptionV3、InceptionV4、Inception-ResNet などがあります。

AlexNet ネットワークを例に挙げてみましょう。AlexNet は、2012 年の ImageNet コンテストで優勝した Hinton 氏と彼の学生 Alex Krizhevsky 氏によって設計されました。 AlexNet には比較的新しいテクノロジーがいくつか含まれており、ReLU、Dropout、LRN などのトリックが CNN に初めて適用されました。同時に、AlexNet はコンピューティングの高速化に GPU も使用します。

AlexNet ネットワーク構造の PyTorch 実装は次のとおりです。

  1. 輸入トーチ 
  2. torch.nnをnnとしてインポートする 
  3. def Conv3x3BNReLU(in_channels,out_channels,stride, padding = 1 ):  
  4. nn.Sequential() を返す 
  5. nn.Conv2d( in_channels in_channels = in_channels, out_channels out_channels = out_channels, kernel_size = 3 , stride stride = stride, padding = 1 ),  
  6. nn.BatchNorm2d(out_channels)、  
  7. nn.ReLU6(インプレース= True )
  8.  
  9. Conv1x1BNReLU(in_channels,out_channels)を定義します。  
  10. nn.Sequential() を返す 
  11. nn.Conv2d( in_channels in_channels = in_channels, out_channels out_channels = out_channels, kernel_size = 1 ,ストライド= 1 ,パディング= 0 ),  
  12. nn.BatchNorm2d(out_channels)、  
  13. nn.ReLU6(インプレース= True )  
  14.  
  15. def ConvBNReLU(in_channels,out_channels,kernel_size,stride, padding = 1 ):  
  16. nn.Sequential() を返す
  17. nn.Conv2d( in_channels in_channels = in_channels、 out_channels out_channels = out_channels、 kernel_size kernel_size = kernel_size、 stride stride = stride、 padding padding = padding)、
  18. nn.BatchNorm2d(out_channels)、
  19. nn.ReLU6(インプレース= True )  
  20.  
  21. def ConvBN(in_channels,out_channels,kernel_size,stride,パディング= 1 ):  
  22. nn.Sequential() を返す 
  23. nn.Conv2d( in_channels in_channels = in_channels、 out_channels out_channels = out_channels、 kernel_size kernel_size = kernel_size、 stride stride = stride、 padding padding = padding)、
  24. nn.BatchNorm2d(out_channels)  
  25.  
  26. クラス ResidualBlock(nn.Module):  
  27. def __init__(self, in_channels, out_channels):  
  28. super(ResidualBlock, self).__init__()  
  29. mid_channels = out_channels //2  
  30. 自己.ボトルネック= nn.シーケンシャル(  
  31. ConvBNReLU( in_channels in_channels =in_channels, out_channels = mid_channels , kernel_size = 1 , stride = 1 ),  
  32. ConvBNReLU( in_channels = mid_channels out_channels = mid_channels kernel_size = 3 stride = 1 padding = 1 )、  
  33. ConvBNReLU( in_channels = mid_channels out_channels out_channels = out_channels 、 kernel_size = 1 stride = 1 )、  
  34.  
  35. self.shortcut = ConvBNReLU ( in_channels in_channels =in_channels、 out_channels out_channels =out_channels、 kernel_size = 1 stride = 1 )  
  36. def forward(self, x):  
  37. アウト=自己.ボトルネック(x)  
  38. out+self.shortcut(x) を返す

2. 軽量ネットワーク

軽量ネットワークには、GhostNet、MobileNets、MobileNetV2、MobileNetV3、ShuffleNet、ShuffleNet V2、SqueezeNet、Xception MixNet GhostNet が含まれます。

GhostNet を例にとると、精度、速度、計算の複雑さは同じですが、以前の SOTA アルゴリズムよりも低くなります。 GhostNet の核となるのは Ghost モジュールです。通常の畳み込みニューラル ネットワークと比較すると、出力特徴マップのサイズを変えずに、必要なパラメータの総数と計算の複雑さが削減され、プラグ アンド プレイになっています。

GhostNet ネットワーク構造の PyTorch 実装は次のとおりです。

https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/Lightweight/GhostNet.py

3. 物体検出ネットワーク

ターゲット検出ネットワークには、SSD、YOLO、YOLOv2、YOLOv3、FCOS、FPN、RetinaNet Objects as Points、FSAF、CenterNet FoveaBox が含まれます。

YOLOシリーズを例に挙げると、YOLO(You Only Look Once)はディープニューラルネットワークをベースにした物体認識・位置決めアルゴリズムです。その最大の特徴は、非常に高速に動作し、リアルタイムシステムで使用できることです。現在、YOLOv3が広く使用されています。

YOLOV3 ネットワーク構造の PyTorch 実装は次のとおりです。

https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/ObjectDetection/YOLOv3.py

4. セマンティックセグメンテーション

セマンティック セグメンテーション ネットワークには、FCN、Fast-SCNN、LEDNet、LRNNet、FisheyeMODNet が含まれます。

FCN を例に挙げましょう。FCN は 2014 年に誕生したセマンティック セグメンテーション モデルの先駆者です。その主な貢献は、セマンティック セグメンテーションの問題でエンドツーエンドの畳み込みニューラル ネットワークの使用を促進し、アップサンプリングにデコンボリューションを使用することです。 FCN モデルは非常にシンプルで、すべて畳み込みで構成されているため、完全畳み込みネットワークと呼ばれます。同時に、完全畳み込みの特殊な形式により、任意のサイズの入力を受け入れることができます。

FCN ネットワーク構造の PyTorch 実装は次のとおりです。

https://github.com/shanglianlm0525/PyTorch-Networks/blob/master/SemanticSegmentation/FCN.py

5. インスタンスのセグメンテーション

インスタンス セグメンテーション ネットワークには、PolarMask が含まれます。

6. 顔検出および認識ネットワーク(コミット VarGFaceNet)

顔検出および認識ネットワークには、FaceBoxes、LFFD、VarGFaceNet が含まれます。

7. 人間の姿勢推定

人間の姿勢認識ネットワークには、Stacked Hourglass、Networks Simple Baselines、LPN などがあります。

8. 注意メカニズムネットワーク

注意メカニズム ネットワークには、SE Net、scSE、NL Net、GCNet、CBAM などがあります。

9. ポートレートセグメンテーションネットワーク

ポートレートセグメンテーションネットワークには、SINet が含まれます。

要約すると、この GitHub オープンソース プロジェクトは、合計で数十の特定のネットワーク構造を含む、近年人気を集めている畳み込みニューラル ネットワークの 9 つの主要なカテゴリを示しています。これらのネットワーク構造にはそれぞれ PyTorch 実装があります。それでもとても良いです。

<<:  AI専門家が警告:GPT-3は素晴らしいが透明性に欠ける

>>:  スマートホームシステム設計の5つの原則

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

災害後、ウェイモブは独自のデータベースの構築を断念し、商人に1億5000万元を支払った。

[[316623]] 【51CTOオリジナル記事】先週、WeMallは大規模なシステム障害に見舞わ...

未来はAIエンジニアの手に。しかし変革を成功させるのは簡単ではない

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

...

人工知能技術をより効果的に応用するにはどうすればよいでしょうか?より正確かつ迅速に行う5つの方法

広範囲にわたるモデリングと10万回以上のシミュレーションの実行を経て、AIシステムが2018年ワール...

...

旅行を恥ずかしがる必要はありません。国内の観光地がAIを導入し、スマートな旅行の新たなシナリオを実現

旅行に出かけることは、祖国の美しい川や山を鑑賞し、「詩と遠い場所」を追求することです。 AIの助けに...

YOLOv5の魔法:手話を学び、聴覚障害者を支援する

コンピュータービジョンはアメリカ手話を学習して聴覚障害者を助けることができるでしょうか?データサイエ...

2018 年の 15 大テクノロジー トレンド、テクノロジーに関して正しい方向に進んでいますか?

[[216696]]一般的に言えば、未来そのものを予測することは難しいため、技術動向を明確に予測す...

...

人工知能の主要技術:強化学習(RL)

人工知能技術はますます急速に進歩しており、それぞれのサブテクノロジーが生み出す価値もますます顕著にな...

AIが有名人に似た人を紹介

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

AI は銀行がますます激化する詐欺の競争に勝つためにどう役立つか

今日のイノベーションのペースが競争だとしたら、世界は猛烈なスピードで変化しています。今日の世界で起こ...

...

国内大学、AI専攻の学部生を初めて大規模募集

[[233398]] 「人気商品」は受験者や保護者を惹きつけ、専門職の入学基準が引き上げられている大...