Rumah  >  Artikel  >  Peranti teknologi  >  Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul

PHPz
PHPzke hadapan
2023-04-07 15:06:041956semak imbas

Helo, semua.

Saya telah berkongsi dengan anda pengiktirafan jatuh dan melawan pengiktirafan hari ini, kita akan mengambil pengiktirafan musim gugur sebagai contoh untuk melihat sama ada kita boleh menyerahkan sepenuhnya kepada ChatGPT.

Biarkan ChatGPT melakukan ini Perkara yang paling penting ialah bagaimana untuk bertanya kepada ChatGPT memerah ubat gigi, kami membimbing ChatGPT langkah demi langkah untuk mendapatkan jawapan yang tepat, supaya ChatGPT benar-benar dapat meningkatkan kecekapan kami dalam menyelesaikan masalah.

Kes pengecaman jatuh yang dikongsi hari ini mempunyai idea yang jelas tentang dialog dengan ChatGPT dan kebolehgunaan kod tinggi Menurut hasil yang dikembalikan oleh GPT, projek pengecaman jatuh boleh dibangunkan, dan terdapat beberapa topik lanjutan. Seperti: Mata penambahbaikan Bi She.

Perkongsian rasmi bermula di bawah.

1. Tetapan peranan

Untuk mengajukan soalan kepada ChatGPT, anda mesti memberinya tetapan peranan Dalam bidang algoritma, ini dipanggil gesaan Hanya dengan memasukkan peranan boleh anda menjawab soalan dengan lebih baik. Oleh itu, ayat pertama soalan saya ialah:

Jika anda seorang jurutera AI, saya ingin mengenal pasti sama ada terdapat kejatuhan dalam video, apakah kaedahnya? perlu melepaskannya sebaik sahaja anda menulis kod itu secara langsung, dan mula-mula bertanya kaedah atau idea yang dia ada.

Mari kita lihat jawapan ChatGPT

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul memberikan 3 penyelesaian, termasuk kaedah imej tradisional dan kaedah pembelajaran mendalam.

2. Bimbingan Idea

Sudah tentu kami berminat dengan pembelajaran mendalam, jadi kami terus bertanya tentang kaedah pembelajaran mendalam

Apakah kaedah menggunakan pembelajaran mendalam

Jawapan ChatGPT

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betulSaya bercakap mengenainya daripada rangkaian saraf konvolusi kepada rangkaian saraf berulang konvolusi.

Nampaknya rangkaian neural berulang RNN ​​lebih mudah dan lebih dipercayai Soalan saya yang seterusnya ialah

Saya memerlukan kaedah rangkaian saraf berulang (RNN)

CtGPT. jawapan

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul memberikan langkah-langkah yang sangat terperinci dan praktikal Saya akan mengklasifikasikannya secara ringkas kepada dua langkah:

Langkah pertama ialah prapemprosesan video, gunakan saraf konvolusi. rangkaian (seperti ResNet) untuk mengekstrak ciri tindakan video (serupa dengan wordembedding).

3. Tulis kod

Setakat ini, ChatGPT telah memberikan kami idea yang sangat jelas untuk menyelesaikan masalah dan kebolehlaksanaan yang sangat kuat.

Jadi, sekarang kita boleh membenarkan ChatGPT menulis kod.

Mengikut langkah yang saya bahagikan di atas, saya memintanya menulis kod langkah pertama sekali gus, jadi soalan saya ialah:

Tulis kod prapemprosesan video dan gunakan pytorch resnet Mengekstrak ciri video

Jawapan ChatGPT

Gambar terlalu panjang untuk semua orang lebih memahami jawapan ChatGPT, saya terus menyiarkan teks kod.
好的,下面是通过 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 为帧数。

mentakrifkan dua fungsi bebas, yang masing-masing melengkapkan dua langkah kecil dalam langkah pertama.

Tiada masalah dengan kod mula-mula panggil fungsi preprocess_video untuk mempraproses video, dan kemudian panggil operasi convolution extract_features untuk membenamkan vektor ke dalam vektor 2048 dimensi.

Dalam langkah kedua, saya membahagikannya kepada dua langkah kecil, mula-mula membina model lstm, dan kemudian melatih

Berdasarkan keputusan yang dihasilkan di atas, saya menggunakan pytorch lstm untuk membina klasifikasi video model

Jawapan ChatGPT

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betulTulis kod latihan model

Jawapan ChatGPT

Kebolehgunaan kod sangat tinggi. Kecuali kos penggabungan kod, setiap modul bebas pada dasarnya tidak perlu dipindahkan, dan kecekapan pembangunan adalah sangat cekap.
好的,下面是使用 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 的平均损失和准确率。训练完成后,可以将模型的参数保存到磁盘上,以便以后使用。

Anda juga boleh meminta ChatGPT mencari beberapa set data

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betulAnda juga boleh memintanya menulis kod untuk inferens model

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betulDia secara automatik boleh membantu kami menyusun tiga bahagian prapemprosesan video, pengekstrakan ciri dan inferens untuk membentuk projek yang lengkap.

4. Pengembangan

Pada ketika ini, kami telah menyelesaikan sepenuhnya projek menggunakan ChatGPT.

Kita juga boleh bercakap tentang beberapa topik lanjutan, seperti:

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul

Kami juga boleh meminta ChatGPT untuk membantu kami memikirkan beberapa perkara yang boleh menyerlahkan nilai akademik

Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul

Melihat ini, ia bermakna bahawa artikel saya amat penting Anda ada bantuan. Tidak kira sama ada saya menyertai Planet atau tidak, saya berterima kasih atas pengiktirafan dan kepercayaan semua orang kepada saya.

Atas ialah kandungan terperinci Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam