[7週間]プロジェクト準備
6813 ワード
最後のプロジェクトを行うためにチームを特定する必要があります.
興味のあるガンを提案すると、残念なことに、
ガンにあまり興味を持っている人はいません.
3つの選択肢がありますの注目度の低い他のトピックを選択してチームに参加します. 1と並行して、GANのサブプロジェクトの処理を別途準備する. 独自のプロジェクトを準備します. 1就職先は変えられると思うので2と3を考えて、どうせ2をやるなら頑張ろう(2項目やるから)
することにしました.
他のチームの3~4人以上が一人で仕事を終えなければならないので、事前に準備することにしました.
大事を準備するには計画が必要だ.
計画通りにすべてを実現することはできませんが、
しかし、これは計画がないわけではない.
今判断すると、巨大な茎がリストされています.
計画は段階的に進める.
準備するプロジェクトの大きなフレームワーク.
これは自然言語音声生成プロジェクトです.
サービス面では、
ビデオ+字幕ファイルの場合、
字幕ファイルの内容により
ビデオの各字幕位置で字幕コンテンツに適合する音声が生成され、ビデオにマージされる.
音声生成はGANに基づく.
声をイントネーション+アクセントに分ける場合、
アクセントにはもっとデータが必要です.
少なくとも少ないデータを受信
データと似たような音を実現することが目標です.
今から基礎内容から勉強します.
具体的な中間目標は以下の通り.
Webサーバは、ビデオファイル、字幕ファイルを入力できます.
基本的にいくつかのサンプル音を提供します.
(最も重要なのは)任意の音声ファイル(録音または音声ファイル)を提供することによって、対応する音声ファイルに基づいて音声を生成することができる.
単純な声の類似性が基本前提 が提供する音声トーン情報は、データが少ない場合によく表現されますか?これはサーブの目標です. ビデオを入力すると、手動で時間順にビデオを閲覧し、字幕を入力することができます. サーバは、プログラマのサポートの下でAWSを使用する予定です. Webサーバを配備する必要があります. で予想される問題:アップロード、バッファ時間が長い(ビデオファイルの容量は通常大きい):商用サービスではないため、重要な考慮対象ではないが、どのように最小化するかを考慮すべきである. 本事業は、商業化を目指したものではなく、自分の能力向上を目指したものです.
したがって,最も有効なアルゴリズムである必要はない.
目標は、最新の、顕著な効果を有する、独自の利点を有する技術を使用することである.
どのテクノロジーを使用しても、独自の理由が必要です.この過程で、最大の改善点を見つけましょう.
の商用化は目的ではありませんが、導入を前提としたサービスですので、使用上の深刻な問題を回避するために、できるだけ効率的に作成する必要があります.
従来の技術的な問題を解決した後、UIはより直感的で使いやすいように改善されるべきである.
シンプルで便利なデザインを目指します.
深さ学習モードが用意されていなければ、他はハウジングプロジェクトにすぎません.
そのため、
1.GANの基礎知識を学ぶ
2.音声合成GANモデルの実装例
現在、次のモデルを使用する予定です:HiFi-GAN
3.例示的なデータを用いて実施形態のサービス適合性を評価する
4.対応モデルを設計するサービスフロー
5.データの準備とトレーニングの準備前のパターン
5.Webサーバ実装(ベースUI)
6.サーバを使用したWebおよびモデルの導入
7.UIの改善とモデルの改善
進行を計画する.
一般的に、ニューラルネットワークは情報を減少させ、停滞させ、収縮させる.
例えば、画像分類の問題では、
n*mは、画像画素データをk個の出力(分割タイプ)に変換する.
これを逆にしたらどうですか.
個入力すると、n*m画像の画素データが出力されますか?
基本的にはbackqueryと呼ばれています.
逆クエリによって生成される画像には、基本的に次の特性があります.などの1つの熱符号化ベクトル面の結果を出力する. ラベルを表示するすべてのトレーニングデータの平均画像が出てきました. しかし、理想的な目標は上記ではなく、以下の内容である.は、それぞれ異なる画像を生成する.(その他の結果) は、元の入力されたトレーニングデータのように見える画像を生成する. 一般的なクエリーでは、これらのターゲットを達成できません.
しかし、それを可能にしたのはGAN.
ガンから
既存のより大きく、より広く、またはより深いニューラルネットワーク構造
または新しいアクティブ化関数
または新しい最適化方法
GANは構造的に性質が異なることに発展した.
判別器は入力値が真か否かを区別しなければならない.
ジェネレータは、自分が生成した仮象を判別器を通過させるべきである.
ジェネレータが作成した画像が判別器をだました場合,ジェネレータに奨励される.
だまされなければジェネレータを罰します.
この過程を繰り返す.
判別器とジェネレータを互いに性能を向上させる(敵対関係)
この場合、判別器とジェネレータは同時に類似のレベルに成長しなければならない.
GANは基本的に以下の手順で構成される.判別器に実データを入力して分類する.結果は1で、誤差が発生した場合は判別器の更新に使用します. 判別器に生成したデータを入力し分類する.結果はゼロで、誤差が発生した場合は判別器のみ更新します.
訓練ジェネレータ.
似たようなレベルに達しなければならない.
ジェネレータのニューラルネットワークは判別器のコピーから始まることが多い
(もちろん、入出力は逆)11010 GAN例 1、0、1、0の入力が真のデータであると判別する例.
トレーナ時に判別器を更新しない
はつでんき
だんだん、パターンがきつくなっていくのが見えます
興味のあるガンを提案すると、残念なことに、
ガンにあまり興味を持っている人はいません.
3つの選択肢があります
することにしました.
他のチームの3~4人以上が一人で仕事を終えなければならないので、事前に準備することにしました.
大事を準備するには計画が必要だ.
計画通りにすべてを実現することはできませんが、
しかし、これは計画がないわけではない.
今判断すると、巨大な茎がリストされています.
計画は段階的に進める.
準備するプロジェクトの大きなフレームワーク.
これは自然言語音声生成プロジェクトです.
サービス面では、
ビデオ+字幕ファイルの場合、
字幕ファイルの内容により
ビデオの各字幕位置で字幕コンテンツに適合する音声が生成され、ビデオにマージされる.
音声生成はGANに基づく.
声をイントネーション+アクセントに分ける場合、
アクセントにはもっとデータが必要です.
少なくとも少ないデータを受信
データと似たような音を実現することが目標です.
今から基礎内容から勉強します.
具体的な中間目標は以下の通り.
Webサーバは存在する必要があります。
Webサーバは、ビデオファイル、字幕ファイルを入力できます.
基本的にいくつかのサンプル音を提供します.
(最も重要なのは)任意の音声ファイル(録音または音声ファイル)を提供することによって、対応する音声ファイルに基づいて音声を生成することができる.
GANベースの音声合成
したがって,最も有効なアルゴリズムである必要はない.
目標は、最新の、顕著な効果を有する、独自の利点を有する技術を使用することである.
能率が高い
審美性
従来の技術的な問題を解決した後、UIはより直感的で使いやすいように改善されるべきである.
シンプルで便利なデザインを目指します.
プロジェクトの進捗
深さ学習モードが用意されていなければ、他はハウジングプロジェクトにすぎません.
そのため、
1.GANの基礎知識を学ぶ
2.音声合成GANモデルの実装例
現在、次のモデルを使用する予定です:HiFi-GAN
3.例示的なデータを用いて実施形態のサービス適合性を評価する
4.対応モデルを設計するサービスフロー
5.データの準備とトレーニングの準備前のパターン
5.Webサーバ実装(ベースUI)
6.サーバを使用したWebおよびモデルの導入
7.UIの改善とモデルの改善
進行を計画する.
Generative Advancial Networks,GANベース
一般的に、ニューラルネットワークは情報を減少させ、停滞させ、収縮させる.
例えば、画像分類の問題では、
n*mは、画像画素データをk個の出力(分割タイプ)に変換する.
これを逆にしたらどうですか.
個入力すると、n*m画像の画素データが出力されますか?
基本的にはbackqueryと呼ばれています.
逆クエリによって生成される画像には、基本的に次の特性があります.
しかし、それを可能にしたのはGAN.
ガンから
既存のより大きく、より広く、またはより深いニューラルネットワーク構造
または新しいアクティブ化関数
または新しい最適化方法
GANは構造的に性質が異なることに発展した.
判別器は入力値が真か否かを区別しなければならない.
ジェネレータは、自分が生成した仮象を判別器を通過させるべきである.
ジェネレータが作成した画像が判別器をだました場合,ジェネレータに奨励される.
だまされなければジェネレータを罰します.
この過程を繰り返す.
判別器とジェネレータを互いに性能を向上させる(敵対関係)
この場合、判別器とジェネレータは同時に類似のレベルに成長しなければならない.
GANは基本的に以下の手順で構成される.
訓練
似たようなレベルに達しなければならない.
ジェネレータのニューラルネットワークは判別器のコピーから始まることが多い
(もちろん、入出力は逆)
class Discriminator(nn.Module):
def __init__(self):
super().__init__()
self.model = nn.Sequential(
nn.Linear(4, 3),
nn.Sigmoid(),
nn.Linear(3, 1),
nn.Sigmoid()
)
self.loss_function = nn.MSELoss()
self.optimiser = torch.optim.SGD(self.parameters(), lr=0.01)
self.count = 0
self.progress = []
def forward(self, inputs):
return self.model(inputs)
def train(self, inputs, targets):
outputs = self.forward(inputs)
loss = self.loss_function(outputs, targets)
self.count += 1
if (self.count % 10 == 0):
self.progress.append(loss.item())
if (self.count % 10000 == 0):
print("counter : ", self.count)
self.optimiser.zero_grad()
loss.backward()
self.optimiser.step()
def plot_progress(self):
df = pandas.DataFrame(self.progress, columns=['loss'])
df.plot(ylim=(0, 1.0), figsize=(16, 8), alpha=0.1, marker='.', grid=True, yticks=(0, 0.25, 0.5))
class Generator(nn.Module):
def __init__(self):
super().__init__()
self.model = nn.Sequential(
nn.Linear(1, 3),
nn.Sigmoid(),
nn.Linear(3, 4),
nn.Sigmoid()
)
self.optimiser = torch.optim.SGD(self.parameters(), lr=0.01)
self.counter = 0
self.progress = []
def forward(self, inputs):
return self.model(inputs)
def train(self, D, inputs, targets):
# 신경망 출력 계산
g_output = self.forward(inputs)
# 판별기로 전달
d_output = D.forward(g_output)
loss = D.loss_function(d_output, targets)
self.counter += 1
if (self.counter % 10 == 0):
self.progress.append(loss.item())
self.optimiser.zero_grad()
loss.backward()
self.optimiser.step()
ジェネレータのtrainを上図の3つのステップと比較すると、トレーナ時に判別器を更新しない
%%time
image_list = []
D = Discriminator()
G = Generator()
# train Discriminator and Generator
for i in range(10000):
# 1단계 : 참에 대한 판별기 훈련
D.train(generate_real(), torch.FloatTensor([1.0]))
# 2단계 : 거짓에 대한 판별기 훈련
# G의 기울기가 계산되지 않도록 detach 함수를 이용
# G의 출력에 적용되어 계산 그래프에서 생성기를 떼어내는 역할
# D에서 호출된 backward에서 시작된 기울기 계산이 생성기까지 이어지는데, 이를 떼어냄으로써 방지
# 이는 결과에 영항을 주는 것이 아니라, 사실 이 계산이 필요없는 행위인데
# 큰 신경망 구조에서 시간 복잡도에 영향을 주기 때문
D.train(G.forward(torch.FloatTensor([0.5])).detach(), torch.FloatTensor([0.0]))
# 3단계 : 생성기 훈련
G.train(D, torch.FloatTensor([0.5]), torch.FloatTensor([1.0]))
# add image to list every 1000
if (i % 1000 == 0):
image_list.append( G.forward(torch.FloatTensor([0.5])).detach().numpy() )
pass
GANトレーニング3段階後はつでんき
だんだん、パターンがきつくなっていくのが見えます
plt.figure(figsize = (16,8))
plt.imshow(numpy.array(image_list).T, interpolation='none', cmap='Blues')
Reference
この問題について([7週間]プロジェクト準備), 我々は、より多くの情報をここで見つけました https://velog.io/@withdongyeong/20220117テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol