目錄
1. 角色設定
2. 想法引導
3. 寫程式碼
4. 擴充
首頁 科技週邊 人工智慧 摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

Apr 07, 2023 pm 03:06 PM
chatgpt 開發 摔倒識別

哈嘍,大家好。

之前曾給大家分享過摔倒識別、打架識別,今天以摔倒識別為例,我們看看能不能完全交給ChatGPT來做。

讓ChatGPT來做這件事,最核心的是如何向ChatGPT提問,把問題一股腦的直接丟給ChatGPT,如:用Python 寫個摔倒檢測代碼 是不可取的, 而是要像擠牙膏一樣,一點一點引導ChatGPT得到準確的答案,才能真正讓ChatGPT提高我們解決問題的效率。

今天分享的摔倒識別案例,與ChatGPT對話的思路清晰,代碼可用度高,按照GPT返回的結果完全可以開發一個摔倒識別的項目了,並且還有一些延伸的話題,如:畢設的改進點。

下面開始正式的分享。

1. 角色設定

向ChatGPT提問首先要給他一個角色設定,在演算法領域這叫prompt,有了進入了角色,才能更好地回答問題。所以,我提問的第一句是:

假如你是AI工程師,我想辨識影片中是否有跌倒行為,有哪些辦法

沒必要剛上來就讓他直接寫程式碼,先問他有哪些辦法或思路。

我們來看看ChatGPT的答案

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

給了3個方案,有傳統的圖像方法,也有深度學習方法。

2. 想法引導

我們當然是對深度學習感興趣了,所以繼續詢問關於深度學習的方法

使用深度學習的方法有哪些

ChatGPT回答

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

從卷積神經網路到卷積循環神經網路說了個遍。

看起來循環神經網路RNN更簡單、可靠,接下來我的提問是

我需要循環神經網路(RNN) 的方法

ChatGPT回答

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

給出了非常詳細的、實操性非常強的步驟,我簡單歸類一下,大致是兩步:

第一步,對視訊預處理,用卷積神經網絡(如:ResNet)提取視頻動作特徵(類似wordembedding) 第二步,用動作特徵作為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的回答,我直接把程式碼文字貼出來了。

定義了兩個獨立函數,分別完成了第一步中的兩小步驟內容。

程式碼沒有問題,先呼叫preprocess_video函數對視訊預處理,再呼叫 extract_features卷積操作,就可以將一個向量embedding成一個2048維的向量。

第二步,我拆分成了兩小步,先搭建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提問

他可以自動幫我們把影片預處理、特徵提取和推理三部分都串起來,形成一個完整的項目。

4. 擴充

到這裡,我們就完全用ChatGPT把專案做完了。

我們還可以聊一些擴充性的話題,如:

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

也可以讓ChatGPT幫我們想一些能突顯學術價值的點

摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問

看到這裡,說明我的文章對你多少有一丟丟的幫助。不管是否加入星球,我都感謝對大家對我的認同與信任。

以上是摔倒偵測-完全用ChatGPT開發,分享如何正確地向ChatGPT提問的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

ChatGPT 現在允許免費用戶使用 DALL-E 3 產生每日限制的圖像 ChatGPT 現在允許免費用戶使用 DALL-E 3 產生每日限制的圖像 Aug 09, 2024 pm 09:37 PM

DALL-E 3 於 2023 年 9 月正式推出,是比其前身大幅改進的車型。它被認為是迄今為止最好的人工智慧圖像生成器之一,能夠創建具有複雜細節的圖像。然而,在推出時,它不包括

四款值得推薦的AI輔助程式工具 四款值得推薦的AI輔助程式工具 Apr 22, 2024 pm 05:34 PM

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

手機怎麼安裝chatgpt 手機怎麼安裝chatgpt Mar 05, 2024 pm 02:31 PM

安裝步驟:1、在ChatGTP官網或手機商店下載ChatGTP軟體;2、開啟後在設定介面中,選擇語言為中文;3、在對局介面中,選擇人機對局並設定中文相譜;4 、開始後在聊天視窗中輸入指令,即可與軟體互動。

AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距離世界首個AI程式設計師Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程式設計師SWE-agent。它利用GPT-4模型在GitHub儲存庫中自動解決問題。 SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。 SWE-agent透過與專用終端交互,可以開啟、搜尋文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。 (註:以上內容為原始內容微調,但保留了原文中的關鍵訊息,未超過指定字數限制。)SWE-A

學習如何利用Go語言開發行動應用程式 學習如何利用Go語言開發行動應用程式 Mar 28, 2024 pm 10:00 PM

Go語言開發行動應用程式教學隨著行動應用程式市場的不斷蓬勃發展,越來越多的開發者開始探索如何利用Go語言開發行動應用程式。作為一種簡潔高效的程式語言,Go語言在行動應用開發中也展現了強大的潛力。本文將詳細介紹如何利用Go語言開發行動應用程序,並附上具體的程式碼範例,幫助讀者快速入門並開始開發自己的行動應用程式。一、準備工作在開始之前,我們需要準備好開發環境和工具。首

chatgpt國內可以使用嗎 chatgpt國內可以使用嗎 Mar 05, 2024 pm 03:05 PM

chatgpt在國內可以使用,但不能註冊,港澳也不行,用戶想要註冊的話,可以使用國外的手機號碼進行註冊,注意註冊過程中要將網路環境切換成國外ip。

Android開發最適合的Linux發行版是哪一個? Android開發最適合的Linux發行版是哪一個? Mar 14, 2024 pm 12:30 PM

Android開發是一項繁忙而又令人興奮的工作,而選擇適合的Linux發行版來進行開發則顯得尤為重要。在眾多的Linux發行版中,究竟哪一個最適合Android開發呢?本文將從幾個方面來探討這個問題,並給出具體的程式碼範例。首先,我們來看看目前流行的幾個Linux發行版:Ubuntu、Fedora、Debian、CentOS等,它們都有各自的優點和特點。

了解VSCode:這款工具到底是用來做什麼的? 了解VSCode:這款工具到底是用來做什麼的? Mar 25, 2024 pm 03:06 PM

《了解VSCode:這款工具到底是用來做什麼的? 》身為程式設計師,無論是初學者或資深開發者,都離不開程式碼編輯工具的使用。在眾多編輯工具中,VisualStudioCode(簡稱VSCode)作為一款開源、輕量級、強大的程式碼編輯器備受開發者歡迎。那麼,VSCode到底是用來做什麼的呢?本文將深入探討VSCode的功能和用途,並提供具體的程式碼範例,以幫助讀者

See all articles