要約: このブログでは、深層ニューラル ネットワークに基づく画像分類およびトレーニング システムの MATLAB 実装コードを詳細に紹介します。これには、画像分類用のモデルを選択できる GUI インターフェイスとデータ セットが含まれ、ニューラル ネットワークのワンクリック トレーニングをサポートします。まず、GoogleNetとResNetに基づく画像分類の背景と意義、システム研究の現状と関連するアルゴリズムについて紹介します。次に、画像分類の選択、フォルダ バッチ認識の選択、さまざまなネットワーク モデルの置き換え、ワンクリック トレーニング モデルのインターフェイスを介したデータ セットの選択などの機能を含む、システムのインターフェイス デモンストレーション効果を示しました。GUI インターフェイスの設計と実装に重点が置かれているため、ユーザーは画像分類とモデル トレーニング タスクを直感的かつ便利に完了できます。次に、トレーニング コード、トレーニング カーブ、モデル評価結果など、ニューラル ネットワーク トレーニングのプロセスを詳しく紹介します。4 番目のセクションでは、システム実装の 2 つの部分 (予測部分とトレーニング部分) について説明し、GUI インターフェイスと組み合わせた設計フレームワークと実装を提供します。最後に、ブログ全体の内容を要約し、画像分類技術の開発と進歩を促進するために、潜在的な改善の方向性と課題をいくつか提案します。
記事ディレクトリ
ディープ ニューラル ネットワークに基づく画像分類およびトレーニング システムのデモと紹介 (MATLAB GUI バージョン)
➷記事の最後にある、関連するすべての完全なコード ファイルのダウンロード ページにジャンプするには、クリックしてください☇
1 はじめに
このブログを書く当初の意図は、YOLOv5 ターゲット検出アルゴリズムの実装とアプリケーションを共有し、すべての人に実用的なガイドラインを提供することです。ファンの皆様、ご声援ありがとうございます。既製のソリューションを単に適用するのではなく、その背後にある原則を深く理解し、創造性を発揮し、探求し、試すことをお勧めします。今後の技術交流における相互の発展と発展を期待しています。このブログの内容はブロガーのオリジナルであり、本文中の関連する引用や参考文献には印をつけています. ブロガーのブログは、関連する研究者が案内する可能性があることを考慮して、可能な限り学術雑誌の形式で書かれています. . 参照が必要な場合は、これを引用できます ブログの形式は次のとおりです。
[1] 無限の思考. ディープ ニューラル ネットワークに基づく画像分類およびトレーニング システム (MATLAB GUI バージョン、コード + グラフィックの詳細な説明) [J/OL]. CSDN, 2023.05. https://wuxian.blog.csdn.net/article /details/130469122.
[2] Suxu Wu. (2023, 5月). 深層ニューラルネットワークに基づく画像分類・学習システム (MATLAB GUI版, コードと詳細説明付き) [J/OL]. CSDN. https:// wuxian.blog.csdn.net/article/details/130469122
コンピュータビジョンの重要課題である画像分類は、深層学習技術の急速な発展とともに目覚ましい進歩を遂げています。畳み込みニューラル ネットワーク (CNN) モデルは、GoogleNet (Szegedy et al., 2015) や ResNet (He et al., 2016) などの画像分類タスクで広く使用されています。GoogleNet の主な貢献は、提案されている Inception モジュールです。これは、マルチスケールの畳み込み演算によってネットワークの幅を広げます (Szegedy et al., 2015)。ResNet は残差接続を使用して、クロスレイヤー接続を介してディープ ネットワークの勾配消失問題を解決し、ネットワークを深くすることができます (He et al., 2016)。これらの畳み込みニューラル ネットワークは、ImageNet (Deng et al., 2009) や CIFAR-10 (Krizhevsky, 2009) など、いくつかの有名なデータセットで驚くべき結果を達成しました。ImageNet は、20,000 を超えるカテゴリをカバーする 1,400 万を超える画像を含む大規模な視覚認識データセットです (Deng et al., 2009)。CIFAR-10 は、32x32 ピクセルの 60,000 個のカラー画像を含む小規模なデータセットで、10 のカテゴリに分類されています (Krizhevsky、2009 年)。
GoogleNet と ResNet に加えて、画像分類タスクで優れた結果を達成した他の畳み込みニューラル ネットワーク モデルがあります。たとえば、VGGNet (Simonyan と Zisserman、2014 年) は、より小さな畳み込みカーネル (3x3) とより深いネットワーク構造を使用することで、分類のパフォーマンスを向上させます。DenseNet (Huang et al., 2017) は、各レイヤーの特徴マップを後続のすべてのレイヤーに接続して、情報の流れを改善する高密度接続を導入します。畳み込みニューラル ネットワークの内部特性をよりよく理解するために、Zeiler と Fergus (2014) は、各層の特徴マップを視覚化するデコンボリューション ネットワーク (DeconvNet) を提案しました。さらに、Hinton et al. (2012) はオーバーフィッティングを防ぐために Dropout メソッドを提案し、Ioffe and Szegedy (2015) はトレーニング プロセスを高速化するために Batch Normalization テクノロジを提案しました。
このブログの目的は、ディープ ニューラル ネットワークに基づく画像分類およびトレーニング システムを紹介することです。このシステムは、MATLAB を使用して実装され、ユーザーがさまざまなネットワーク モデルやデータ セットを試すための使いやすいグラフィカル ユーザー インターフェイスを提供します。このブログの投稿は次のとおりです。
- GoogleNet や ResNet などの複数の畳み込みニューラル ネットワーク モデルをサポートする MATLAB ベースの画像分類およびトレーニング システムを提供します。
- このシステムは使いやすいグラフィカル ユーザー インターフェイスを提供し、画像分類の選択、バッチ認識用のフォルダーの選択、さまざまなネットワーク モデルの変更などの機能をサポートします。
- システムは、インターフェースを介してトレーニング用のデータセットを選択し、トレーニング曲線とモデル評価結果を提供できます。
2. システムインターフェースのデモンストレーション効果
このセクションでは、システムのグラフィカル ユーザー インターフェイス (GUI) とその機能について説明します。このインターフェイスを使用すると、ユーザーは次のアクションを実行できます。
(1) 画像分類の選択: ユーザーが画像を選択すると、システムは事前にトレーニングされた畳み込みニューラル ネットワーク モデルに従って画像を分類し、予測結果を表示します。
(2) バッチ認識用のフォルダーを選択: ユーザーがフォルダーを選択すると、システムはフォルダー内のすべての画像を分類し、予測が完了した後に結果のリストと視覚的表示を生成します。
(3) 異なるネットワーク モデルの変更: ユーザーは、GoogleNet や ResNet などの事前トレーニング済みのモデルを切り替えて、異なるモデルで実験を行うことができます。
インターフェイスを介してデータ セットを選択することによるワンクリック トレーニング モデル: ユーザーはカスタム データ セット フォルダーを選択でき、システムは新しい畳み込みニューラル ネットワーク モデルを自動的にトレーニングし、トレーニング プロセス中に損失と精度の曲線を表示します。
3. ニューラル ネットワークのトレーニング
このセクションでは、MATLAB を使用して、ResNet-50 に基づく画像分類モデルのトレーニング プロセスを実装する方法について説明します。読者がモデルのトレーニング プロセスをよりよく理解できるように、各コード セグメントの役割をここで詳しく説明します。
まず、MATLAB の環境変数のクリア、結果の再現性を確保するための乱数ジェネレーターのシードの設定、現在のスクリプトが配置されているディレクトリの取得、作業ディレクトリをこのディレクトリに切り替えるなど、いくつかの準備作業を行います。これらのアクションは、さまざまなコンピューターでコードをスムーズに実行できるようにするのに役立ちます。
clear
clc
rng default % 保证结果运行一致
mpath = matlab.desktop.editor.getActiveFilename; % 程序所在目录
[pathstr,~]=fileparts(mpath);
cd(pathstr); % 自动切换至程序所在目录
次に、データセットをロードする必要があります。まず、画像データが存在するディレクトリを指定します。次に、関数 checkDataset を使用してデータセットをチェックし、データセットにグレースケールまたはバイナリ イメージがないことを確認します。これらの画像が見つかった場合、それらはデータセットから削除されます。以降のトレーニングおよび分類タスクでは、各サブフォルダーの名前を画像のラベルとして使用します。
imgDir = fullfile("./10_ObjectCategories/");
file_list = checkDataset(imgDir); % 执行数据集检查
if isempty(file_list)
disp('未检查到灰度图或二值图')
else
disp('检查到灰度图或二值图, 以下文件已被删除')
disp(file_list)
end
dataSet = imageDatastore(imgDir, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
trainSetDetail = countEachLabel(dataSet) % 训练数据
データセットが読み込まれた後、トレーニング セット、検証セット、およびテスト セットに分割する必要があります。ここでは無作為に分割する方法を採用しており、データの 60% をトレーニング セットとして使用し、データの 20% を検証セットとして使用し、残りの 20% をテスト セットとして使用します。このようにして、モデルを適切にトレーニングし、さまざまな種類のデータで効果的に評価できるようにすることができます。
[imdsTrain,imdsValidation, imdsTest] = splitEachLabel(dataSet, 0.6, 0.2, 'randomize'); % 划分数据集
トレーニング データを視覚化するために、16 個のトレーニング サンプルをランダムに選択し、それらを 1 つの画像に表示します。これは、データセットの一般的な状況と画像サンプルの特性を理解するのに役立ちます。
numTrainImages = numel(imdsTrain.Labels);
idx = randperm(numTrainImages,16);
figure
for i = 1:16
subplot(4,4,i)
I = readimage(imdsTrain,idx(i));
imshow(I)
title(imdsTrain.Labels(idx(i)))
end
次に、事前トレーニング済みの ResNet-50 モデルをロードする必要があります。ResNet-50 は、大規模なデータセットで事前トレーニングされた 50 層の深い畳み込みニューラル ネットワークです。事前トレーニング済みのモデルを使用することで、他のデータセットで学習した機能を活用して、トレーニング プロセスを高速化し、モデルのパフォーマンスを向上させることができます。
net = resnet50;
layers = net.Layers
inputSize = net.Layers(1).InputSize % 网络输入尺寸
事前トレーニング済みのモデルを読み込んだ後、分類タスクに合わせて少し変更する必要があります。まず、データセット内のカテゴリ数に対応するために、モデル内の全結合レイヤーを置き換える必要があります。次に、モデルの分類レイヤーを、タスクに対応するように置き換える必要があります。これを実現するために、ここでは新しい全結合層と分類層が使用されます。
lgraph = layerGraph(net);
newLearnableLayer = fullyConnectedLayer(numClasses, ...
'Name','new_fc', ...
'WeightLearnRateFactor',10, ...
'BiasLearnRateFactor',10);
lgraph = replaceLayer(lgraph,'fc1000',newLearnableLayer);
newClassLayer = classificationLayer('Name','new_classoutput');
lgraph = replaceLayer(lgraph,'ClassificationLayer_fc1000',newClassLayer);
上記のコードを実行して、ネットワーク層を次のように出力します。
layers =
具有以下层的 177×1 Layer 数组:
1 'input_1' 图像输入 224×224×3 图像: 'zerocenter' 归一化
2 'conv1' 卷积 64 7×7×3 卷积: 步幅 [2 2],填充 [3 3 3 3]
3 'bn_conv1' 批量归一化 批量归一化: 64 个通道
4 'activation_1_relu' ReLU ReLU
5 'max_pooling2d_1' 最大池化 3×3 最大池化: 步幅 [2 2],填充 [1 1 1 1]
6 'res2a_branch2a' 卷积 64 1×1×64 卷积: 步幅 [1 1],填充 [0 0 0 0]
7 'bn2a_branch2a' 批量归一化 批量归一化: 64 个通道
8 'activation_2_relu' ReLU ReLU
...
モデルの一般化能力を向上させるために、トレーニング プロセス中にデータ拡張技術を使用します。データ拡張では、トレーニング イメージをランダムに変換することで (反転、変換など)、より多くのトレーニング サンプルを生成できます。これにより、さまざまな視点、スケール、形状の画像に直面したときに、モデルの一般化能力が向上します。この例では、ランダムな水平反転とランダムな平行移動がデータ拡張に使用されています。さらに、グレースケール画像も処理する必要があります。事前トレーニング済みの ResNet-50 モデルは入力がカラー画像であることを想定しているため、モデルで正しく処理できるように、グレースケール画像を疑似カラー画像に変換する必要があります。
pixelRange = [-30 30];
imageAugmenter = imageDataAugmenter( ...
'RandXReflection',true, ...
'RandXTranslation',pixelRange, ...
'RandYTranslation',pixelRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
'Data
データの前処理とモデルの変更が完了したら、トレーニング オプションを設定する必要があります。ここでは、確率的勾配降下法 (SGDM) がオプティマイザーとして選択され、バッチ サイズは 32 に設定され、反復の最大数は 2、初期学習率は 1e-4 です。また、学習データをシャッフルする順序、検証セットの指定、検証頻度などのパラメータをラウンドごとに設定します。最後に、モデルのトレーニング プロセス中のパフォーマンスの変化を簡単に観察できるように、トレーニングの進行状況曲線をリアルタイムで描画することを選択します。
options = trainingOptions('sgdm', ...
'MiniBatchSize',32, ...
'MaxEpochs',2, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',3, ...
'Verbose', true, ...
'Plots','training-progress');
次に、変更されたモデルとトレーニング オプションを使用して、トレーニング セットでトレーニングします。トレーニング プロセス中、モデルは検証セットを使用して、設定された検証頻度に従ってパフォーマンスを評価します。これは、モデルが目に見えないデータをどの程度一般化するかを理解するのに役立ちます。
model = trainNetwork(augimdsTrain,lgraph,options);
トレーニングのために上記のコードを実行すると、トレーニング プロセスの出力は次のようになります。
在单 GPU 上训练。
正在初始化输入数据归一化。
|=============================================================================|
| 轮 | 迭代 | 经过的时间 | 小批量准确度 | 验证准确度 | 小批量损失 | 验证损失 | 基础学习率 |
| | | (hh:mm:ss) | | | | | |
|=============================================================================|
| 1 | 1 | 00:00:03 | 9.38% | 8.82% | 2.3537 | 2.3766 | 1.0000e-04 |
| 1 | 3 | 00:00:06 | 9.38% | 21.24% | 2.2348 | 2.0908 | 1.0000e-04 |
| 1 | 6 | 00:00:09 | 43.75% | 53.51% | 1.6566 | 1.6016 | 1.0000e-04 |
| 1 | 9 | 00:00:11 | 62.50% | 67.13% | 1.3257 | 1.2302 | 1.0000e-04 |
| 1 | 12 | 00:00:14 | 68.75% | 71.94% | 1.1022 | 0.9980 | 1.0000e-04 |
| 1 | 15 | 00:00:17 | 87.50% | 78.56% | 0.5462 | 0.8436 | 1.0000e-04 |
...
トレーニングが完了したら、後で使用および分析できるように、トレーニング済みのモデルをファイルに保存します。
save('ResNet_10_classes.mat', 'model');
モデルのパフォーマンスを評価するために、分類にテスト セットが使用されます。モデルによって予測された結果を真のラベルと比較することで、テスト セットでのモデルの精度を計算できます。これは、モデルのパフォーマンスを測定するための重要なメトリックです。
[YPred,scores] = classify(model, augimdsTest);
YTest = imdsTest.Labels;
accuracy = mean(YPred == YTest)
モデルの予測性能をより直感的に示すために、4 つのテスト サンプルがランダムに選択され、1 つの画像に表示されます。これは、モデルがさまざまな種類の画像をどの程度正確に予測するかを視覚化するのに役立ちます。
idx = randperm(numel(imdsTest.Files),4);
figure
for i = 1:4
subplot(2,2,i)
I = readimage(imdsTest,idx(i));
imshow(I)
label = YPred(idx(i));
title(string(label));
end
最後に、混同行列をプロットして、さまざまなクラスでのモデルのパフォーマンスを示します。混同行列は、さまざまなカテゴリでのモデルの正しい分類と誤分類を視覚的に示すことができる、一般的に使用される視覚化方法です。混同行列を使用して、モデルのパフォーマンスが優れているカテゴリと、改善の余地があるカテゴリをさらに分析できます。
figure
plotconfusion(imdsTest.Labels, YPred); % 绘制混淆矩阵图
4. システムの実装
このセクションでは、MATLAB で画像分類およびトレーニング システムの設計を実現する方法を紹介します: システムは 2 つの部分に分割され、最初の部分は予測部分であり、画像の選択、フォルダーの分類、およびモデルの置換を担当します。データセットを選択し、トレーニング パラメータを設定し、ワンクリックでモデルをトレーニングして評価します。システムの設計フレームワークと実装方法は、GUI インターフェイスと組み合わせてデモンストレーションされます。
この画像分類およびトレーニング システムでは、技術的なロジック ダイアグラムを使用して、システム全体の構造とワークフローを要約できます。以下は、技術ロジック ダイアグラムのテキストによる説明です。
- ユーザー インターフェイス (GUI): ユーザー インターフェイスはシステム全体の中核部分であり、ユーザーの入力と指示を受け取る役割を果たします。ユーザー インターフェイスは、予測セクションとトレーニング セクションの 2 つの主要なセクションで構成されます。予測部分では、ユーザーは分類用の写真、フォルダー、モデルを選択できます。トレーニング部分では、ユーザーはデータ セットの選択、トレーニング パラメーターの設定、モデルのトレーニングをワンクリックで行うことができます。
- データの前処理: ユーザーがデータセットを選択すると、システムはデータの拡張やグレースケール画像の変換など、データの前処理を行います。このステップにより、入力データがモデルの要件を満たしていることが保証され、モデルの一般化機能が強化されます。
- モデルのトレーニング: ユーザーがトレーニング パラメーターを設定すると、システムは 3 番目のセクションで紹介した方法を使用してモデルをトレーニングします。トレーニング プロセス中、システムはリアルタイムでトレーニング進行曲線を描画し、ユーザーがモデルのトレーニング ステータスを理解できるようにします。
- モデルの評価: トレーニングが完了すると、システムはモデルのパフォーマンスを自動的に評価し、結果をユーザーに表示します。これは、モデルが目に見えないデータをどの程度一般化するかをユーザーが理解するのに役立ちます。
- 画像分類: [予測] セクションで、ユーザーは分類する画像、フォルダー、およびモデルを選択できます。システムは、ユーザーの選択に従って対応するモデルをロードし、フォルダー内の選択された写真または画像を分類します。
5. まとめと展望
このブログでは、ディープ ニューラル ネットワーク (MATLAB 実装) に基づく画像分類およびトレーニング システムを紹介します。はじめに、GoogleNetとResNetに基づく画像分類の背景と意義、システム研究の現状と関連するアルゴリズムを紹介します。次に、画像分類の選択、フォルダー バッチ認識の選択、異なるネットワーク モデルの置き換え、ワンクリック トレーニング モデルのインターフェイスを介したデータ セットの選択などの機能を含む、システムのインターフェイス デモンストレーション効果が示されました。セクション III では、トレーニング コード、トレーニング曲線、モデル評価結果など、ニューラル ネットワーク トレーニングのプロセスを詳しく紹介します。4 番目のセクションでは、システム実装の 2 つの部分について説明します。予測部分とトレーニング部分であり、GUI インターフェイスと組み合わせて、設計フレームワークと実装が提供されます。
このブログでは、ディープ ニューラル ネットワーク (MATLAB 実装) に基づく画像分類およびトレーニング システムを詳細に紹介しましたが、改善の方向性と課題の可能性がまだいくつかあります。以下は、将来の研究と改善の可能性です。
- より多くの事前トレーニング済みモデル: 現在のシステムでは、GoogleNet と ResNet が主に事前トレーニング済みモデルとして使用されています。システムの一般化能力と適応性を向上させるために、VGGNet や DenseNet などのより多くの事前トレーニング モデルを将来的に検討することができます。
- トレーニング効率の向上: データ強化やバッチ トレーニングなどの機能が実装されていますが、トレーニング プロセスにはまだ時間がかかる場合があります。将来的には、より効率的な最適化アルゴリズムと GPU などのハードウェア アクセラレーション デバイスを使用して、トレーニングの効率を向上させることができます。
- より多くのデータセットのサポート: 現在、当社のシステムは、ユーザーがトレーニング用に固定形式のデータセットを選択することのみをサポートしています。将来的には、ユーザーがより柔軟にトレーニングできるように、より多くの種類のデータ セットのサポートを検討できます。
- リアルタイム認識とオンライン学習: システムをより実用的にするために、リアルタイム認識とオンライン学習機能は、将来のバージョンで考慮することができます。これにより、ユーザーはシステムを使用していつでもどこでも画像を分類し、新しいデータに基づいてモデルを継続的に更新できます。
- より使いやすいインターフェイス: クリーンでシンプルなユーザー インターフェイスが実装されていますが、まだ改善の余地があります。将来のバージョンでは、ユーザー インターフェイスのさらなる最適化を検討して、より直感的で使いやすいものにすることができます。
これらの改善と拡張により、ディープ ニューラル ネットワークに基づく画像分類およびトレーニング システムは、より効率的で便利な画像分類およびトレーニング サービスをより多くのユーザー グループに提供できます。このブログが、関連分野の研究者や開発者にインスピレーションとリファレンスを提供し、画像分類技術の開発と進歩を共同で促進できることを願っています。システムの継続的な改善と最適化を通じて, 同様のシステムが実際のアプリケーションでより大きな役割を果たします. 例えば, 医療診断, 工業検査, インテリジェントセキュリティの分野では, 画像分類技術は診断精度の向上, 生産コストの削減に役立ちます.セキュリティレベルを向上させます。計算能力の向上とアルゴリズムの継続的な改善により。
ダウンロードリンク
ブログ投稿に含まれる完全で完全なプログラム ファイル (下の図に示すように、テスト画像、ビデオ、 mlx、mlappファイル などを含む) を入手したい場合は、それらがパッケージ化され、ブロガーの Bread Multi にアップロードされています。 -platform. 参照用のブログとビデオを参照してください. 関連するすべてのファイルを同時にパッケージ化し、クリックして実行します. 完全なファイルのスクリーンショットは次のとおりです:
次の図に示すように、フォルダーの下のリソースが表示されます。
注: このコードは MATLAB R2022a を使用して開発されており、テスト後に正常に実行できます. 実行中のインターフェイスのメイン プログラムは ImageClassifier.mlapp であり、テスト イメージ スクリプトは testimage.py を実行でき、トレーニング モデル スクリプトは trainResNet.mlx を実行できます. プログラムを円滑に実行するために、MATLAB2022a を使用して実行し、「追加機能マネージャー」(MATLAB の上部メニュー バー -> ホーム -> 追加機能 -> 追加機能の管理) に次のツールを追加してください。
完全なリソースには、データ セットとトレーニング コードが含まれています. 環境の構成と、インターフェイスでテキスト、写真、ロゴなどを変更する方法については、ビデオを参照してください. プロジェクトの完全なファイルをダウンロードするには、参照ブログを参照してください.投稿するか、ビデオの紹介を参照してください: ➷➷ ➷
参照ブログ投稿: https://zhuanlan.zhihu.com/p/626515642
参考動画デモンストレーション:https://www.bilibili.com/video/BV1Fh4y1J7BD/
6. まとめと展望
ブロガーの能力には限りがあるため、ブログ投稿に記載されている方法をテストしたとしても、抜けがあることは避けられません。次の改訂版がより完璧で厳密な方法ですべての人に提示できるように、間違いを熱心に指摘していただければ幸いです。同時に、それを達成するためのより良い方法があれば教えてください。
参考文献
[1] Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., … & Rabinovich, A. (2015). 畳み込みでさらに深くなります。コンピュータ ビジョンとパターン認識に関する IEEE 会議の議事録 (pp. 1-9)。
[2] He, K., Zhang, X., Ren, S., & Sun, J. (2016). 画像認識のための深層残差学習。コンピュータ ビジョンとパターン認識に関する IEEE 会議の議事録 (pp. 770-778)。
[3] Deng, J.、Dong, W.、Socher, R.、Li, LJ、Li, K.、および Fei-Fei, L. (2009 年 6 月)。Imagenet: 大規模な階層画像データベース。2009 年、コンピューター ビジョンとパターン認識に関する IEEE カンファレンス (pp. 248-255)。IEEE。
[4] クリジェフスキー、A. (2009). 小さな画像から複数層の特徴を学習する (博士論文、トロント大学)。
[5] Simonyan, K. & Zisserman, A. (2014). 大規模な画像認識のための非常に深い畳み込みネットワーク。arXiv プレプリント arXiv:1409.1556.
[6] Huang, G., Liu, Z., Van Der Maaten, L., & Weinberger, KQ (2017). 密に接続された畳み込みネットワーク。コンピュータ ビジョンとパターン認識に関する IEEE 会議の議事録 (pp. 4700-4708)。
[7] Zeiler, MD, & Fergus, R. (2014). 畳み込みネットワークの視覚化と理解。コンピュータ ビジョンに関するヨーロッパの会議 (pp. 818-833)。スプリンガー、チャム。
[8] Hinton, GE, Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, RR (2012). 特徴検出器の共適応を防止することによるニューラル ネットワークの改善。arXiv プレプリント arXiv:1207.0580.
[9] Ioffe, S. & Szegedy, C. (2015). バッチ正規化: 内部共変量シフトを減らすことにより、ディープ ネットワーク トレーニングを加速します。arXiv プレプリント arXiv:1502.03167.