Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ニューラルネットワークモデルの自動生成

sada
October 05, 2023
160

 ニューラルネットワークモデルの自動生成

第56回情報科学若手の会で発表した「ニューラルネットワークモデルの自動生成」に関する登壇資料です。

sada

October 05, 2023
Tweet

Transcript

  1. 本題:ihpc研で何してる? IHPC : Intelligent High-Performance Computing の略 Intelligent…深層学習関連でいろんなアプローチで学習速度 の向上や学習精度の向上、データの復元などをさまざまな学習 データセット(主にcomputer

    vision)を用いて図っている • ニューラルネットのモデル圧縮 • ニューラルネットワーク組み替え処理の自動化 • FPGA, CPU方面など低レイヤーによる高速化,圧縮 • GANによる元データの復元 • 自作backbone
  2. 目標:任意の物体を検出するための最高の モデルの組み合わせを選出する 最高って… Evaluation Parameter の数値がどうかによる • mAP(認識率)…0-1の間で表現され数値が高い方がモデルの性能が良く、 クラスを正確に識別できることを示す •

    Parameters…モデルのパラメータ数, 少ないパラメータはモデルがシン プルであることを示す一方で、多すぎると過学習のリスクが高くなる. 一 般的に、必要最低限のパラメタで高い性能を引き出すことが望ましい • Model Size…モデルのサイズ, 小さいモデルサイズはデバイスへのデプ ロイや転送が容易であることを示す • Flops…モデルが1秒間に実行できる浮動小数点演算の数を示す, 低い flopsだと効率的なモデル,リソースが限られているデバイスではflopsの 最適化が要求される • FPS…モデルが1秒間に処理できるフレーム数を示す.FPSが高いとモデ ルがリアルタイムで動作することを示す
  3. ResNet Paper: Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun.

    "Deep Residual Learning for Image Recognition." CVPR (2015). https://arxiv.org/pdf/1512.03385.pdf 11 l 精度の向上はより深いネットワークの恩恵 l パラメタの数はVGGよりも少ない, residual structure l Batch Normalizationは劣化や勾配の消失の問題を解決するために 採用されている
  4. Plain networks 12 Training error (left) and test error (right)

    on CIFAR-10 with 20-layer and 56-layer “plain” networks.
  5. Residual structure: 15 ( ,{ }) i y F x

    W x = + Identity shortcut Projection shortcut ( ,{ }) i s y F x W W x = +
  6. Improve: 19 Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun.

    "Identity Mappings in Deep Residual Networks." CVPR (2016). https://arxiv.org/pdf/1603.05027.pdf
  7. VGG16-19 20 <Visual Geometry Group> Paper: Simonyan K., and Zisserman

    A. "Very Deep Convolutional Networks for Large- Scale Image Recognition." CVPR (2014). https://arxiv.org/pdf/1409.1556.pdf
  8. ConvNet Configurations: 3*3 convolution layer 2 3*3 convolution layers 5*5

    convolution layer 3 3*3 convolution layers 7*7 convolution layer 21 Receptive field
  9. Receptive field: 𝐹(𝑖) = (𝐹(𝑖 − 1) − 1)×𝑆𝑡𝑟𝑖𝑑𝑒 +

    𝐾𝑠𝑖𝑧𝑒 2 3*3 conv. layer 𝐹 = (3 − 1)×1 + 3 = 5 3 3*3 conv. layer 𝐹 = (5 − 1)×1 + 3 = 7 Parameter 3 3*3 3×(3×3)×𝐶𝑖𝑛×𝐶𝑜𝑢𝑡 = 27𝐶0 7*7 (7×7)×𝐶𝑖𝑛×𝐶𝑜𝑢𝑡 = 49𝐶0 Input size 𝑤×𝑤×𝐶 22
  10. Dropout: 23 ( 1) ( 1) ( 1) ( 1)

    ( 1) ( ) l l l l i i i l l i i z w y b y f z + + + + + = + = ( ) ( ) ( ) ( ) ( 1) ( 1) ( 1) ( 1) ( 1) ~ Bernoulli( ) * ( ) l j l l l l l l l i i i l l i i r p y r y z w y b y f z + + + + + = = + =  
  11. ReLU: 24 ( ) max(0, ) f x x =

    Softmax: 1 exp ( ) exp i i x i C x i f x = = å 1 log( ( )) c i i i L y f x = = -å
  12. Advantages and disadvantages Advantages l 比較的小さな畳み込みのカーネル l シンプルな構造 l 大規模な画像分類に向いている(Largescale

    parameter). l ネットワーク構造を継続的に深化することでパフォーマンスが向上する l VGG_19はVGG16よりも優れている(がより多くのメモリを使用する) Disadvantages • より多くの計算リソースを消費してより多くのパラメータを使用するので メモリ使用量が増加する 26
  13. 29

  14. YOLO v1 Joseph Redmon, et al. You Only Look Once:

    Unified, Real-Time Object Detection, CVPR, 2016. https://arxiv.org/pdf/1506.02640.pdf 1. Divides the input image into a S*S grid. If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object. 2. Each bounding box consists of 5 predictions( x, y, w, h,), and confidence. 3. Each grid cell also predicts C conditional class. 4. S × S × (5×B+C)
  15. YOLO v2 39 Joseph Redmon, et al. YOLO9000: Better, Faster,

    Stronger, CVPR, 2017 https://arxiv.org/pdf/1612.08242.pdf 1.BN 2.High Resolution Classifier 3.Convolutional with Anchor Boxes 4.Dimension Clusters 5.Direct Location Prediction 6.Fine-Grained Features 7.Multi-Scale Training
  16. 42 Direct Location Prediction: ( ) ( ) x a

    a y a a x t w x y t h y = * + = * + Region proposal networks (RPN) Constrain the location prediction
  17. PANet SPP CSPDarknet53 Conv + UpSampling Conv + UpSampling Downsampling

    Downsampling Inputs(416,416,3) DarknetConv2D_BN_Mish(416,416,32 ) Resblock_body(208,208,64)x1 Resblock_body(104,104,128)x1 Resblock_body(13,13,1024)x1 Conv x3 Concat + Conv x3 5 9 13 Base layer Part 1 Part 2 Dense Block Transition Transition Conv Conv 最大 池化 x8 Yolo Head Yolo Head Yolo Head Concat + Conv x5 Resblock_body(52,52,256)x1 Resblock_body(26,26,512)x1 Concat + Conv x5 Concat + Conv x5 Concat + Conv x5 ConvBNMish k3, s2, c256 ConvBNMish k1, s1, c128 ResBlock c128 ConvBNMish k1, s1, c128 ConvBNMish k1, s1, c128 Concat ConvBNMish k1, s1, c256 Yolov4 Architecture
  18. CBM CSP1 CSP2 CSP8 CSP8 CSP4 CBL SPP CBL CBL

    Concat CBL CBL 上采祥 上采祥 Concat CBL CBL CONV CBL CBL CBL CBL CONV CBL CBL CBL CONV CBL Concat Concat Maxpool Maxpool Maxpool SPP = Concat CBM = CONV BN Mish CBL = CONV BN Leaky relu Res unit = CBM CBM add CSPX CBM = CBM CBM Res unit CBM Concat CBM Res unit Res unit Res unit 1.入力 608*608*3 2.BackBone 3.Neck ①76*76*255 ②38*38*255 ③19*19*255 4.Prediction 76*76 38*38 19*19
  19. 基本図形 緑(使用頻度高) 基本図形 黄緑(使用頻度低) 基本図形 深緑(使用頻度低) 強調図形 橙(主張強め) 強調図形 青(主張弱め)

    強調図形 赤(主張普通) 補足図形等 灰(使用頻度高) 補足図形等 黒(使用頻度低) 補足図形等 薄灰(使用頻度中)
  20. 54 前提:「できないことを精神論で片付けない」 研究において本書のプラクティスをなるべく取り入れる:環境編 ヒト:多くの博士号所有者を含む最高の人材 • 博士候補(Ph.D学生)という最高の人材の1歩手前の人材(*要出典) と手を組んで行うことにした 組織:さまざまな問題に関してあえて1から考える • 設計の段階から1から考えてみた

    ドキュメント(理論):計り知れない価値を置く • 多くの質の高い論文を引用, 作ってみてから科学的意義や新規性について考えよう • ドキュメント化されたものを理論としてかこう。むしろ、そこにこそ知的体力をさこう • OSSとして理論と実装と結果をセットで公開して残せるようにしよう • コンピュータサイエンス(情報科学)の上にソフトウェア・エンジニアリングが成り立っ ている。土台をおろせかにせず質を上げていこう
  21. CSPdarknet53 GhostNet Densenet121 Xception Inception_v3 Mobilenet_v1 Movilenet_v2 Movilenet_v3 Resnet50 VGG16

    YOLOv3 YOLOv4 YOLOv5 YOLOv7 YOLOX Best model Backbone + Neck & Head Evaluation mAP Parameters Model Size Flops FPS … Dish-20 EGG VOC … … … Input (Dataset) Backbone Neck & Head Output (Model) 全体設計図 https://github.com/ultra-supara/automatic_train としてサンプルをOSSで公開
  22. CBM CSP1 CSP2 CSP8 CSP8 CSP4 CBL SPP CBL CBL

    Concat CBL CBL 上采祥 上采祥 Concat CBL CBL CONV CBL CBL CBL CBL CONV CBL CBL CBL CONV CBL Concat Concat Maxpool Maxpool Maxpool SPP = Concat CBM = CONV BN Mish CBL = CONV BN Leaky relu Res unit = CBM CBM add CSPX CBM = CBM CBM Res unit CBM Concat CBM Res unit Res unit Res unit 1.入力 608*608*3 2.BackBone 3.Neck(Yolov5) ①76*76*255 ②38*38*255 ③19*19*255 4.Prediction 76*76 38*38 19*19
  23. PANet SPP CSPDarknet53 Conv + UpSampling Conv + UpSampling Downsampling

    Downsampling Inputs(416,416,3) DarknetConv2D_BN_Mish(416,416,32 ) Resblock_body(208,208,64)x1 Resblock_body(104,104,128)x1 Resblock_body(13,13,1024)x1 Conv x3 Concat + Conv x3 5 9 13 Base layer Part 1 Part 2 Dense Block Transition Transition Conv Conv 最大 池化 x8 Yolo Head Yolo Head Yolo Head Concat + Conv x5 Resblock_body(52,52,256)x1 Resblock_body(26,26,512)x1 Concat + Conv x5 Concat + Conv x5 Concat + Conv x5 ConvBNMish k3, s2, c256 ConvBNMish k1, s1, c128 ResBlock c128 ConvBNMish k1, s1, c128 ConvBNMish k1, s1, c128 Concat ConvBNMish k1, s1, c256
  24. PANet SPP VGG16 Conv + UpSampling Conv + UpSampling Downsampling

    Downsampling Inputs(416,416,3) Conv(3,3,64) x2 Conv(3,3,128)x2 Conv(3,3,256)x3 fc(4096) x3 Conv x3 Concat + Conv x3 5 9 13 Base layer Part 1 Part 2 Dense Block Transition Transition Conv Conv 最大 池化 x8 Yolo Head Yolo Head Yolo Head Concat + Conv x5 Conv(3,3,512)x3 Conv(3,3,512)x3 Concat + Conv x5 Concat + Conv x5 Concat + Conv x5 ConvBNMish k3, s2, c256 ConvBNMish k1, s1, c128 ResBlock c128 ConvBNMish k1, s1, c128 ConvBNMish k1, s1, c128 Concat ConvBNMish k1, s1, c256 推論が終わったら backboneのみVGG にスイッチして再学習
  25. PANet SPP Xception Conv + UpSampling Conv + UpSampling Downsampling

    Downsampling Entry Flow Exit Flow Conv x3 Concat + Conv x3 5 9 13 Base layer Part 1 Part 2 Dense Block Transition Transition Conv Conv 最大 池化 x8 Yolo Head Yolo Head Yolo Head Concat + Conv x5 Middle Flow Concat + Conv x5 Concat + Conv x5 Concat + Conv x5 ConvBNMish k3, s2, c256 ConvBNMish k1, s1, c128 ResBlock c128 ConvBNMish k1, s1, c128 ConvBNMish k1, s1, c128 Concat ConvBNMish k1, s1, c256 推論が終わったら Xceptionにスイッチ して再学習
  26. 僕がやったことは「MLOps」の研究といえるのか MicrosoftによるMLOpsの定義 Ø Machine Learning操作(MLOps)は、ワークフローの効率を向上させる DevOpsの原 則と実践に基づいています。 たとえば、継続的インテグレーション、配信、デプロイです。 MLOpsでは、次のことを目標に、これらの原則を機械学習プロセスに適用します。 ・

    モデルのより迅速な実験と開発. -> 成果が出た ・ 実稼働環境へのモデルのより迅速なデプロイ, 品質保証 -> ML基盤を開発したり CI/CDをがっつり導入したわけではない, 広義のインフラ基盤の導入してません。(MLOps level 0 : デプロイ自動化は含まないソフトウェア) https://learn.microsoft.com/ja-jp/azure/machine-learning/concept-model-management-and- deployment?view=azureml-api-2 事業者でいう文脈ではなくあくまで研究の側面でニューラルネッ トに限った領域ではMLOpsの一部ともいえるかも?
  27. 成果1:実験スピードの圧倒的向上 1度の実行で任意の組み合わせを調べることができる その3 • 従来手法は1つの組み合わせが終わったらそこ からまたソースコードを書き換えて再学習する 必要があったが.. yolov7_v5CSPdarknet,mAP:100.0%,flops:0.284323918G,model_size:204.553464MB,FPS:20.251316360863697,Parameters:50.902497M, yolov7_xCSPdarknet,mAP:95.2%,flops:0.284323918G,model_size:204.579944MB,FPS:17.79088361770951,Parameters:50.902497M, yolov7_v3darknet,mAP:92.4%,flops:0.385888334G,model_size:258.473392MB,FPS:17.01340010345215,Parameters:64.411713M,

    yolov7_v7backbone,mAP:93.2%,flops:0.262721614G,model_size:150.126088MB,FPS:25.20116813428497,Parameters:37.346753M, yolov7_v4CSPdarknet53,mAP:93.2%,flops:0.29979451G,model_size:202.75124MB,FPS:18.02773895714467,Parameters:50.443585M, yolov5_v5CSPdarknet,mAP:87.2%,flops:0.232378318G,model_size:154.303304MB,FPS:24.313955865774663,Parameters:38.357737M, yolov5_xCSPdarknet,mAP:85.4%,flops:0.232378318G,model_size:154.306808MB,FPS:29.451885644243497,Parameters:38.357737M, yolov5_v3darknet,mAP:86.8%,flops:0.333942734G,model_size:208.223072MB,FPS:20.756551659258147,Parameters:51.866953M, yolov5_v7backbone,mAP:86.3%,flops:0.211431374G,model_size:100.07604MB,FPS:45.17792878841556,Parameters:24.853193M, yolov5_v4CSPdarknet53,mAP:88.0%,flops:0.24784891G,model_size:152.497128MB,FPS:28.897781129573318,Parameters:37.898825M, yolov3_v5CSPdarknet,mAP:80.0%,flops:0.28694587G,model_size:193.377224MB,FPS:21.945551351170344,Parameters:48.169441M, yolov3_xCSPdarknet,mAP:74.6%,flops:0.28694587G,model_size:193.385488MB,FPS:21.715122896668202,Parameters:48.169441M, yolov3_v3darknet,mAP:77.4%,flops:0.388510286G,model_size:247.291248MB,FPS:17.55582086893424,Parameters:61.678657M, yolov3_v7backbone,mAP:72.3%,flops:0.265343566G,model_size:138.944872MB,FPS:29.82171052299465,Parameters:34.613697M, yolov3_v4CSPdarknet53,mAP:75.9%,flops:0.302416462G,model_size:191.576568MB,FPS:21.516757871989906,Parameters:47.710529M, ↓学習の監査ログです
  28. CSPdarknet53 VGG16 Densenet121 Xception Inception_v3 Mobilenet_v1 Movilenet_v2 Movilenet_v3 Resnet50 YOLOv3

    YOLOv4 YOLOv5 YOLOv7 YOLOX Best model Backbone + Neck & Head Evaluation mAP Parameters Model Size Flops FPS … Dish-20 EGG VOC … … … Backbone Neck & Head Output (Model) ここに自作のbackboneを組み込む状況を考える
  29. CSPdarknet53 VGG16 Densenet121 Xception Inception_v3 Mobilenet_v1 Movilenet_v2 Movilenet_v3 Resnet50 自作backbone

    YOLOv3 YOLOv4 YOLOv5 YOLOv7 YOLOX Best model Backbone + Neck & Head Evaluation mAP Parameters Model Size Flops FPS … Dish-20 EGG VOC … Input (Dataset) Backbone Neck & Head Output (Model) 全体設計図 1度の変更で一気に5通りの組み合わせ推論を増やすことができる!!
  30. 成果2:出力結果の比較の容易性と信頼性の向上 その3 • 一連の実験結果は1度の実行で出てくるので学習を行うマシンパワー であったり環境が同じであるため、結果の比較に信頼が持てる logs/yolov7_v5CSPdarknet/best_epoch_weights.h5 model, anchors, and classes

    loaded. Configurations: ** each part of the network ** ---------------------------------------------------------------------- | keys | values| ---------------------------------------------------------------------- | neck | | | backbone | | | classes_path | model_data/voc_classes.txt| | anchors_path | model_data/yolo_anchors.txt| | anchors_mask | [[6, 7, 8], [3, 4, 5], [0, 1, 2]]| | input_shape | []| | confidence | 0.5| | nms_iou | 0.3| | max_boxes | 100| | letterbox_image | True| ---------------------------------------------------------------------- Load model done. Get predict result. Get predict result done. Get ground truth result. Get ground truth result done. Get map. ... yolov7 + v5CSPdarknet done! There are 6 backbones. Current training model: yolov7 + xCSPdarknet! Evaluation parameter: mAP Total GFLOPs: 0.284G Configurations: ** each parameters ** ---------------------------------------------------------------------- | keys | values| ---------------------------------------------------------------------- | classes_path | model_data/voc_classes.txt| | anchors_path | model_data/yolo_anchors.txt| | anchors_mask | [[6, 7, 8], [3, 4, 5], [0, 1, 2]]| | model_path | | | input_shape | [32, 32]| | Init_Epoch | 0| | UnFreeze_Epoch | 50| | Unfreeze_batch_size | 2| | Freeze_Train | False| | Init_lr | 0.001| | Min_lr | 1e-05| | optimizer_type | adam| | momentum | 0.937| | lr_decay_type | cos| | save_period | 10| | save_dir | logs/yolov7_xCSPdarknet| | num_workers | 1| | num_train | 409| | num_val | 46| ---------------------------------------------------------------------- Train on 409 samples, val on 46 samples, with batch size 2. ---------------------------------------------------------------------- yolov7 + v5CSPdarknet done! There are 6 backbones. Current training model: yolov7 + xCSPdarknet! ↓学習の監査ログです
  31. おまけ:操作がwebからできるオプションつけた その3 学習と連携する簡単なデモアプリケーションを作成 • 例えば、One-Key Training • 全ての学習パラメタをおまかせとかもできる 監査ログと学 習結果も

    web上で閲 覧可能に # 学習パラメタの設定 if __name__ == "__main__": imagesize = 32 #N*32(N=(1,20)) epochs = 1 batch_size = 2 evalu_param = 'map' eager = False train_gpu = [0,] classes_path = 'model_data/voc_classes.txt' anchors_path = 'model_data/yolo_anchors.txt' anchors_mask = [[6, 7, 8], [3, 4, 5], [0, 1, 2]] model_path = '' input_shape = [imagesize, imagesize] mosaic = True mosaic_prob = 0.5 mixup = True mixup_prob = 0.5 special_aug_ratio = 0.7 #label_smoothing = 0 Init_Epoch = 0 UnFreeze_Epoch = epochs Unfreeze_batch_size = batch_size Freeze_Train = False Init_lr = 1e-3 Min_lr = Init_lr * 0.01 optimizer_type = "adam" momentum = 0.937 weight_decay = 0 lr_decay_type = 'cos' focal_loss = False focal_alpha = 0.25 focal_gamma = 2 save_period = 10 eval_flag = True eval_period = 20 num_workers = 1 train_annotation_path = '2007_train.txt' val_annotation_path = '2007_val.txt’ os.environ["CUDA_VISIBLE_DEVICES"] = ','.join(str(x) for x in train_gpu) ngpus_per_node = len(train_gpu) gpus = tf.config.experimental.list_physical_devices(device_type='GPU') https://github.com/ultra-supara/automatic_train/blob/main/train_onekey.py
  32. 72 考察 • どんどん新しいネットワークアーキテクチャが登場している • たいてい、複雑で深さが大きい(つまり大きなデータセットに対応している可能 性が高い) • そこで個人の研究などで使われる比較的小さいデータセットに対してmAPをあ げて理想的な効果をもたらすことができるのかという観点が重要

    • ネットワークのアーキテクチャが最適化された前提で、VGGやVGGの改良版の ようなよりシンプルなネットワークを使用して、軽量化と精度のバランス設計を 取ることは可能か?ということを考えるのが重要
  33. 82 Yolov4 CPS53 YUE GhostNet Efficient Net Mobile Net VGG16

    VGG16- DW VGG13- DW VGG8- DW VGG8 mAP(%) 97.04 95.65 96.01 96.59 91.81 96.38 96.77 95.43 98.03 weight(M) 257.3 45.8 53.9 45.8 92.5 40.8 40.8 38.2 52 結果の比較一覧 データ量が少ないのでシンプルなネットワーク でも良好な結果を得ることが出来た
  34. まとめ その4 あがった成果を論文などの形で正式に学術の場で発表 できるものかは精査中, エンジニアリングとしてはOK • これまでの成果は、あくまでソフトウェアを書い て実現したいロジックを組んだに過ぎない • エンジニアリングとしてはこれでいい(*もちろん

    課題は山積)かもしれないが学術的にいけていると ころが果たしてあるのだろうか?????? • 来年ごろ、なんらかの国際学会に正式に論文出す 可能性もあります(ちょっと待ってね) しかし計算機的に立脚したアプローチというよりは実験的なんだよなあ
  35. PULPの紹介 その4 The Parallel Ultra Low Power : エネルギー効率の高いマイクロプ ロセッサの設計と開発に焦点を当てたスイスの研究機関のプロジェクト

    https://pulp-platform.org/projectinfo.html 目標 :低消費電力で高性能な計算を実現すること 特徴 • RiSC-V アーキテクチャ • 複数コアでの並列処理 • エネルギー効率最大化 • 低消費電力 GAP8のBlock Diagram
  36. 90 論文や文献の紹介 1.量子化による圧縮 (https://arxiv.org/pdf/1908.11263.pdf ) https://pulp-platform.org/docs/BeniniGurkaynak_SevenStories03-21_sml.pdf 2. Inside PULP (https://pulp-

    platform.org/docs/riscv_workshop_zurich/schia vone_wosh2019_tutorial.pdf ) https://www.prnewswire.com/news-releases/quicklogic-collaborates-with- eth-zurich-to-integrate-efpga-into-pulp-platform-300693778.html https://www.youtube.com/watch?v=27tndT6cBH0&t=181s