Rumah > Artikel > Peranti teknologi > Pengesanan jatuh - dibangunkan sepenuhnya dengan ChatGPT, kongsi cara bertanya soalan kepada ChatGPT dengan betul
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.
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
memberikan 3 penyelesaian, termasuk kaedah imej tradisional dan kaedah pembelajaran mendalam.
2. Bimbingan Idea
Apakah kaedah menggunakan pembelajaran mendalam
Jawapan ChatGPT
Saya 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
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
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
Tulis 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
Anda juga boleh memintanya menulis kod untuk inferens model
Dia secara automatik boleh membantu kami menyusun tiga bahagian prapemprosesan video, pengekstrakan ciri dan inferens untuk membentuk projek yang lengkap.
4. Pengembangan
Kita juga boleh bercakap tentang beberapa topik lanjutan, seperti:
Kami juga boleh meminta ChatGPT untuk membantu kami memikirkan beberapa perkara yang boleh menyerlahkan nilai akademik
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!