GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示

GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系 OpenAI模型太多挑花眼?GPT-4o、GPT-4.5、O系列…区别联系全解析,开发者必看选型与性价比攻略!🚀💰 阅读详情

几天前,OpenAI在 API 中推出了三个新模型:GPT-4.1、GPT-4.1 mini 和 GPT-4.1 nano。这些模型的性能全面超越 GPT-4o 和 GPT-4o mini(感觉这个GPT-4.1就是GPT-4o的升级迭代版本),主要在编码和指令跟踪方面均有显著提升。还拥有更大的上下文窗口——支持多达 100 万个上下文标记——并且能够通过改进的长上下文理解更好地利用这些上下文。

知识截止日期已更新至 2024 年 6 月,而对于plus、Pro、Team用户可以在模型的更多选择器中使用GPT-4.1,如下图所示

img

img

GPT-4.1、GPT-4.1 mini 和 GPT-4.1 nano更新了哪些特点

接下来我们一起来看看GPT-4.1的编码、绘画、上下文能力到底如何,值不值得试试呢? 先看看官方的基准测试数据,然后再来实现一个小应用吧,最后告诉大家如何才能使用升级到CahtGPTplus/Pro会员去试试GPT-4.1

  • 编码:GPT-4.1 在SWE-bench Verified上的得分为 54.6%,比 GPT-4o 提高了 21.4%,比 GPT-4.5 提高了 26.6% ,使其成为领先的编码模型。

  • 说明如下: 在Scale 的MultiChallenge基准,即衡量指令遵循能力的标准,GPT-4.1 得分为 38.3%,比 GPT-4o 提高了10.5 % 。

  • 详细背景:关于视频MME作为多模态长上下文理解的基准,GPT-4.1 创造了新的最先进成果——在长篇无字幕类别中得分为 72.0%,比 GPT-4o 提高了6.7 % 。

GPT-4.1 VS GPT-4o模型系列以更低的成本提供了更好的性能。这些模型在延迟曲线的每个点上都实现了性能的提升。

img

GPT-4.1 mini 在小模型性能上实现了显著飞跃,甚至在多项基准测试中超越了 GPT-4o。它在智能评估方面达到甚至超越了 GPT-4o,同时将延迟降低了近一半,成本降低了 83%。

而对于需要低延迟的任务,GPT-4.1 nano 是目前速度最快、成本最低的模型。它拥有 100 万个 token 上下文窗口,在小规模下实现了卓越的性能,在 MMLU 测试中得分高达 80.1%,在 GPQA 测试中得分高达 50.3%,在 Aider 多语言编码测试中得分高达 9.8%,甚至高于 GPT-4o mini。它是分类或自动完成等任务的理想选择。 这些在指令遵循可靠性和长上下文理解方面的改进,也使得 GPT-4.1 模型在驱动代理(即能够代表用户独立完成任务的系统)方面更加有效。当与 Responses API 等原语结合使用时,开发人员现在可以构建在实际软件工程中更有用、更可靠的代理,从大型文档中提取见解,以最少的手动操作解决客户请求以及其他复杂任务。 在此之前GPT-4.1 仅通过 API 提供。在 ChatGPT 中,指令遵循、编码和智能方面的许多改进已逐步融入最新版的GPT-4o,OpenAI将在未来的版本中继续融入更多内容。

下面,将分析 GPT-4.1 在多个基准测试中的表现,并结合 Windsurf、Qodo、Hex、Blue J、Thomson Reuters 和 Carlyle 等 alpha 测试人员的示例,展示其在特定领域任务的生产中的表现。

特点一:编码能力提升

GPT-4.1 在各种编码任务上都比 GPT-4o 表现得更好,包括代理解决编码任务、前端编码、减少无关编辑、可靠地遵循差异格式、确保一致的工具使用等等。 在衡量真实世界软件工程技能的 SWE-bench Verified 测试中,GPT-4.1 完成了 54.6% 的任务,而 GPT-4o(2024-11-20)的完成率为 33.2%。这反映了模型在探索代码库、完成任务以及生成可运行并通过测试的代码方面的能力有所提升。

在SWE‑bench Verified accuracy正确性对比

对比模型有GPT-4.1、GPT-4o (2024-11-20)、OpenAI o1 (high)、OpenAI o3-mini (high)、GPT-4.5、GPT-4.1 mini、GPT-4o mini

img

特点二:多编程语言支持

对于需要编辑大型文件的 API 开发者来说,GPT-4.1 在跨多种格式的代码差异分析方面更加可靠。在Aider 的多语言差异基准测试中,GPT-4.1 的得分是 GPT-4o 的两倍多。甚至比 GPT-4.5 还高出 8% 。这项评估既衡量了跨各种编程语言的编码能力,也衡量了模型在整体和差异格式下生成更改的能力。OpenAI还专门训练了 GPT-4.1,使其能够更可靠地遵循差异格式,这使得开发人员只需让模型输出更改的行,而无需重写整个文件,从而节省成本和延迟。为了获得最佳的代码差异性能,请参阅 prompting-gpt-4-1-models
提示指南⁠,对于喜欢重写整个文件的开发者,OpenAI将 GPT-4.1 的输出令牌限制增加到 32,768 个令牌(GPT-4o 为 16,384 个令牌)。并建议使用预测输出减少完整文件重写的延迟。 在 Aider 的多语言基准测试中,模型解决了来自Exercism的编码练习通过编辑源文件,允许重试一次。“whole”格式要求模型重写整个文件,这可能很慢且成本高昂。“diff”格式要求模型编写一系列搜索/替换块。

GPT-4.1 在前端编码方面也比 GPT-4o 有了显著提升,能够创建功能更强大、更美观的 Web 应用。在我们的面对面对比中,付费人工评分员 80% 的评分结果显示,GPT-4.1 的网站比 GPT-4o 的网站更受欢迎。

img

特点三:长上下文(最多可以处理100W个上下文标记)

GPT-4.1、GPT-4.1 mini 和 GPT-4.1 nano 最多可以处理 100 万个上下文标记,而之前的 GPT-4o 型号最多可以处理 128,000 个。100 万个标记相当于整个 React 代码库的 8 个以上副本,因此长上下文非常适合处理大型代码库或大量长文档。 OpenAI训练了 GPT-4.1,使其能够可靠地处理长达 100 万个上下文中的信息。此外,我们还训练它比 GPT-4o 更加可靠地识别相关文本,并忽略长短上下文中的干扰项。长上下文理解是法律、编码、客户支持以及许多其他领域应用的关键能力。

特点四:图像视觉

GPT-4.1 系列在图像理解方面非常强大,尤其是 GPT-4.1 mini 实现了重大的飞跃,在图像基准测试中经常击败 GPT-4o。

img

在 MMMU中,模型回答包含图表、图解、地图等的问题。(注意:即使不包含图像,许多答案仍然可以从上下文中推断或猜测。)

img

在MathVista中,一个模型解决了视觉数学任务。

看长视频内容然后回答问题正确性对比

img

在 Video-MME
视频-MME中,一个模型根据 30-60 分钟长的无字幕视频回答多项选择题。

如何订阅升级ChatGPTplus?如何使用GPT-4.1

目前所有的chatgptPlus用户已经被推送 了GPT-4.1模型(在更多模型里面就可以使用),对于普通用户,现在也可以使用GPT-4.1

GPT-4.1使用次数限制

免费用户每24小时最多使用5次GPT-4.1,超出后自动切换其它模型;Plus用户每3小时最多使用80次

如何升级ChatGPTplus?

plus用户升级可以参考本教程:https://littlemagic8.github.io/2024/09/04/update-ChatGPT-Plus/ (笔者已经使用了一年多了,保证可行)

GPT-4.1 实例展示

我们使用镜像站(chatshare)来演示一番,目前镜像站GPT-4.1已经被推送了

PS: 想要体验共享原生镜像站的童鞋可以参考本文: https://littlemagic8.github.io/2025/04/10/how-use-share-AI-model/

img

实例一:AI 驱动的社交媒体分析工具

提示词:使用 Python 开发一个社交媒体分析工具,分析指定 X 用户(如 @elonmusk)最近 100 条帖子的情绪和关键词。

要求: 1. 通过 X API 获取帖子(假设 API 密钥为 'X_API_KEY')。

2. 使用 NLTK 进行情绪分析,分类为积极、消极、中性。

3. 提取前 10 个高频关键词(去除停用词)。

4. 生成柱状图(使用 Matplotlib)显示情绪分布,保存为 'sentiment_analysis.png'。

5. 输出结果为 JSON 文件 'user_analysis.json',包含情绪分布和关键词。 确保代码有错误处理、日志记录和详细注释,适合生产环境。

import os
import sys
import json
import logging
import requests
from collections import Counter
from typing import List, Dict
​
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
​
import matplotlib.pyplot as plt
​
# === 初始化 NLTK 资源 ===
try:
    nltk.data.find('tokenizers/punkt')
except LookupError:
    nltk.download('punkt')
try:
    nltk.data.find('corpora/stopwords')
except LookupError:
    nltk.download('stopwords')
try:
    nltk.data.find('sentiment/vader_lexicon')
except LookupError:
    nltk.download('vader_lexicon')
​
​
# === 日志配置 ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout),  # 输出到控制台
        logging.FileHandler("social_media_analysis.log", encoding='utf-8')
    ]
)
logger = logging.getLogger(__name__)
​
​
class SocialMediaAnalyzer:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.twitter.com/2"  # 假设 X API 为 Twitter v2 类似结构
        self.headers = {
            "Authorization": f"Bearer {self.api_key}"
        }
        self.sia = SentimentIntensityAnalyzer()
        self.stop_words = set(stopwords.words('english'))
​
    def fetch_tweets(self, username: str, max_results: int = 100) -> List[str]:
        """
        通过 X API 获取用户近 100 条推文文本内容
        :param username: str, 用户名 (如 '@elonmusk' 可自动去除 '@')
        :param max_results: int, 最多获取的推文数量(最多 100 条)
        :return: List[str], 文本列表
        """
        username = username.lstrip('@')
        logger.info(f"开始获取用户 @{username} 的最近 {max_results} 条帖子")
        try:
            # Step1: 获取用户ID
            user_resp = requests.get(
                f"{self.base_url}/users/by/username/{username}",
                headers=self.headers,
                timeout=10
            )
            user_resp.raise_for_status()
            user_id = user_resp.json()['data']['id']
            logger.debug(f"获取到用户ID: {user_id}")
​
            # Step2: 获取用户推文
            # max_results 最大为100,分页可改进,此处单调用就够
            params = {
                "max_results": max_results,
                "tweet.fields": "text",  # 只要文本字段
                "exclude": "retweets,replies"  # 排除转推和回复短内容(如需)
            }
            tweets_resp = requests.get(
                f"{self.base_url}/users/{user_id}/tweets",
                headers=self.headers,
                params=params,
                timeout=15
            )
            tweets_resp.raise_for_status()
​
            tweets_data = tweets_resp.json()
            texts = [tweet.get('text', '') for tweet in tweets_data.get('data', [])]
            logger.info(f"成功获取 {len(texts)} 条帖子")
            return texts
        except requests.RequestException as e:
            logger.error(f"获取推文失败: {e}")
            return []
        except KeyError as e:
            logger.error(f"解析API返回数据失败,缺少键: {e}")
            return []
​
    def analyze_sentiments(self, texts: List[str]) -> Dict[str, int]:
        """
        使用 VADER 情绪分析,对文本分类为积极、中性、消极,统计数量
        :param texts: List[str]
        :return: dict 情绪计数
        """
        logger.info("开始进行情绪分析")
        sentiment_counts = {
            'positive': 0,
            'neutral': 0,
            'negative': 0
        }
        for text in texts:
            score = self.sia.polarity_scores(text)
            compound = score['compound']
​
            if compound >= 0.05:
                sentiment_counts['positive'] += 1
            elif compound <= -0.05:
                sentiment_counts['negative'] += 1
            else:
                sentiment_counts['neutral'] += 1
        logger.info(f"情绪分析结果: {sentiment_counts}")
​
        return sentiment_counts
​
    def extract_keywords(self, texts: List[str], top_n: int = 10) -> List[str]:
        """
        提取文本中的关键词(高频词,排除停用词和标点)
        :param texts: 文本列表
        :param top_n: 前多少个
        :return: 关键词列表
        """
        logger.info("开始提取关键词")
        all_words = []
        for text in texts:
            tokens = word_tokenize(text.lower())
            words = [w for w in tokens if w.isalpha() and w not in self.stop_words]
            all_words.extend(words)
​
        word_counts = Counter(all_words)
        common_words = [word for word, count in word_counts.most_common(top_n)]
        logger.info(f"关键词提取结果: {common_words}")
        return common_words
​
    def plot_sentiment_distribution(self, sentiment_counts: Dict[str, int], filename: str = 'sentiment_analysis.png'):
        """
        生成情绪柱状图并保存
        :param sentiment_counts: dict {情绪: 数量}
        :param filename: 文件名
        """
        logger.info(f"生成情绪分布图: {filename}")
        try:
            labels = list(sentiment_counts.keys())
            counts = [sentiment_counts[label] for label in labels]
​
            plt.figure(figsize=(6, 4))
            bars = plt.bar(labels, counts, color=['green', 'gray', 'red'])
            plt.title("Sentiment Distribution")
            plt.xlabel("Sentiment")
            plt.ylabel("Number of Posts")
            plt.grid(axis='y', linestyle='--', alpha=0.7)
​
            # 在柱上标数字
            for bar in bars:
                yval = bar.get_height()
                plt.text(bar.get_x() + bar.get_width()/2, yval + 0.5, int(yval), ha='center', va='bottom')
​
            plt.tight_layout()
            plt.savefig(filename)
            plt.close()
            logger.info("情绪分布图保存成功")
        except Exception as e:
            logger.error(f"绘制情绪分布图失败: {e}")
​
    def save_analysis_json(self, username: str, sentiment_counts: Dict[str, int], keywords: List[str], filename='user_analysis.json'):
        """
        保存分析结果为 JSON 文件
        """
        logger.info(f"保存分析结果到 {filename}")
        data = {
            'username': username,
            'sentiments': sentiment_counts,
            'keywords': keywords
        }
        try:
            with open(filename, 'w', encoding='utf-8') as f:
                json.dump(data, f, indent=4, ensure_ascii=False)
            logger.info("保存 JSON 成功")
        except Exception as e:
            logger.error(f"保存 JSON 失败: {e}")
​
​
def main():
    API_KEY = os.getenv('X_API_KEY', 'X_API_KEY')  # 你也可以在环境变量设置X_API_KEY
    target_user = '@elonmusk'
​
    analyzer = SocialMediaAnalyzer(API_KEY)
​
    posts = analyzer.fetch_tweets(target_user, max_results=100)
    if not posts:
        logger.error("未获取到任何帖子,程序退出")
        return
​
    sentiment_counts = analyzer.analyze_sentiments(posts)
    keywords = analyzer.extract_keywords(posts, top_n=10)
    analyzer.plot_sentiment_distribution(sentiment_counts, 'sentiment_analysis.png')
    analyzer.save_analysis_json(target_user, sentiment_counts, keywords, 'user_analysis.json')
​
    logger.info("分析完成,文件已生成。")
​
if __name__ == '__main__':
    main()
import os
import sys
import json
import logging
import requests
from collections import Counter
from typing import List, Dict
​
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
​
import matplotlib.pyplot as plt
​
# === 初始化 NLTK 资源 ===
try:
    nltk.data.find('tokenizers/punkt')
except LookupError:
    nltk.download('punkt')
try:
    nltk.data.find('corpora/stopwords')
except LookupError:
    nltk.download('stopwords')
try:
    nltk.data.find('sentiment/vader_lexicon')
except LookupError:
    nltk.download('vader_lexicon')
​
​
# === 日志配置 ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout),  # 输出到控制台
        logging.FileHandler("social_media_analysis.log", encoding='utf-8')
    ]
)
logger = logging.getLogger(__name__)
​
​
class SocialMediaAnalyzer:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.twitter.com/2"  # 假设 X API 为 Twitter v2 类似结构
        self.headers = {
            "Authorization": f"Bearer {self.api_key}"
        }
        self.sia = SentimentIntensityAnalyzer()
        self.stop_words = set(stopwords.words('english'))
​
    def fetch_tweets(self, username: str, max_results: int = 100) -> List[str]:
        """
        通过 X API 获取用户近 100 条推文文本内容
        :param username: str, 用户名 (如 '@elonmusk' 可自动去除 '@')
        :param max_results: int, 最多获取的推文数量(最多 100 条)
        :return: List[str], 文本列表
        """
        username = username.lstrip('@')
        logger.info(f"开始获取用户 @{username} 的最近 {max_results} 条帖子")
        try:
            # Step1: 获取用户ID
            user_resp = requests.get(
                f"{self.base_url}/users/by/username/{username}",
                headers=self.headers,
                timeout=10
            )
            user_resp.raise_for_status()
            user_id = user_resp.json()['data']['id']
            logger.debug(f"获取到用户ID: {user_id}")
​
            # Step2: 获取用户推文
            # max_results 最大为100,分页可改进,此处单调用就够
            params = {
                "max_results": max_results,
                "tweet.fields": "text",  # 只要文本字段
                "exclude": "retweets,replies"  # 排除转推和回复短内容(如需)
            }
            tweets_resp = requests.get(
                f"{self.base_url}/users/{user_id}/tweets",
                headers=self.headers,
                params=params,
                timeout=15
            )
            tweets_resp.raise_for_status()
​
            tweets_data = tweets_resp.json()
            texts = [tweet.get('text', '') for tweet in tweets_data.get('data', [])]
            logger.info(f"成功获取 {len(texts)} 条帖子")
            return texts
        except requests.RequestException as e:
            logger.error(f"获取推文失败: {e}")
            return []
        except KeyError as e:
            logger.error(f"解析API返回数据失败,缺少键: {e}")
            return []
​
    def analyze_sentiments(self, texts: List[str]) -> Dict[str, int]:
        """
        使用 VADER 情绪分析,对文本分类为积极、中性、消极,统计数量
        :param texts: List[str]
        :return: dict 情绪计数
        """
        logger.info("开始进行情绪分析")
        sentiment_counts = {
            'positive': 0,
            'neutral': 0,
            'negative': 0
        }
        for text in texts:
            score = self.sia.polarity_scores(text)
            compound = score['compound']
​
            if compound >= 0.05:
                sentiment_counts['positive'] += 1
            elif compound <= -0.05:
                sentiment_counts['negative'] += 1
            else:
                sentiment_counts['neutral'] += 1
        logger.info(f"情绪分析结果: {sentiment_counts}")
​
        return sentiment_counts
​
    def extract_keywords(self, texts: List[str], top_n: int = 10) -> List[str]:
        """
        提取文本中的关键词(高频词,排除停用词和标点)
        :param texts: 文本列表
        :param top_n: 前多少个
        :return: 关键词列表
        """
        logger.info("开始提取关键词")
        all_words = []
        for text in texts:
            tokens = word_tokenize(text.lower())
            words = [w for w in tokens if w.isalpha() and w not in self.stop_words]
            all_words.extend(words)
​
        word_counts = Counter(all_words)
        common_words = [word for word, count in word_counts.most_common(top_n)]
        logger.info(f"关键词提取结果: {common_words}")
        return common_words
​
    def plot_sentiment_distribution(self, sentiment_counts: Dict[str, int], filename: str = 'sentiment_analysis.png'):
        """
        生成情绪柱状图并保存
        :param sentiment_counts: dict {情绪: 数量}
        :param filename: 文件名
        """
        logger.info(f"生成情绪分布图: {filename}")
        try:
            labels = list(sentiment_counts.keys())
            counts = [sentiment_counts[label] for label in labels]
​
            plt.figure(figsize=(6, 4))
            bars = plt.bar(labels, counts, color=['green', 'gray', 'red'])
            plt.title("Sentiment Distribution")
            plt.xlabel("Sentiment")
            plt.ylabel("Number of Posts")
            plt.grid(axis='y', linestyle='--', alpha=0.7)
​
            # 在柱上标数字
            for bar in bars:
                yval = bar.get_height()
                plt.text(bar.get_x() + bar.get_width()/2, yval + 0.5, int(yval), ha='center', va='bottom')
​
            plt.tight_layout()
            plt.savefig(filename)
            plt.close()
            logger.info("情绪分布图保存成功")
        except Exception as e:
            logger.error(f"绘制情绪分布图失败: {e}")
​
    def save_analysis_json(self, username: str, sentiment_counts: Dict[str, int], keywords: List[str], filename='user_analysis.json'):
        """
        保存分析结果为 JSON 文件
        """
        logger.info(f"保存分析结果到 {filename}")
        data = {
            'username': username,
            'sentiments': sentiment_counts,
            'keywords': keywords
        }
        try:
            with open(filename, 'w', encoding='utf-8') as f:
                json.dump(data, f, indent=4, ensure_ascii=False)
            logger.info("保存 JSON 成功")
        except Exception as e:
            logger.error(f"保存 JSON 失败: {e}")
​
​
def main():
    API_KEY = os.getenv('X_API_KEY', 'X_API_KEY')  # 你也可以在环境变量设置X_API_KEY
    target_user = '@elonmusk'
​
    analyzer = SocialMediaAnalyzer(API_KEY)
​
    posts = analyzer.fetch_tweets(target_user, max_results=100)
    if not posts:
        logger.error("未获取到任何帖子,程序退出")
        return
​
    sentiment_counts = analyzer.analyze_sentiments(posts)
    keywords = analyzer.extract_keywords(posts, top_n=10)
    analyzer.plot_sentiment_distribution(sentiment_counts, 'sentiment_analysis.png')
    analyzer.save_analysis_json(target_user, sentiment_counts, keywords, 'user_analysis.json')
​
    logger.info("分析完成,文件已生成。")
​
if __name__ == '__main__':
    main()

说明

  • 获取推文: 通过假设的 Twitter API v2(X API类似)接口,先获取用户ID再拉取最近帖子。

  • 情绪分析: 使用 NLTK 的 VADER 对帖子打分并分类正面、中性、负面。

  • 关键词提取: 分词后去除停用词和非字母字符,统计出现频率取前10。

  • 可视化: Matplotlib 绘制并保存情绪分布柱状图。

  • 输出: JSON 文件包含用户名、情绪结果和关键词列表。

  • 日志记录: 全过程详细日志,保存到 social_media_analysis.log,并打印到控制台。

  • 错误处理: 关键请求和文件操作有异常捕获,确保稳定运行。

请替换 API_KEY 为你真实的 X API Key,并确保网络通畅,可以访问 X API。 如果你需要帮助接入真实 API 或扩展功能,也欢迎随时告诉我。

实列二:对离线或者在线视频人物进行打码处理代码实现

提示词:设计实现可以对离线/在线直播视频中的指定的人物们进行打马赛克的插件 使用python实现,使用方法:输入相关人物的图片(支持多个人物,并且每个人物有多个图片),如果是离线视频就可以直接导入一个目标视频,输出指定人物被打码的视频;对于直播视频则直接打码处理

好的,下面给出一个更详细的版本,包含完整代码实现、详细代码注释说明、操作示例,并且讲解演示效果如何。此方案基于 Python,核心使用 face_recognition 实现人脸识别,opencv-python 用于视频读取与处理。此版本支持:

  • 输入多个人物,每个人物多张图片做特征库

  • 离线视频文件处理,输出带指定人物打码的视频

  • 实时摄像头直播流处理,实时对指定人物打码显示

详细设计与代码示例

一、准备环境

建议先执行:

pip install face_recognition opencv-python numpy

备注:face_recognition依赖 dlib,安装时如果遇到问题,建议搜索对应系统dlib安装方案。

二、人脸特征编码模块

该模块负责从输入的多个人物多张图片,提取每个人脸的特征编码,特征由128维向量表示。

import face_recognition
from typing import List
​
def build_known_faces(image_paths_list: List[List[str]]) -> List[List]:
    """
    作用:根据多个人物的图片列表,计算对应的人脸编码列表
    输入:
        image_paths_list - List[List[str]],每个人对应多张图片路径的列表
        例如:
            [
                ['person1_img1.jpg', 'person1_img2.jpg'],
                ['person2_img1.jpg', 'person2_img2.jpg', ...],
                ...
            ]
    返回:
        known_faces_encodings - List[List],每个人对应多张人脸编码的列表
    """
    known_faces_encodings = []
    for person_images in image_paths_list:
        encodings = []
        for img_path in person_images:
            image = face_recognition.load_image_file(img_path)
            face_encs = face_recognition.face_encodings(image)
            if len(face_encs) > 0:
                encodings.append(face_encs[0])
            else:
                print(f"[WARNING] No face found in {img_path}")
        if len(encodings) == 0:
            print("[ERROR] No valid face encodings for one person, skipped")
            continue
        known_faces_encodings.append(encodings)
    return known_faces_encodings
  • 这个模块会加载每个输入图片,提取第一个发现的人脸编码;如果某张图片没有检测到人脸则提示警告。

  • 最终返回每个人对应的一组编码集合。

三、打码马赛克函数模块

该模块实现实际对图像中指定人脸区域进行“打马赛克”。

import cv2
import numpy as np
​
def mosaic_face(image: np.ndarray, face_location, mosaic_scale=0.05) -> np.ndarray:
    """
    打马赛克功能,把指定区域马赛克处理
    参数解释:
        image: 输入BGR图像
        face_location: (top, right, bottom, left)人脸区域坐标
        mosaic_scale: 马赛克缩放比例,数值越小马赛克越粗糙
    返回:
        处理后的图像
    """
    top, right, bottom, left = face_location
    # 防止坐标越界
    top = max(top, 0)
    left = max(left, 0)
    bottom = min(bottom, image.shape[0])
    right = min(right, image.shape[1])
    
    face = image[top:bottom, left:right]
​
    # 计算缩放尺寸(宽、高)
    w = right - left
    h = bottom - top
    if w == 0 or h == 0:
        return image
​
    small = cv2.resize(face, (max(1,int(w*mosaic_scale)), max(1,int(h*mosaic_scale))), interpolation=cv2.INTER_LINEAR)
    mosaic_face = cv2.resize(small, (w, h), interpolation=cv2.INTER_NEAREST)
​
    image[top:bottom, left:right] = mosaic_face
​
    return image
  • 通过先缩小ROI区域,再放大,实现像素块放大效果,产生马赛克

  • mosaic_scale 控制颗粒大小,范围约0.03~0.1,根据清晰度与识别需求选取

四、离线视频处理模块

import cv2
import face_recognition
import numpy as np
​
def process_offline_video(input_path: str, output_path: str, 
                          known_faces_encodings: List[List],
                          tolerance=0.6, mosaic_scale=0.05):
    """
    对输入视频中与known_faces匹配的人物进行打马赛克并输出新视频
    参数:
        - input_path: 输入视频路径
        - output_path: 输出视频保存路径
        - known_faces_encodings: 已构建的多个人物的脸部编码集
        - tolerance:匹配门槛,越小匹配越严格
        - mosaic_scale: 马赛克颗粒度
    """
    video_capture = cv2.VideoCapture(input_path)
    if not video_capture.isOpened():
        print(f"[ERROR] Cannot open video file {input_path}")
        return
​
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 保存格式可按需调整
    fps = video_capture.get(cv2.CAP_PROP_FPS)
    width  = int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
​
    out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
​
    frame_num = 0
    total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))
​
    print(f"[INFO] Video opened. Total frames: {total_frames}, FPS: {fps}")
​
    while True:
        ret, frame = video_capture.read()
        if not ret:
            break
        frame_num += 1
        rgb_frame = frame[:, :, ::-1]  # BGR->RGB 用于 face_recognition
​
        # 检测人脸坐标和编码
        face_locations = face_recognition.face_locations(rgb_frame)
        face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
​
        for face_encoding, face_location in zip(face_encodings, face_locations):
            # 分别匹配所有指定人物的编码集
            match_found = False
            for person_encodings in known_faces_encodings:
                matches = face_recognition.compare_faces(person_encodings, face_encoding, tolerance=tolerance)
                if True in matches:
                    match_found = True
                    break
            if match_found:
                # 对该区域打马赛克
                frame = mosaic_face(frame, face_location, mosaic_scale=mosaic_scale)
​
        out.write(frame)
​
        if frame_num % 30 == 0:
            print(f"[INFO] Processed {frame_num}/{total_frames} frames...")
​
    video_capture.release()
    out.release()
    print(f"[INFO] Process completed. Output saved to {output_path}")

工作流程解释:

  • 提取视频的FPS/分辨率用于写入新视频

  • 循环逐帧处理

  • 使用face_recognition 得到每帧的人脸定位与编码

  • 比对是否属于指定人物,匹配成功就用马赛克函数替换画面人脸区域

  • 写入输出文件

五、直播视频流处理(摄像头示范)

def process_live_stream(known_faces_encodings: List[List], tolerance=0.6, mosaic_scale=0.05):
    """
    读取摄像头视频,实时识别并对指定人物打码
    """
    cap = cv2.VideoCapture(0)  # 取系统默认摄像头
​
    if not cap.isOpened():
        print("[ERROR] Cannot open webcam")
        return
​
    print("[INFO] Starting live stream. Press 'q' to quit.")
​
    while True:
        ret, frame = cap.read()
        if not ret:
            print("[WARNING] Failed to grab frame")
            break
​
        rgb_frame = frame[:, :, ::-1]
​
        face_locations = face_recognition.face_locations(rgb_frame)
        face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
​
        for face_encoding, face_location in zip(face_encodings, face_locations):
            match_found = False
            for person_encodings in known_faces_encodings:
                matches = face_recognition.compare_faces(person_encodings, face_encoding, tolerance=tolerance)
                if True in matches:
                    match_found = True
                    break
            if match_found:
                frame = mosaic_face(frame, face_location, mosaic_scale=mosaic_scale)
​
        cv2.imshow('Live Stream (Press q to Quit)', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
​
    cap.release()
    cv2.destroyAllWindows()

六、插件整体封装

class MosaicPlugin:
    def __init__(self, known_faces_images_list: List[List[str]], tolerance: float=0.6, mosaic_scale: float=0.05):
        """
        初始化,准备好已知人物的人脸编码
        """
        print("[INFO] Building known faces encoding from images...")
        self.known_faces_encodings = build_known_faces(known_faces_images_list)
        self.tolerance = tolerance
        self.mosaic_scale = mosaic_scale
        print(f"[INFO] Plugin initialized with {len(self.known_faces_encodings)} persons.")
​
    def process_video(self, input_video_path: str, output_video_path: str):
        """
        离线视频文件处理
        """
        print(f"[INFO] Processing video {input_video_path}...")
        process_offline_video(input_video_path, output_video_path, 
                              self.known_faces_encodings,
                              self.tolerance, self.mosaic_scale)
​
    def process_live(self):
        """
        实时摄像头直播视频处理
        """
        print("[INFO] Starting live stream processing...")
        process_live_stream(self.known_faces_encodings, self.tolerance, self.mosaic_scale)

七、操作示例

假设有两个人物,分别保存在 data/person1 和 data/person2 文件夹,里面是多张该人物图片。

准备文件结构

project_dir/
│
├── data/
│   ├── person1/
│   │    ├── img1.jpg
│   │    └── img2.jpg
│   └── person2/
│        ├── img1.jpg
│        └── img2.jpg
├── input.mp4  # 目标视频
├── mosaic_plugin.py  # 本代码脚本
└── demo.py

demo.py 内容示例

from mosaic_plugin import MosaicPlugin
​
def get_person_image_paths():
    import os
    base_dir = 'data'
    person1 = [os.path.join(base_dir, 'person1', f) for f in os.listdir(os.path.join(base_dir, 'person1')) if f.endswith('.jpg')]
    person2 = [os.path.join(base_dir, 'person2', f) for f in os.listdir(os.path.join(base_dir, 'person2')) if f.endswith('.jpg')]
    return [person1, person2]
​
if __name__ == "__main__":
    known_faces = get_person_image_paths()
​
    plugin = MosaicPlugin(known_faces, tolerance=0.5, mosaic_scale=0.05)
​
    # 离线视频马赛克处理演示
    plugin.process_video('input.mp4', 'output_masked.mp4')
​
    # 实时摄像头直播演示(按q退出)
    # plugin.process_live()

八、演示效果说明

  • 离线视频处理效果: 输出文件 output_masked.mp4 会与原视频时长、画质基本相同。 视频中与输入库人物匹配的人物脸部区域,都会被马赛克遮挡。 一般情况下,识别算法准确率较高,但复杂角度、光线弱等情况下可能漏识别。 对于不重要的人物不会打码,保证视频内容清晰。

  • 实时直播摄像头效果: 打开摄像头后,会实时捕捉图像,根据输入的人脸编码库识别,在窗口中显示带马赛克的视频窗口。 当检测到指定人物,面部会被像素化处理,保护隐私。按 q 关闭窗口并退出程序。

  • 灵活调节参数: tolerance 控制识别匹配的严格程度,一般0.4~0.6间保守 mosaic_scale 调节马赛克颗粒度,颗粒数越少遮挡越明显但不影响帧率

常见问题与建议

  1. 视频文件或摄像头打开问题,确保路径正确且权限正常。

  2. face_recognition使用的是HOG和CNN两种模型,默认是HOG快速模式,也可以改用CNN解码。

  3. 可考虑替换更高效/准确的模型进行人脸检测或身份识别(比如 InsightFace,MTCNN + ArcFace等)。

  4. 实时直播对性能要求较高,建议对视频尺寸和帧率进行适当限制。

  5. 若出现人脸检测失败或打码不准,可尝试用更多样本丰富人物特征编码。

如果你需要还可以帮你扩展:

  • 支持指定直播流URL(RTSP等)

  • 支持脱敏其他人体部位或自定义打码样式

  • 支持推送处理后的直播流

实例三:图片理解能力展示

提示词:这张图片说了写啥,我需要复刻,我要按照这个进行我的sass,请给我完整详细的工作计划,涉及的工具和资料,请详细规划

img

好的,基于你提供的图片内容,这张图片讲的是“用AI在周末快速构建一个赚钱的SaaS产品只需要12步”的流程。你需要按照这个流程复刻SaaS产品,下面我将给你一个完整且详细的工作计划,包含每一步要做的内容、所用工具和所需资料。

用AI在周末快速构建SaaS产品完整详细工作计划

目标

利用AI的能力,通过12个明确步骤,在短时间内完成一个SaaS产品的从构思到设计的全过程,快速验证并落地产品。

第1步:确定产品方向

  • 目标: 明确想要开发的SaaS产品类型和定位(例如客户管理、团队协作等)。

  • 操作:

  • 团队头脑风暴。

  • 结合自身资源、兴趣点、市场机会选定方向。

  • 工具:

  • 头脑风暴工具(Miro,MindMeister)

  • 记事工具(Notion/OneNote)

  • 资料准备:

  • 行业分析报告

  • 市场趋势文章

  • 竞争对手简要名单

第2步:市场调研

  • 目标: 深入分析市场,确认市场需求和痛点。

  • 操作:

  • 利用AI工具进行竞品调研

  • 收集目标用户反馈和需求数据

  • 工具:

  • Gemini(Google的AI工具,用于数据检索)

  • SurveyMonkey或Google Forms设计问卷调查

  • 行业数据平台(如Statista)

  • 资料准备:

  • 竞品市场表现数据

  • 产品点评与用户评价

  • 目标用户访谈整理数据

第3步:竞品分析

  • 目标: 详细拆解竞品功能和卖点,确定自身产品差异化方向。

  • 操作:

  • 作出竞品功能横向对比表

  • 分析竞品优势与缺陷

  • 工具:

  • Excel或Google Sheets(做功能矩阵)

  • SWOT分析工具(MindTools, Lucidchart)

  • 资料准备:

  • 竞品介绍文档和官网

  • 用户反馈和评价集中总结

第4步:验证想法

  • 目标: 用AI工具提出20个问题验证产品创意是否可行和完善。

  • 操作:

  • 编写产品创意概要

  • 用Claude(AI对话工具)提出验证问题

  • 根据问题修改优化创意

  • 工具:

  • Claude (OpenAI)

  • 文字记录工具如Notion/Trello

  • 资料准备:

  • 竞品疑难点汇总

  • 市场反馈

第5步:撰写需求文档(PRD)

  • 目标: 形成详细产品需求文档,包括功能描述、用户场景。

  • 操作:

  • 结合前期调研和问题验证,撰写文档

  • 用AI辅助生成文档,提升效率

  • 工具:

  • Claude或Notion AI(撰写文档)

  • 文档管理工具(Google Docs, Confluence)

  • 资料准备:

  • 验证阶段问题与结论

  • 竞品功能结构总结

第6步:形成设计

  • 目标: 设计产品的整体架构和主要流程。

  • 操作:

  • 画出产品框架图

  • 明确用户使用流程

  • 工具:

  • Lucidchart或Miro(流程图/架构图)

  • 纸笔草图作为辅助

  • 资料准备:

  • PRD文档

  • 用户体验设计原则

第7步:拆分UI模块

  • 目标: 将整个产品界面拆解成独立的UI模块,方便迭代开发。

  • 操作:

  • 基于设计图拆分模块

  • 制作模块列表和UI要素

  • 工具:

  • Figma、Sketch、Adobe XD(界面设计)

  • Notion/Trello任务拆解

  • 资料准备:

  • 设计图纸

  • UI规范文档

第8步(额外建议):产品原型制作

  • 目标: 基于UI模块制作原型,进行内部验证与修改。

  • 操作:

  • 创建交互原型

  • 内部测试产品流程

  • 工具:

  • Figma 原型设计

  • InVision

  • 资料准备:

  • UI模块设计稿

  • PRD文档

第9步(额外建议):确定技术架构和开发计划

  • 目标: 定义产品的技术框架和开发路线。

  • 操作:

  • 技术选型(前端、后端、数据库、API等)

  • 制定开发里程碑

  • 工具:

  • Jira、Trello 任务管理

  • 技术文档

  • 资料准备:

  • 产品PRD与UI设计

  • 技术文档和参考资料

第10步(额外建议):开发实施

  • 目标: 按计划进行开发,阶段性迭代。

  • 操作:

  • 代码开发

  • 单元测试和集成测试

  • 工具:

  • GitHub / GitLab 版本控制

  • CI/CD工具(Jenkins, GitHub Actions)

  • 资料准备:

  • 项目经理分配任务

  • 测试用例和BUG记录

第11步(额外建议):上线前测试

  • 目标: 完整的系统测试和用户体验测试。

  • 操作:

  • 内部测试

  • 用户测试

  • 工具:

  • Bugzilla、JIRA测试管理

  • UserTesting平台

  • 资料准备:

  • 测试报告

  • 用户反馈记录

第12步(额外建议):正式上线及推广

  • 目标: 产品上线并进行市场推广,实现变现。

  • 操作:

  • 部署上线

  • 制定并执行市场营销策略

  • 工具:

  • AWS、Azure、Heroku等云平台部署

  • MailChimp,Facebook Ads,Google Ads 等

  • 资料准备:

  • 营销计划

  • 运营团队准备

总结表格

步骤内容目标工具资料
1确定产品方向锁定产品领域Miro,Notion行业报告,市场趋势
2市场调研确认需求,痛点Gemini,SurveyMonkey竞品数据,用户反馈
3竞品分析找差异点Excel,Lucidchart竞品详情,用户评价
4验证想法产品可行性验证Claude,Notion创意概要,调研反馈
5撰写需求文档确定功能Claude,Google Docs竞品以及调研数据
6形成设计产品架构设计Lucidchart,MiroPRD文档,用户体验原则
7拆分UI模块界面模块拆分Figma,Notion设计稿,UI规范
8制作原型交互验证Figma,InVisionUI设计文件
9技术架构技术规划,开发计划Jira,技术文档PRD,设计稿
10开发实施产品开发GitHub,CI/CD任务分配,测试用例
11测试保证质量Bugzilla,UserTesting测试报告,反馈
12上线及推广产品发布变现云平台,广告平台营销方案,推广内容

总结

  • 以上计划细化了图片中的12步,确保你依流程稳步推进。

  • 重点依赖AI工具(Claude, Gemini)做创意和验证环节的加速。

  • UI设计和项目管理必须用专业工具保证效率。

  • 测试和上线步骤建议合理利用团队力量实际完成。

如果你需要,我可以继续帮你针对具体步骤制定更详尽的执行计划和模板。你可以告诉我哪一步想深挖,也可以问我工具的具体用法。祝你SaaS开发成功!

AI编程能力对比:GPT-4.1 vs Claude 3.5 Sonnet GPT-4.1和Claude 3.5 Sonnet都是强大的编程辅助工具,各自在不同场景下发挥独特优势。GPT-4.1以速度和超大上下文见长,适合快速迭代和复杂项目;Claude 3.5则以代码质量和逻辑严谨取胜,适合追求规范和细致优化的开发者。建议开发者根据项目需求实际测试,选择最适合的工具。你有具体的编程任务或想看两者的代码示例吗?欢迎留言交流!作者:AI技术观察者日期:2025年4月15日原文链接:(假设为优快云博客链接) 阅读详情

相关推荐

GPT4RoI: 突破性的区域级视觉语言模型

GPT4RoI的出现无疑是视觉语言模型领域的一个里程碑。它不仅展示了区域级理解和交互的强大潜力,还为未来的人工智能系统指明了方向。随着技术的不断进步和应用场景的拓展,我们有理由相信,GPT4RoI及其后续发展将为人工智能带来更多令人兴奋的可能性。图1: GPT4RoI的整体框架对于那些希望深入了解或使用GPT4RoI的研究者和开发者,项目的代码、数据集和在线演示都可以在GitHub上找到。GPT4RoI的开源性质意味着它将持续得到社区的支持和改进,为视觉语言模型的未来发展注入持续的动力。

2401_87458718的博客 1197

GPT-4.1,实力绝对被低估了

家人们,OpenAI 的这波操作我是真的蚌埠住了。前有听起来很厉害的 GPT-4.5,今有 GPT-4.1 闪亮登场,以 API 的形式。OpenAI 今天凌晨开直播,发布了 4.1 系列,包括三款模型,分别是——GPT-4.1 (旗舰版)GPT-4.1-mini (轻量版,主打性价比)GPT-4.1-nano (微型版,OpenAI 史上最便宜)还记得定义了大模型时代的 GPT-4 吗?前几天被宣告下线,OpenAI 这次意在将接力棒交到手中。

m0_65555479的博客 1198

一文彻底搞懂大模型 - GPT和LlaMA的模型架构

GPT与LlaMA,作为大语言模型的两大巨擘,均基于Transformer架构却各有千秋。GPT系列以强大的生成能力著称,通过不断增大的参数规模引领复杂语言与推理任务的前沿;而Llama则以开源姿态,通过技术创新提升模型性能,预示着多模态扩展的未来,为AI生态的多样性和开放性贡献力量。什么是GPT? GPT模型,全称为Generative Pre-trained Transformer,是由OpenAI团队开发的一种基于深度学习的自然语言处理(NLP)模型。 该模型通过无监督学习的方式,对大规模文本进行学习

ADFVBM的博客 1193

今天起全员免费!GPT-4.1上线ChatGPT,首波实测:又快又听话,油腻感没了

今天凌晨开始,了!而且是那种~官方介绍,GPT-4.1是一款专门针对编码任务和指令执行的模型,推理效率非常高。看看这张网友们自制的表格,它的能力一目了然:这家伙一个月前被OpenAI公开,当时声明专供API使用。但等等党终究迎来胜利——GPT-4.1的负责人Michelle Pokrass表示:我们最初真的计划只把这个模型开放给API,但你们都希望它能出现在ChatGPT里: )现在,Plus、Pro、团队用户可以在模型选择处下拉,选择使用GPT-4.1;

z551646的博客 1463

GPT4-Turbo技术原理研发现状及未来应用潜力分析报告

 什么是GPTs:GPTs是指“针对特定目的定制的ChatGPT”,用户可以通过自定义行为创建一个定 制版的ChatGPT,定制版的ChatGPT具备带有任何功能的可能性(在保证隐私和安全的情况下)。不论是开发者还是不会写代码的普通人,都可以拥有自定义版本的GPT。更加个性化、私人化、场景化,每个人都可以拥有自己的AI Agent。

GPT20236688的博客 1180

GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现

最近不少 AI 爱好者、设计师、Vlogger 在社交平台晒出了 GPT-4o 生成的梦幻图像,尤其是**吉卜力风格的作品**——柔和光影、日系构图、治愈色彩、富有情感的角色表达,一下子击中了无数人的“童年回忆 +审美舒适区”。

weixin_41496173的博客 2110

GPT-4.1深度解读与性能评测|1M长文档检索、前端编程、指令跟随、视觉推理能力介绍与详细测评!

有人嘲讽OpenAI不会取名,4.1模型居然在4.5模型之后发布,简直让人摸不着头脑,但我却认为,在经历了GPT-4.5模型的惨败之后,OpenAI有勇气给新模型取名为GPT-4.1,恰恰是敢于自我批判的一种表现。从模型整体来看,GPT-4.1模型同时融合了o3模型推理能力和GPT-4.5模型的对话能力,外界猜测模型可能同时由o3模型和GPT-4.5模型蒸馏而来,并且同时围绕超长文本检索、前端编程、指令跟随和视觉推理四个方面,进行特定领域的能力优化,使其实用性大幅增强。

fufan_LLM的博客 2572

UQLab——其他概率分布随机变量转换标准Gaussian分布

1、使用UQLab将其他类型的随机变量转换成标准Gaussian分布; 2、使用科学计数法输出样本,方便后续ANSYS的调用分析; 3、基于MC的可靠度分析。 原随机变量分布类型: % 调用UQLab进行采样 clc clear uqlab %% Specify these distributions as a UQLab INPUT object: PriorOpts.Marginals(1...

ikhui7的博客 3014

OpenAI宣布GPT-4-Turbo全面升级,GPT-4 Turbo 新增视觉理解能力,可同时处理文本和图像信息

OpenAI宣布GPT-4-Turbo全面升级,GPT-4 Turbo with Vision新增视觉理解能力

LeichunHong的博客 1708

UFS 功能描述:UFS boot

UFS 启动过程介绍:启动配置,启动代码下载过程和安全性

m0_51720747的博客 1601

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力

汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支

weixin_34413103的博客 386

常用 Benchmark 总结-GPT 4.1、GPT 4.5、DeepSeek模型

本文总结了多个主流大模型的Benchmark评估体系,涵盖GPT 4.1/4.5、DeepSeek等模型。GPT 4.1采用34个Benchmark评估指令跟随、编程、学术知识等六大维度;GPT 4.5侧重通用知识、多模态和编程能力;DeepSeek则专注于数学定理证明。文中还分类整理了基础能力、推理数学、多轮对话等主流Benchmark类型,并列举了类人行为评估指标。这些Benchmark体系为衡量模型性能提供了全面的测试框架,覆盖从基础能力到专业领域的多维评估需求。

m0_52307083的博客 1815

Lumerical FDTD新手必看:从零开始搭建光子晶体仿真环境(附完整脚本)

本文为Lumerical FDTD新手提供光子晶体仿真环境的完整搭建指南,涵盖从基础参数设置到脚本编写的全流程。通过典型光子晶体带隙分析案例,详细讲解结构建模、仿真参数配置及后处理技巧,并附赠完整MATLAB脚本,帮助用户快速掌握FDTD仿真核心技术。

3c4x5z6v7b的博客 1053

大模型谁家强:Gemini、Claude、GPT-4o 和 O1

近年来,大型语言模型 (LLM) 发展迅速。在中国,注册在册的大模型就有200家左右。国外的核心大模型,如 Google 的 Gemini、Anthropic 的 Claude、OpenAI 的 GPT-4o 和 O1。这些模型在功能和性能上各有千秋。那么这些大模型从模型规模、训练数据、性能表现、安全性等方面有什么区别?各自有什么特点及场景适用性,未来发展趋势。1. 模型规模和参数量模型规模和参数量是衡量 LLM 复杂程度和能力的重要指标。

ytt0523_com的博客 1万+

Linux下科大讯飞离线语音识别SDK从下载到实战(附常见问题解决)

本文详细介绍了在Linux系统下,如何从科大讯飞开放平台获取离线语音识别SDK,完成环境准备、编译部署到实战开发的完整流程。文章重点解析了SDK目录结构、语法词典定制、示例代码修改,并针对开发中常见的“词典加载失败”、音频格式、交叉编译及性能优化等问题提供了深度解决方案,助力嵌入式与IoT开发者快速实现稳定可靠的离线命令识别功能。

honey的博客 1241

电力系统分析 | Matlab实现源荷场景生成---蒙特卡洛法场景生成启发式同步回带削减

电力系统分析 | Matlab实现源荷场景生成---蒙特卡洛法场景生成启发式同步回带削减

前程算法屋的博客 812

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略

​ MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略 目录 GPT-4o的简介 GPT-4o的安装和使用方法 GPT-4o的案例应用 GPT-4o的简介 2024年5月13日,OpenAI重磅发布新旗舰模型GPT-4o,它可以实时跨越音频、视觉和文本进行推理。GPT-4o(“o”代表“omni—全能”)是迈向更加自然的人机交互的一步——它可以接受任何文本、音频和

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5990

从零到一,打造你的无人机侦察兵!树莓派+Python+MQTT,实时目标检测全攻略

物联网、人工智能与计算机视觉三大前沿技术的深度融合。

u013558123的博客 1473

OpenAI劲敌Claude 3正式发布,全面超越GPT-4。Claude3模型特点和使用教程分享

北京时间2024年3月4日晚间,Anthropic,毫无预警地发布了,距离上一代的Claude 2发布,仅相隔8个月。,分别是Anthropic是OpenAI的劲敌,其。团队因为与OpenAI理念不合而分家,于2021年成立了新公司Anthropic。

Kindred6的博客 2018

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 590

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何评价GPT-4o?

近日,人工智能领域迎来了一个重要的里程碑——GPT-4o的发布。这一新版本引发了广泛讨论,也吸引了许多AI爱好者和从业者的关注。本文将从对比分析、技术能力和个人感受三个方面,全面探讨和分析GPT-4o的特点和影响。我可以为你生成一个简单的GPT相关的图片,比如展示GPT模型概念的图示。以下是一个示例图,它展示了GPT的基本结构和功能。

ZShiJ的博客 1527

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HiDream - I1强势来袭!中国开源图像模型全球第二,比肩GPT - 4o

在2025年4月,中国自主开发的17B开源图像生成模型HiDream - I1取得了令人瞩目的成就。它以1123的ELO评分在Artificial Analysis图像竞技场榜单上位居第二,仅仅落后于OpenAI的GPT - 4o(1139分)。HiDream - I1成为了首个进入全球第一梯队的国产生成式AI模型。

Black_Rock_br的博客 1971

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【InternVL 1.5】最强开源多模态大模型(性能比肩GPT-4V)

在人工智能的浪潮中,多模态大模型(MLLM)正成为推动技术革新的关键力量。它们融合了视觉和语言等多种模态的信息处理能力,旨在实现更深层次的智能理解。随着深度学习技术的突飞猛进,2023年见证了多模态大模型的显著进展,其中OpenAI的GPT-4v和Google的Gemini模型尤为引人注目。然而,尽管商业模型不断突破,开源领域一直缺少一个能够匹敌的多模态基础模型,直至InternVL 1.5的横空出世。

寻道AI,探索AI无限可能! 5866

中文多模态InternVL-Chat-V1-5,中文理解能力强劲,8 项指标超越商业模型,性能媲美 GPT-4V

近年来,多模态大型语言模型(MLLM)的快速发展,为人工智能在图像、文本等多模态信息理解和处理方面带来了前所未有的突破。然而,现有的主流多模态模型多以英文为训练语言,在中文理解和处理方面存在着明显的短板,难以满足日益增长的中文多模态应用需求。为了弥补这一缺陷,OpenGVLab 团队开源了首个中文原生多模态模型 InternVL-Chat-V1-5,旨在为中文多模态领域的发展贡献力量。Huggingface模型下载:AI快站模型免费加速下载:OpenGVLab。

nulifancuoAI的博客 2441
上一篇: Grok发布了Grok Studio 和 Workspaces两个强大的功能。该如何使用?如何使用Grok3 API?
下一篇: chatgpt agent如何使用?用起来怎么样?使用次数限制是多少
hellocode_
博客等级 码龄7年 471粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值