찾다
기술 주변기기일체 포함넘어짐 감지 - 완전히 ChatGPT로 개발되었으며 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로 개발되었으며 ChatGPT에 올바르게 질문하는 방법을 공유합니다.太长了,为了大家能更好的感受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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
외삽에 대한 포괄적 인 가이드외삽에 대한 포괄적 인 가이드Apr 15, 2025 am 11:38 AM

소개 매일 몇 주 만에 작물의 진행 상황을 관찰하는 농부가 있다고 가정합니다. 그는 성장률을보고 몇 주 안에 식물이 얼마나 키가 커질 수 있는지에 대해 숙고하기 시작합니다. Th

소프트 AI의 부상과 오늘날 비즈니스의 의미소프트 AI의 부상과 오늘날 비즈니스의 의미Apr 15, 2025 am 11:36 AM

Soft AI-대략적인 추론, 패턴 인식 및 유연한 의사 결정을 사용하여 구체적이고 좁은 작업을 수행하도록 설계된 AI 시스템으로 정의 된 것은 모호성을 수용하여 인간과 같은 사고를 모방하려고합니다. 그러나 이것이 바이러스의 의미는 무엇입니까?

AI 국경을위한 진화 보안 프레임 워크AI 국경을위한 진화 보안 프레임 워크Apr 15, 2025 am 11:34 AM

클라우드 컴퓨팅이 클라우드 네이티브 보안 도구로의 전환이 필요했기 때문에 AI는 AI의 고유 한 요구를 위해 특별히 설계된 새로운 유형의 보안 솔루션을 요구합니다. 클라우드 컴퓨팅 및 보안 수업의 상승이 배웠습니다 th

3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!3 가지 방법 생성 AI 기업가를 증폭시킵니다 : 평균을 조심하십시오!Apr 15, 2025 am 11:33 AM

기업가와 AI 및 생성 AI를 사용하여 비즈니스를 개선합니다. 동시에, 모든 기술과 마찬가지로 생성 AI를 기억하는 것이 중요합니다. 앰프는 앰프입니다. 엄격한 2024 연구 o

Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Andrew Ng의 모델 임베딩에 대한 새로운 단기 과정Apr 15, 2025 am 11:32 AM

임베딩 모델의 힘 잠금 해제 : Andrew Ng의 새로운 코스에 대한 깊은 다이빙 기계가 완벽한 정확도로 질문을 이해하고 응답하는 미래를 상상해보십시오. 이것은 공상 과학이 아닙니다. AI의 발전 덕분에 R이되었습니다

대형 언어 모델 (LLMS)에서 환각이 불가피합니까?대형 언어 모델 (LLMS)에서 환각이 불가피합니까?Apr 15, 2025 am 11:31 AM

대형 언어 모델 (LLM) 및 환각의 피할 수없는 문제 Chatgpt, Claude 및 Gemini와 같은 AI 모델을 사용했을 것입니다. 이들은 대규모 텍스트 데이터 세트에 대해 교육을받은 강력한 AI 시스템의 대형 언어 모델 (LLM)의 예입니다.

60% 문제 - AI 검색이 트래픽을 배출하는 방법60% 문제 - AI 검색이 트래픽을 배출하는 방법Apr 15, 2025 am 11:28 AM

최근의 연구에 따르면 AI 개요는 산업 및 검색 유형에 따라 유기 트래픽이 15-64% 감소 할 수 있습니다. 이러한 급격한 변화로 인해 마케팅 담당자는 디지털 가시성에 관한 전체 전략을 재고하게합니다. 새로운

AI R & D의 중심에 인간 번성을하는 MIT Media LabAI R & D의 중심에 인간 번성을하는 MIT Media LabApr 15, 2025 am 11:26 AM

Elon University의 Digital Future Center를 상상 한 최근 보고서는 거의 300 명의 글로벌 기술 전문가를 조사했습니다. 결과적인 보고서 인‘2035 년에 인간이되는 것’은 대부분 AI 시스템의 심화가 T에 대한 우려가 있다고 결론지었습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구