利用SuperbAISuite和NVIDIATAOToolkit创建高质量的计算机视觉应用

原创 英伟达NVIDIA中国 2023-06-30 17:21


数据标记和模型训练一直被认为是团队在构建 AI 或机器学习基础设施时所面临的最大挑战。两者都是机器学习应用开发过程中的重要步骤,如果执行不当就会导致结果不准确和性能下降。


数据标记对于所有形式的监督学习来说都是必不可少的。在监督学习中,整个数据集会被完全标记。同时,数据标记也是半监督学习的一个关键步骤。在半监督学习中,需要将较小的标记数据集与以编程方式自动标记其余数据集的算法相结合。对于最先进、最发达的机器学习领域之一的计算机视觉来说,标记至关重要。尽管数据标记十分重要,标记速度却因为需要调节分散的人力团队而十分缓慢。


与标记一样,模型训练是机器学习的另一个主要瓶颈。由于需要等待机器完成复杂的计算,训练速度很慢。它要求团队必须了解网络、分布式系统、存储、专用处理器(GPU 或 TPU)和云管理系统(Kubernetes 和 Docker)。


应用 NVIDIA TAO Toolkit 的 

Superb AI Suite


Superb AI 为计算机视觉团队带来了一种既可以提供高质量训练数据集,同时又能大幅减少所需时间的途径。团队可以在大部分数据准备流程中使用 Superb AI Suite 来实现更加节省时间和成本的流程,不再依赖人工标记员。



图 1. Superb AI Suite 提供覆盖

整个数据生命周期的产品和服务


NVIDIA TAO Toolkit 建立在 TensorFlow 和 PyTorch上,是 TAO 框架的低代码版本,能够以抽象化的方式降低框架的复杂性,加快模型的开发流程。TAO Toolkit 使用户能够借助强大的迁移学习,使用自己的数据对 NVIDIA 预先训练的模型进行微调,并对推理进行优化。



图 2. NVIDIA TAO Toolkit 4.0 一览


计算机视觉工程师可以结合使用 Superb AI Suite 和 TAO Toolkit 解决数据标记和模型训练的难题。具体就是在套件中快速生成标记的数据,并使用 TAO 训练模型来执行分类、检测、分割等特定的计算机视觉任务。


计算机视觉数据集的准备


接下来将为您演示如何使用 Superb AI Suite 准备一个兼容 TAO Toolkit 的高质量计算机视觉数据集。我们将介绍如何下载数据集、在 Suite 上创建新项目、通过 Suite SDK 将数据上传到项目中、使用 Superb AI 的自动标记功能快速标记数据集、导出已标记的数据集,以及设置 TAO Toolkit 配置以使用这些数据。


第 1 步:从使用 Suite SDK 开始


首先,在 superb-ai.com 创建一个帐户,然后按照快速入门指南安装并验证 Suite CLI。您应该能够安装最新版本的 spb-cli并获取用于身份验证的 Suite 账户名/ 访问密钥。


第 2 步:下载数据集


本教程使用的是 COCO 数据集。这个大型对象检测、分割和字幕数据集在计算机视觉研究界深受欢迎。


您可以使用此链接中的代码片段下载该数据集 (https://github.com/Superb-AI-Suite/spb-example/blob/main/create-coco-project/download-coco.sh)。将其保存在一个名为 download-coco.sh 的文件中,并从终端运行 bash download-coco.sh,创建一个存储 COCO 数据集的 data/ 目录


下一步是将 COCO 转换成 Suite SDK 格式,以便对 COCO validation 2017 数据集中的五个最频繁使用的数据类别进行采样。本教程只处理边界框注释,但 Suite 也可以处理多边形和关键点。


您可以使用此链接中的代码片段执行转换 (https://github.com/Superb-AI-Suite/spb-example/blob/main/create-coco-project/convert.py)将其保存在一个名为 convert.py 的文件中,并从终端运行 python convert.py。这将创建一个用于存储图像名称和注释信息的 upload-info.json 文件。


第 3 步:在 Suite SDK 中创建一个项目


通过 Suite SDK 创建项目的功能目前仍在开发中。在本次教学中,我们根据 Superb AI 项目创建指南在网络上创建一个项目。请按照下图进行设置:


图 3. Superb AI 项目创建菜单


  1. 选择图像数据类型

  2. 将项目名称设置为 CocoTest

  3. 注释类型选择“边界框”

  4. 创建五个匹配 COCO 类名称的对象类:['person'、'car'、'chair'、'book'、'bottle']



图 4. 在创建流程的这一步选择和定义项目的对象类


如图 5 所示,完成该流程后,您可以查看项目的主页面。



图 5. Superb AI Suite 项目主页面


第 4 步:使用 Suite SDK 上传数据


在创建完项目后,就可以开始上传数据了。您可以使用此链接中的代码片段上传数据 (https://github.com/Superb-AI-Suite/spb-example/blob/main/create-coco-project/upload.py)。将其保存在一个名为 upload.py 的文件中,然后在终端运行 python upload.py --project CocoTest --dataset coco-dataset。


这表示 CocoTest 是项目名称,coco-dataset 是数据集名称。然后将启动上传流程,可能需要几个小时才能完成上传,具体时间取决于设备的处理能力。


如图 6 所示,您可以在 Suite 网页上实时检查上传的数据集。



图 6. 通过 Suite 列表视图实时监控上传的数据集


第 5 步:标记数据集


下一步是标记 COCO 数据集。为了快速完成这项工作,请使用 Suite 强大的自动标记功能。具体来讲就是 Auto-Label 和 Custom Auto-Label 这两个强大的工具,会通过自动检测对象并进行标记来提高标记效率。


Auto-Label 是一个由 Superb AI 开发的预训练模型,可检测和标记 100 多个常见对象;Custom Auto-Label 是一个使用您自己的数据训练的模型,可检测和标记小众对象。


本教程中的 COCO 数据由五个能够被 Auto-Label 标记的常见对象组成。请按照链接中的指南设置 Auto-Label(https://docs.superb-ai.com/docs/image)。请注意,应选择 MSCO Box CAL 作为 Auto-Label 的 AI,并将对象名称与各自应用的对象进行映射。处理 COCO 数据集中的所有 3283 个标签可能需要大约一个小时。



图 7. 创建完毕的 Auto-Label 中的对象类设置


Auto-Label 运行完毕后,您会看到每个自动标记任务的难度:红色代表困难,黄色代表中等,绿色代表容易。难度越高,自动标记对图像进行错误标记的可能性就越大。


这种难度,或者说所估测的不确定性是根据对象尺寸的大小、照明条件的优劣、场景的复杂度等因素计算出来的。在实际使用时,您可以很容易地按照难度对标签进行分类和筛选,以便优先处理出错几率较高的标签。


第 6 步:从 Suite 中导出标记的数据集


在获得标记的数据集后,导出并下载标签。标签内容不仅仅是注释信息。为了充分利用一个标签来训练机器学习模型,您还必须知道其他信息,比如项目配置和关于原始数据的元信息。要想连同注释文件一起下载所有这些信息,首先要请求导出,以便 Suite 系统可以创建一个供下载的压缩文件。按照指南,从 Suite 中导出并下载标签 (https://docs.superb-ai.com/docs/export-and-download-labels)。



图 8. 通过用户界面导出数据集


在导出标签时,将创建一个压缩好的 zip 文件供您下载。导出结果文件夹将包含关于整个项目的基本信息、每个标签的注释信息以及每个数据资产的元数据。更多细节请参见导出结果格式文件 (https://docs.superb-ai.com/docs/export-result-format)。


第 7 步:将输出结果转换成 COCO 格式


接下来,创建一个脚本,将您的标签数据转换成可以输入到 TAO Toolkit 的格式,比如 COCO 格式。请注意,因为本教程使用的是 COCO 数据集,所以数据已经是 COCO 格式了。例如,您可以在下面找到一个随机导出标签的 JSON 文件:


{   "objects": [       {           "id": "7e9fe8ee-50c7-4d4f-9e2c-145d894a8a26",           "class_id": "7b8205ef-b251-450c-b628-e6b9cac1a457",           "class_name": "person",           "annotation_type": "box",           "annotation": {               "multiple": false,               "coord": {                   "x": 275.47,                   "y": 49.27,                   "width": 86.39999999999998,                   "height": 102.25               },               "meta": {},               "difficulty": 0,               "uncertainty": 0.0045           },           "properties": []       },       {           "id": "70257635-801f-4cad-856a-ef0fdbfdf613",           "class_id": "7b8205ef-b251-450c-b628-e6b9cac1a457",           "class_name": "person",           "annotation_type": "box",           "annotation": {               "multiple": false,               "coord": {                   "x": 155.64,                   "y": 40.61,                   "width": 98.34,                   "height": 113.05               },               "meta": {},               "difficulty": 0,               "uncertainty": 0.0127           },           "properties": []       }   ],   "categories": {       "properties": []   },   "difficulty": 1}


第 8 步:准备好用于模型训练的标记数据


接下来,使用 SuiteDataset 将 COCO 数据从 Suite 导入到模型开发。SuiteDataset 使 Suite 中导出的数据集可以通过 PyTorch 数据管道访问。下面的代码片段将用于训练集的 SuiteDataset 对象类进行了实例化。


class SuiteDataset(Dataset):   """   Instantiate the SuiteDataset object class for training set   """
def __init__( self, team_name: str, access_key: str, project_name: str, export_name: str, train: bool, caching_image: bool = True, transforms: Optional[List[Callable]] = None, category_names: Optional[List[str]] = None, ): """Function to initialize the object class""" super().__init__()
# Get project setting and export information through the SDK # Initialize the Python Client client = spb.sdk.Client(team_name=team_name, access_key=access_key, project_name=project_name) # Use get_export export_info = call_with_retry(client.get_export, name=export_name) # Download the export compressed file through download_url in Export export_data = call_with_retry(urlopen, export_info.download_url).read()
# Load the export compressed file into memory with ZipFile(BytesIO(export_data), 'r') as export: label_files = [f for f in export.namelist() if f.startswith('labels/')] label_interface = json.loads(export.open('project.json', 'r').read()) category_infos = label_interface.get('object_detection', {}).get('object_classes', [])
cache_dir = None if caching_image: cache_dir = f'/tmp/{team_name}/{project_name}' os.makedirs(cache_dir, exist_ok=True)
self.client = client self.export_data = export_data self.categories = [ {'id': i + 1, 'name': cat['name'], 'type': cat['annotation_type']} for i, cat in enumerate(category_infos) ] self.category_id_map = {cat['id']: i + 1 for i, cat in enumerate(category_infos)} self.transforms = build_transforms(train, self.categories, transforms, category_names) self.cache_dir = cache_dir
# Convert label_files to numpy array and use self.label_files = np.array(label_files).astype(np.string_)
def __len__(self): """Function to return the number of label files""" return len(self.label_files)
def __getitem__(self, idx): """Function to get an item""" idx = idx if idx >= 0 else len(self) + idx if idx < 0 or idx >= len(self): raise IndexError(f'index out of range')
image_id = idx + 1 label_file = self.label_files[idx].decode('ascii')
# Load label information corresponding to idx from the export compressed file into memory with ZipFile(BytesIO(self.export_data), 'r') as export: label = load_label(export, label_file, self.category_id_map, image_id)
# Download the image through the Suite sdk based on label_id try: image = load_image(self.client, label['label_id'], self.cache_dir) # Download data in real time using get_data from Suite sdk except Exception as e: print(f'Failed to load the {idx}-th image due to {repr(e)}, getting {idx + 1}-th data instead') return self.__getitem__(idx + 1)
target = { 'image_id': image_id, 'label_id': label['label_id'], 'annotations': label['annotations'], }
if self.transforms is not None: image, target = self.transforms(image, target) return image, target


请以类似的方式处理测试集。下面的代码片段通过包裹 SuiteDataset 使其与 Torchvision COCOEvaluator 兼容,将用于测试集的 SuiteCocoDataset 对象类实例化。


class SuiteCocoDataset(C.CocoDetection):   """   Instantiate the SuiteCocoDataset object class for test set   (by wrapping SuiteDataset to make compatible with torchvision's official COCOEvaluator)   """
def __init__( self, team_name: str, access_key: str, project_name: str, export_name: str, train: bool, caching_image: bool = True, transforms: Optional[List[Callable]] = None, category_names: Optional[List[str]] = None, num_init_workers: int = 20, ): """Function to initialize the object class""" super().__init__(img_folder='', ann_file=None, transforms=None)
# Call the SuiteDataset class dataset = SuiteDataset( team_name, access_key, project_name, export_name, train=False, transforms=[], caching_image=caching_image, category_names=category_names, ) self.client = dataset.client self.cache_dir = dataset.cache_dir
self.coco = build_coco_dataset(dataset, num_init_workers) self.ids = list(sorted(self.coco.imgs.keys())) self._transforms = build_transforms(train, dataset.categories, transforms, category_names)
def _load_image(self, id: int): """Function to load an image""" label_id = self.coco.loadImgs(id)[0]['label_id'] image = load_image(self.client, label_id, self.cache_dir) return image
def __getitem__(self, idx): """Function to get an item""" try: return super().__getitem__(idx) except Exception as e: print(f'Failed to load the {idx}-th image due to {repr(e)}, getting {idx + 1}-th data instead') return self.__getitem__(idx + 1)


然后,可以将 SuiteDataset 和 SuiteCocoDataset 用于您的训练代码。下面的代码片段说明了如何使用它们。在模型开发过程中,可以使用 train_loader 进行训练并使用 test_loader 进行评估。


train_dataset = SuiteDataset(   team_name=args.team_name,   access_key=args.access_key,   project_name=args.project_name,   export_name=args.train_export_name,   caching_image=args.caching_image,   train=True,)test_dataset = SuiteCocoDataset(   team_name=args.team_name,   access_key=args.access_key,   project_name=args.project_name,   export_name=args.test_export_name,   caching_image=args.caching_image,   train=False,   num_init_workers=args.workers,)
train_loader = DataLoader( train_dataset, num_workers=args.workers, batch_sampler=G.GroupedBatchSampler( RandomSampler(train_dataset), G.create_aspect_ratio_groups(train_dataset, k=3), args.batch_size, ), collate_fn=collate_fn,)test_loader = DataLoader( test_dataset, num_workers=args.workers, sampler=SequentialSampler(test_dataset), batch_size=1, collate_fn=collate_fn,)


第 9 步:使用 NVIDIA TAO Toolkit 训练您的模型


现在,可以将 Suite 注释的数据用于训练您的对象检测模型了。TAO Toolkit 使您能够训练、微调、修剪和输出经过高度优化的高精度计算机视觉模型,以便根据数据采用流行的网络架构和骨干网来完成部署。在本次教学中,您可以选择 TAO 自带的对象检测模型 YOLO v4。


首先,从 TAO Toolkit 快速入门https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/resources/tao-getting-started下载适用于 notebook 的样本。


pip3 install nvidia-taowget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/tao/tao-getting-started/versions/4.0.1/zip -O getting_started_v4.0.1.zip


$ unzip -u getting_started_v4.0.1.zip -d ./getting_started_v4.0.1 && rm -rf getting_started_v4.0.1.zip && cd ./getting_started_v4.0.1


接下来,使用下面的代码启动 notebook


$ jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root


在 localhost 上打开网页浏览器并前往以下地址:


http://0.0.0.0:8888


如要创建一个 YOLO v4 模型,请打开:

notebooks/tao_launcher_starter_kit/yolo_v4/yolo_v4.ipynb and follow the


并按照 notebook 上的说明训练模型。


根据结果对模型进行微调,直到达到指标要求。如果需要的话,您可以在这个阶段创建您自己的主动学习循环。在现实场景中,查询预测失败的样本,指派人工标记员对这批新的样本数据进行注释,并使用新标记的训练数据补充您的模型。在随后的几轮模型开发中,Superb AI 套件可以进一步协助您进行数据采集和注释,从而反复提高模型的性能。


使用 TAO Toolkit 4.0,无需任何 AI 专业知识,可以更加轻松地开始创建高精度的模型。可以使用 AutoML 自动微调您的超参数、体验一键将 TAO Toolkit 部署到各种云服务中、将 TAO Toolkit 与第三方 MLOPs 服务集成并探索新的基于 Transformer 的视觉模型 (CitySemSegformer, Peoplenet Transformer)。


总结


计算机视觉领域的数据标记会带来许多独特的挑战。由于需要标记的数据量大,这个过程可能十分困难且昂贵。此外,由于这个过程是主观的,使得在一个大型数据集中实现一致的高质量标记输出非常困难。


由于需要调整和优化许多算法与超参数,模型训练也可能极具挑战性。在这个过程中,需要对数据和模型有深刻的了解,并进行大量实验才能达到最佳效果。此外,训练计算机视觉模型往往需要耗费大量算力,因此在预算和时间有限的情况下很难做到。


Superb AI Suite 能够帮助您采集和标记高质量的计算机视觉数据集,而 NVIDIA TAO Toolkit 使您能够优化预先训练的计算机视觉模型。将两者相结合,就可以在不牺牲质量的前提下,大幅缩短计算机视觉应用的开发时间。


更多信息,敬请访问:


  • TAO Toolkit Google Colab notebook https://colab.research.google.com/github/NVIDIA-AI-IOT/nvidia-tao/blob/main/tensorflow/yolo_v4/yolo_v4.ipynb

  • TAO Toolkit 文档https://docs.nvidia.com/tao/tao-toolkit/index.html

  • Superb AI Suite 标记平台https://superb-ai.com/product/labeling/

  • Superb AI Suite 文档https://docs.superb-ai.com/docs/


点击 “阅读原文”,或扫描下方海报二维码观看 NVIDIA 创始人兼 CEO 黄仁勋在 COMPUTEX 2023 的主题演讲直播回放,主题演讲中文字幕版已上线,了解 AI、图形及其他领域的最新进展!


评论
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 62浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 99浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 112浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 173浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 63浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 53浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 73浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 40浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 53浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 72浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦