ホームページ > テクノロジー周辺機器 > AI > 転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

PHPz
リリース: 2023-04-07 15:13:52
転載
1976 人が閲覧しました

###こんにちは、みんな。

以前、転倒認識と戦闘認識について共有しましたが、今日は転倒認識を例として、ChatGPT に完全に任せることができるかどうかを確認します。

これを ChatGPT にやらせます。最も重要なことは、ChatGPT に質問する方法です。すべての質問を直接 ChatGPT に投げます。たとえば、転倒検出コードを Python で記述することはお勧めできません。代わりに、次のようにします。歯磨き粉を絞るとき、ChatGPT が問題解決の効率を真に向上できるように、ChatGPT を段階的にガイドして正確な回答を得ることができます。

今日共有された転倒認識ケースには、ChatGPT との対話と高いコードの使いやすさに関する明確なアイデアがあり、GPT から返された結果に従って、転倒認識プロジェクトを開発することができ、いくつかの拡張されたトピックがあります。例: Bi 彼女の改善点。

正式な共有は以下から始まります。

1. ロール設定

ChatGPT に質問するには、まずロール設定を与える必要があります。アルゴリズム フィールドでは、これをプロンプトと呼びます。ロールを入力することによってのみ回答できます。質問の方が良いです。したがって、私の質問の最初の文は次のとおりです:

あなたが AI エンジニアで、ビデオに転倒があるかどうかを特定したい場合、どのような方法がありますか?

コードを直接書き、まずどのような方法やアイデアがあるのか​​を尋ねます。

ChatGPT の回答を見てみましょう

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

では、従来の画像手法と深層学習手法を含む 3 つのソリューションが提供されています。

2. アイデアのガイダンス

もちろんディープラーニングに興味があるので、ディープラーニングの手法について質問し続けます

ディープラーニングの利用方法とは何ですか

ChatGPT の答え

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

畳み込みニューラル ネットワークから畳み込みリカレント ニューラル ネットワークまで、すべてについて話しました。

リカレント ニューラル ネットワーク RNN の方がシンプルで信頼性が高いようです。次の質問は

リカレント ニューラル ネットワーク (RNN) の手法が必要です。

ChatGPT回答

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

は、非常に詳細で非常に実践的な手順を示しています。簡単に 2 つの手順に分類します:

最初の手順は、ビデオの前処理であり、畳み込みアルゴリズムを使用します。ニューラル ネットワーク (ResNet など) を使用してビデオ アクション特徴を抽出します (単語埋め込みと同様)。2 番目のステップでは、アクション特徴を lstm モデルの入力として使用し、lstm リカレント ニューラル ネットワークをトレーニングし、アクション特徴を分類して識別します。反転動作

3. コードを記述する

これまでのところ、ChatGPT は問題を解決するための非常に明確なアイデアと非常に強力な実行可能性を提供してきました。

つまり、現時点では ChatGPT にコードを記述させることができます。

上で分割した手順に従って、最初のステップのコードを一度に書くように頼んだので、私の質問は次のとおりです:

ビデオ前処理コードを作成し、pytorch resnet を使用してビデオ機能を抽出します

ChatGPT の回答

好的,下面是通过 Pytorch 的 ResNet 提取视频特征的代码,以及视频预处理的示例代码:

视频预处理:

import cv2
import numpy as np

def preprocess_video(video_path, n_frames=16, resize=(224, 224)):
# 读取视频
cap = cv2.VideoCapture(video_path)
frames = []
while True:
ret, frame = cap.read()
if not ret:
break
# 强制转换为 RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 图像缩放
frame = cv2.resize(frame, resize)
# 图像增强等操作
# ...
frames.append(frame)
cap.release()
# 取固定帧数 n_frames,超过后从中间开始截取
n_frames = min(len(frames), n_frames)
start = (len(frames) - n_frames) // 2
end = start + n_frames
# 截取帧数后堆叠成四维数组
frames = np.stack(frames[start:end], axis=0)
# 转换为支持 Pytorch 模型的格式 (B, C, T, H, W)
frames = np.transpose(frames, (0, 3, 1, 2))
return frames
提取视频特征:

import torch
import torchvision.models as models

def extract_features(frames):
# 加载 ResNet 模型
resnet = models.resnet50(pretrained=True)
# 去掉最后的全连接层
resnet = torch.nn.Sequential(*list(resnet.children())[:-1])
# 将 ResNet 设置为评估模式
resnet.eval()
# 将预处理后的视频序列转化为 Tensor,并调整为指定的数据类型和范围
frames = torch.from_numpy(frames).float() / 255.0
# 减去 ImageNet 数据集的均值和标准差
normalize = torch.nn.Normalize(
mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]
)
frames = normalize(frames)
# 前向预测,输出 2048 维特征向量
with torch.no_grad():
features = resnet(frames)
return features.reshape(-1, 2048)
在上面这两块代码中,preprocess_video() 函数将读取视频,并将其转换为指定大小的图像帧,返回处理后的数据;extract_features() 函数将接受上一步处理后的数据,并将其转化为 Pytorch 的 Tensor,使用训练好的 ResNet 模型对每一帧图像进行特征提取,并返回一个形状为 (B, 2048) 的 Tensor,其中 B 为帧数。
ログイン後にコピー

画像が長すぎます。ChatGPT の回答をよりよく理解していただくために、コード テキストを直接投稿しました。

2 つの独立した関数を定義し、それぞれ最初のステップの 2 つの小さなステップを完了します。

コードに問題はありません。まず preprocess_video 関数を呼び出してビデオを前処理し、次に extract_features 畳み込み演算を呼び出して 2048 次元のベクトルにベクトルを埋め込みます。

2 番目のステップでは、これを 2 つの小さなステップに分割します。最初に lstm モデルを構築し、次にトレーニングします。

上記で生成された結果に基づいて、pytorch lstm を使用してビデオ分類モデルを構築します。

ChatGPT の回答

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

モデル トレーニング コードを作成します

ChatGPT の回答

好的,下面是使用 Pytorch 训练视频分类模型的代码:

import torch
import torch.nn as nn
import torch.optim as optim

# 训练函数
def train(model, criterion, optimizer, dataloader, num_epochs=10):
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)# 将模型移动到 GPU 或 CPU 上
for epoch in range(num_epochs):
running_loss = 0.0
correct_predictions = 0
total_predictions = 0
for inputs, labels in dataloader:
inputs = inputs.to(device)
labels = labels.to(device)

optimizer.zero_grad()

with torch.set_grad_enabled(True):
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
loss = criterion(outputs, labels)

loss.backward()
optimizer.step()

running_loss += loss.item() * inputs.size(0)
correct_predictions += torch.sum(preds == labels.data)
total_predictions += labels.size(0)

epoch_loss = running_loss / len(dataloader.dataset)
epoch_acc = correct_predictions.double() / total_predictions

print("Epoch {}: Loss {:.4f} Acc: {:.4f}".format(epoch + 1, epoch_loss, epoch_acc))

# 定义超参数
BATCH_SIZE = 4
NUM_EPOCHS = 20

# 定义数据集,假设已经准备好了训练数据集和测试数据集
train_dataset = ...
test_dataset = ...

# 定义数据加载器
train_dataloader = torch.utils.data.DataLoader(
train_dataset, batch_size=BATCH_SIZE, shuffle=True
)
test_dataloader = torch.utils.data.DataLoader(
test_dataset, batch_size=BATCH_SIZE, shuffle=False
)

# 定义模型
input_size = 2048
hidden_size = 512
num_layers = 1
num_classes = 2
model = VideoLSTM(input_size, hidden_size, num_layers, num_classes)

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())

# 训练模型
train(model, criterion, optimizer, train_dataloader, num_epochs=NUM_EPOCHS)
在代码中,首先定义了模型的超参数,如 BATCH_SIZE 和 NUM_EPOCHS。接着定义了训练数据集和测试数据集,并使用 Pytorch 的 DataLoader 将数据加载为 batch。然后定义了模型、损失函数和优化器。最后调用 train() 函数进行模型训练。

在训练过程中,每个 epoch 循环训练所有的视频帧,计算损失函数,计算准确率,并输出当前 epoch 的平均损失和准确率。训练完成后,可以将模型的参数保存到磁盘上,以便以后使用。
ログイン後にコピー

コードの使いやすさは非常に優れています高い。コード連結のコストを除けば、基本的に独立した各モジュールを移動する必要がなく、開発効率が非常に高くなります。

ChatGPT にデータ セットを見つけるように依頼することもできます

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

ChatGPT にモデル推論用のコードを書くように依頼することもできます

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

これは、ビデオの前処理、特徴抽出、推論の 3 つの部分をつなぎ合わせて完全なプロジェクトを形成するのに自動的に役立ちます。

4. 拡張機能

この時点で、ChatGPT を使用したプロジェクトは完全に完了しました。

次のような拡張トピックについても話すことができます:

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

ChatGPT に、学術的価値を強調できるいくつかの点を考えるのを手伝ってもらうこともできます。

転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有します

これを見ると、次のことがわかります。私の記事は、あなたにとって非常に重要です。 Planet に参加するかどうかに関係なく、皆さんが私を認めて信頼してくださっていることに感謝しています。

以上が転倒検出 - ChatGPT で完全に開発されており、ChatGPT に正しく質問する方法を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート