前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >视频数据标注工具与平台(数据标注公司)

视频数据标注工具与平台(数据标注公司)

原创
作者头像
扬起
发布于 2022-06-23 02:18:22
发布于 2022-06-23 02:18:22
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

视频数据标注平台(标注外包公司)

数据标注公司的工作比较多样,但视频标注对工具要求稍高一些,能在线上做的平台不是特别多,主要还是语音、图片标注。目前这个行业良莠不齐,有的平台技术实力强,有品牌背景,比如京东众智、百度众包,数据保密做得好。有的平台是专门做代理的,你的数据需求交给他,他转手就分包给下一层。下面介绍几个平台,也综合了其他博主的一些意见,如下:

京东众智

标注质量比较高,项目交付准时,数据隔离方案可以不出自己的服务器完成标注,比较重视客户的数据安全。也提供私有化部署服务。

百度众测

标注能力比较广泛,百度进入标注行业比较久,积累了较多的众包用户。不过我不看好众包模式,因为质量比较难把控。

figure-eight

国外知名的数据标注平台,国外好多大公司都与它有合作。需求方可以自行配置标注工具和相应的label,直接在平台上发任务,没有客户经理沟通…这可能对国内客户不太友好。

视频数据标注工具

CDVA

CDVA(compact descriptor for video analysis),主要是基于CDVS中的紧凑视觉描述子来做视频分析,之前是紧凑视觉描述子主要应用在图像检索领域。需要制作新的数据集,对视频帧进行标注,所以根据网上一个博主的标注工具进行了一定的修改,实现的功能是在每一帧中将需要标注的区域用鼠标选取4个点,顺序是顺时针。因为四边形的范围更广,之前的一些人直接标注了矩形,但是在一些仿射变换中,往往矩形的定位效果不好,矩形定位应该比较适合于人脸定位和行人定位之中。 http://www.cnblogs.com/louyihang-loves-baiyan/p/4457462.html

视频标注工具

由于实验室里面需要做CDVA的标准,CDVA(compact descriptor for video analysis),主要是基于CDVS中的紧凑视觉描述子来做视频分析,之前是紧凑视觉描述子主要应用在图像检索领域。需要制作新的数据集,对视频帧进行标注,所以根据网上一个博主的标注工具进行了一定的修改,实现的功能是在每一帧中将需要标注的区域用鼠标选取4个点,顺序是顺时针。因为四边形的范围更广,之前的一些人直接标注了矩形,但是在一些仿射变换中,往往矩形的定位效果不好,矩形定位应该比较适合于人脸定位和行人定位之中。

这些代码都是基于openCV的,因此在工程配置的时候需要天机opencv的库路径和头文件路径。 这里简单的介绍一下这个工具的用法

  • 首先运行这个应用程序可以看到一个黑框和一个Video窗口
  • 选取需要标注的区域,按照顺时针,画出4个点(此工具的写的时候默认是每帧图像画一个,不考虑多个情况,如果你要标注多个,就可以添加一个数组存取每个四边形的区域
  • 在画的时候若是点错了地方需求进一步修正则按 'z'即可,按下‘z’可以回退一个点,若画完4个点感觉还是不满意,也可以直接按下'c'全部清除
  • 当确定矩形区域之后,按下‘n’,就会将这些数据写入到指定的txt文件中,同时将进入下一帧
  • 由于视频中连续帧的变化不好,特别是镜头停止的时候,因此,为了避免重复画目标区域,上一帧的四边形坐标会自动的画在下一帧中,若需要重新画,按下‘c’,即可,若不需要重新画,按下'n'即会写入文件,同时继续下一帧,如此往复

在写入的txt文件中,一行代表一帧中的数据,第一个数为帧数,后4个数,分别是画矩形时依次点入的4个坐标值。 你可以根据自己的需求,修改这份代码,希望对大家能有所帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/********************************************************************
    created:	2015/04/18
    created:	18:4:2015   17:24
    filename: 	D:\WorkSpace\VS_Projects\VideoLabel\VideoLabel_Quadrilateral\video_label_quadrilateral.cpp
    file path:	D:\WorkSpace\VS_Projects\VideoLabel\VideoLabel_Quadrilateral
    file base:	video_label_quadrilateral
    file ext:	cpp
    author:		Yihang Lou
    purpose:	draw the quadrilateral labels in the frame captured from video
*********************************************************************/
#include "opencv2/opencv.hpp"
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
using namespace cv;

// Global variables

Mat img_original, img_drawing;
Point quad [4];
//the value of pointNum is between 0~4
static int pointNum = 0;
/*************************************************
// Method: help
// Description: describe the usage
// Author: Yihang Lou
// Date: 2015/04/18
// Returns: void
// History:
*************************************************/
static void help()
{
    cout << "This program designed for labeling video \n"
            "Only if you press the 'n' the present quadrilateral data will be written into txt file\n";


        cout << "Hot keys: \n"
        "\tESC - quit the program\n"
        "\tn - next frame of the video\n"
        "\tz - undo the last label point \n"
        "\tc - clear all the labels\n"
        << endl;
}
/*************************************************
// Method: drawQuadri
// Description: 
// Author: Yihang Lou 
// Date: 2015/04/18
// Returns: void
// Parameter: quad the point of Point array
// History:
*************************************************/
static void drawQuadri (Point * quad) {
    for(int i = 0; i < 4; i++)
    {
        line(img_drawing,quad[i],quad[(i+1)%4],Scalar(0,255,0),1,8,0);
    }
}


/*************************************************
// Method: onMouse
// Description: do the actions after onMouse event is called
// Author: Yihang Lou 
// Date: 2015/04/18
// Returns: void
// Parameter: event
// Parameter: x Mouse's coordinate
// Parameter: y 
// History:
*************************************************/
static void onMouse(int event, int x, int y, int, void*)
{


    switch (event)
    {
    case CV_EVENT_LBUTTONDOWN:
        quad[pointNum%4].x = x;
        quad[pointNum%4].y = y;
        cout<<"x = "<<x<<" y = "<<y<<endl;
        pointNum++;

        break;
    case CV_EVENT_LBUTTONUP:
        //finish drawing the rect (use color green for finish)

        circle(img_drawing,cvPoint(x,y),1,Scalar(0, 255, 0),1,8,0);

        if(pointNum == 4)
        {
            pointNum = 0;

            cout<<"draw quadri line"<<endl;
            drawQuadri(quad);
        }

        break;
    }

    imshow("Video", img_drawing);
    return;
}

/*************************************************
// Method: isempty
// Description: check the quad is empty
// Author: Yihang Lou 
// Date: 2015/04/18
// Returns: int
// Parameter: quad
// History:
*************************************************/
int isempty(Point * quad)
{
    for (int i = 0 ; i < 4; i++)
    {
        if (quad[i].x !=0 || quad[i].y !=0 )
        {
            return 0;
        }
    }
    return 1;
}
int main(){
    namedWindow("Video");
    ofstream outfile("1.txt");
    help();
    VideoCapture capture("1.avi");
    capture >> img_original;
    img_original.copyTo(img_drawing);
    imshow("Video", img_original);
    setMouseCallback("Video", onMouse, 0);
    int frame_counter = 0;
    while (1){
        int c = waitKey(0);
        if ((c & 255) == 27)
        {
            cout << "Exiting ...\n";
            break;
        }
        switch ((char)c)
        {
        case 'n':
            //read the next frame
            ++frame_counter;
            capture >> img_original;
            if (img_original.empty()){
                cout << "\nVideo Finished!" << endl;
                return 0;
            }

            img_original.copyTo(img_drawing);

            if (!isempty(quad))
            {
                drawQuadri(quad);

                outfile << frame_counter << " " << quad[0].x << " "<< quad[0].y << " " 
                    << quad[1].x << " "<< quad[1].y << " "
                    << quad[2].x << " "<< quad[2].y << " "
                    << quad[3].x << " "<< quad[3].y << " "<<endl;
            }

            break;
        case 'z':
            //undo the latest labeling point
            if(pointNum == 0)
            {
                cout<<"if you want to clear the existent quad please press 'c'"<<endl;
                break;
            }
            pointNum--;
            quad[pointNum].x=0;
            quad[pointNum].y=0;
            img_original.copyTo(img_drawing);
            for(int i = 0 ; i < pointNum; i++)		
            {
                circle(img_drawing,quad[i],1,Scalar(0, 255, 0),1,8,0);
            }

            break;
        case 'c':
            //clear quad array
            memset(quad,0,4*sizeof(Point));
            img_original.copyTo(img_drawing);
        }
        imshow("Video", img_drawing);
    }

    return 0;
}

VoTT

微软发布的可视化图像/视频标记工具。能够标记和注释图像目录或独立视频。使用 Camshift 跟踪算法辅助计算机标记和跟踪视频中的物体。将标签和资源导出到 Custom Vision Service CNTK,Tensorflow(PascalVOC)或YOLO 格式,用于训练对象检测模型。 https://github.com/Microsoft/VoTT

vatic

视频标注工具(vatic)

Github:https://github.com/cvondrick/vatic

1.安装(基于Ubuntu16.04)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo pip install cython==0.20
$ wget http://mit.edu/vondrick/vatic/vatic-install.sh
$ chmod +x vatic-install.sh
$ ./vatic-install.sh
$ cd vatic

vatic-install.sh可能下载不了,vatic-install下载

2.配置HTTP Serve

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/etc/apache2/sites-enabled/000-default.conf

替换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WSGIDaemonProcess www-data python-eggs=/home/cmcross/.python-eggs
WSGIProcessGroup www-data

<VirtualHost *:80>
    ServerName 0.0.0.0
    DocumentRoot /home/cmcross/vatic/public

    WSGIScriptAlias /server /home/cmcross/vatic/server.py
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

启用mod_headers模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

$ sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
重启Apache:
$ sudo apache2ctl graceful

3.配置SQL

创建vatic数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mysql -u root
mysql> create database vatic;

如果登录需要密码,密码是hail_ukraine,修改root用户为无密码状态,否则会报错,如果是上面我的csdn下载的,密码是root

更新mysql root为无密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password"; 
flush privileges; #更新所有操作权限
quit;

启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cp config.py-example config.py

如果需要上线服务,修改access相应选项,离线服务可以跳过

初始化数据库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic setup --database

重启数据库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic setup --database --reset

允许vatic访问turkic:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic setup --public-symlink

4.验证是否安装正确

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic status --verify

如果您收到任何错误消息,则表示安装未完成。

注意:不打算使用Mechanical Turk,忽略由Mechanical Turk引起的任何错误。

ERROR:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Localhost: http://localhost/

Testing access to Amazon Mechanical Turk... ERROR! Signature or access key missing
Testing access to database server... OK
Testing access to web server... ERROR! HTTP Error 403: Forbidden

One or more tests FAILED!

解决:修改Apache配置/etc/apache2/apache2.conf添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Directory /home/cmcross/vatic/public>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
</Directory>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
重启后解决问题$ sudo apache2ctl graceful

5.示例

视频取帧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mkdir /path/to/output/directory
$ turkic extract /path/to/video.mp4 /path/to/output/directory

宽高属性采用:--width 1000 --height 1000或者--no-resize

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic extract /path/to/video.mp4 /path/to/output/directory --width 1000 --height 1000

已经取好的视频帧可通过命令转化为vatic的格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic formatframes /path/to/frames/ /path/to/output/directory

导入视频(离线)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic load identifier /path/to/output/directory Label1 ~Attr1A ~Attr1B
 Label2 ~Attr2A ~Attr2B ~Attr2C Label3 --offline

identifier为表示符,Label1将具有属性Attr1A和Attr1B,Label2将具有属性Attr2B,Attr2B和Attr2C,并且Label3将不具有属性。 指定属性是可选的

pulish视频(离线)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic publish --offline

ERROR:publish后打开http://localhost?id=1&hitId=offline网址显示Server Error

解决方法:在/etc/apache2/sites-enabled/000-default.conf添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Directory /path/to/vatic>
    <Files server.py>
        Require all granted
    </Files>
</Directory>

导出voc格式数据集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ turkic dump identifier -o /output --pascal --pascal-skip 1

–pascal-skip:多少帧取一次数据,不加这个属性默认为15帧取一次

更多的参数参考Github:https://github.com/cvondrick/vatic

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
AI就业排名出炉:机器学习霸榜、薪资最高;但AI岗位需求正放缓
在过去几年里,人工智能和机器学习专家的就业市场似乎一直处于“缺口巨大”、“天价工资”的状态。而且随着AI技术几乎每天都在新行业中得到应用,似乎这个岗位的需求度短时间内是不会减弱。
新智元
2019/07/05
7280
AI就业排名出炉:机器学习霸榜、薪资最高;但AI岗位需求正放缓
2023年就业形势回顾:新兴行业和岗位的发展
2023年将是新兴行业和岗位发展的关键之年。随着科技的不断进步和全球经济的快速变化,新兴行业将成为就业市场的重要增长点。本文将回顾2023年的就业形势,重点关注新兴行业和岗位的发展趋势,为求职者提供有关未来就业方向的参考。
大盘鸡拌面
2023/11/28
7820
万亿数字化市场,数据科学为何能扛起“价值担当”?
如今,一股数据科学的热潮正席卷国内各大高校。今年十月底,一系列数据科学的网络直播课在多所大学火爆异常,吸引来自北大、清华、北师大、哈工大、浙大等多所高校学生广泛参与。
大数据在线
2023/02/28
4470
万亿数字化市场,数据科学为何能扛起“价值担当”?
【数据科学】什么? 你还不知道数据科学!?在不了解,就OUT了!!
商僧语 2012年《哈佛商业评论》( Harvard Business Review)把数据科学家誉为“21世纪最性感的职业”。数据科学也日渐成为更多小僧们的追逐的心仪对象。那么如何成为一名高大上,酷拽狂的数据科学家呢?就让商僧带你了解下吧!要想了解数据科学家,我们首先需要知道什么是数据科学,下面我们来看一下有关数据科学的简单介绍。 ■ ■ ■ 概述 数据科学是指用自动化的方法来分析结构化或非结构化的海量数据,并从中提取知识。它是数据挖掘技术和预测分析领域的延续,也被称为知识发现和数据挖掘(KDD)。 “
陆勤_数据人网
2018/02/26
7960
面对数据科学人才的巨大缺口,我们该如何提升自身技能
如今,数据科学家炙手可热。在世界各地,成千上万的学生都在大学或在线课程中选择了数据分析课程。
CDA数据分析师
2018/08/14
7100
面对数据科学人才的巨大缺口,我们该如何提升自身技能
2021数据科学就业市场最全分析:Python技能最重要,5到10年经验最吃香
作者:Sujan ShirolR、oberto Iriondo 机器之心编译 编辑:蛋酱、杜伟
机器之心
2021/06/08
7190
人工智能,机器人技术和数据科学家将在2020年成为新兴工作
根据LinkedIn 发布的《 2020年新兴工作报告》,人工智能,机器人技术(专门从事机器人过程自动化或RPA)和数据科学家角色在新加坡排名前5位。
RPA小葵
2020/05/14
4890
人工智能,机器人技术和数据科学家将在2020年成为新兴工作
2017年关于数据科学六大预言
作者|Paramita Ghosh 选文&校对|寒小阳 翻译|姜范波 今天,数据正在以前所未有的方式创造和促进着企业成长和商业利润。在过去的十年间,先进的数据科技和高级分析工具的出现,已经使商界精英们从他们的数据中收获无数的利益,然而,对大多数人而言,他们只是触及了数据潜能的最表面。数据科学正在开天辟地的让企业成功地撬动这个巨大的潜能。 麦肯锡2013年出版了一份特别的报告,预言全球商业界将会感觉到下一个十年数据科学专业人士的紧缺,尤其是善于从大量静态和动态(实时)数据中发现有价值的情报的数据分析师,缺
大数据文摘
2018/05/25
3900
AI时代就业指南:数学专业,你看不见的前尘似锦
数学专业,在大众化的眼光看来,毕业后的就业前景无非是当老师或者搞科研,这个专业似乎太古板且就业道路狭窄。然而,在AI时代,这些都是偏见,数学专业毕业生早已是互联网、金融界、IT界、科研界的“香饽饽”,数学专业的就业前景有你看不见的“前途似锦”! 数学专业的划分主要如下: 专业 基础数学(应用数学)概率论与数理统计(概率与统计精算)数学工程的科学与工程计算系专业概况数学系一般开设基础数学、应用数学两专业,而这两个专业方向基本是相通的,都是为培养数学和其他高科技复合型人才打下基础。基础数学学科较多地涉及:代
小莹莹
2018/04/19
2.1K0
AI时代就业指南:数学专业,你看不见的前尘似锦
【数据科学】数据科学家与数据科学
仅仅在几年前,数据科学家还不是一个正式确定的职业,然而一眨眼的工夫,这个职业就已经被誉为“今后十年IT行业最重要的人才”了。 一、数据科学家的起源 "数据科学"(DataScience)起初叫"datalogy "。最初在1966年由Peter Naur提出,用来代替"计算机科学"(丹麦人,2005年图灵奖得主,丹麦的计算机学会的正式名称就叫Danish Society of Datalogy,他是这个学会的第一任主席。Algol 60是许多后来的程序设计语言,包括今天那些必不可少的软件工程工具的原型。
陆勤_数据人网
2018/02/26
1.1K0
【数据科学】数据科学家与数据科学
业界深访 | 产品总监眼中的数据科学家到底是怎样的
在大数据和机器学习的时代,有一种职业脱颖而出——数据科学家。数据科学家在近年来备受追捧,也有越来越多的人想投身入数据科学领域。
CDA数据分析师
2018/11/22
4810
我们分析了1001份LinkedIn资料,得出了数据科学家的平均画像
接下来,从1990年代后期到2000年代早期,很显然当时互联网即将给世界带来翻天覆地的变化。许多精通技术的毕业生开始专攻软件和Web开发。
CDA数据分析师
2019/11/12
5420
【AI碾压金融成薪资最高行业】35位数据科学家透露秘诀:做好PPT!
职业招聘信息网站Indeed.com近日发布报告称,自2015年6月到2018年6月,与人工智能或机器学习有关的工作岗位数量增长了99.8%。
新智元
2018/09/25
6410
【AI碾压金融成薪资最高行业】35位数据科学家透露秘诀:做好PPT!
互联网公司如何组建数据科学团队?
今天近乎所有的互联网公司都希望组建(大)数据分析团队,但由于大数据技术应用是一个高速发展的全新领域,与建设常规的软件开发团队相比,企业在数据科学团队的招聘、建设和成长方面面临各种全新的挑战。 对于人力资源经理来说,大数据分析人才的招聘说明中有太多的生词,包括各种大数据新鲜名词、算法和技能,而且整个技术人才市场对大数据经验、最佳实践的定义和标准尚无定论。 近日Experteer的Rodrigo Rivera为VB撰文指出,企业组建大数据分析团队首先需要搞清楚以下三个问题:数据分析团队在企业组织架构中的智能定位
CSDN技术头条
2018/02/09
7850
互联网公司如何组建数据科学团队?
【数据科学】从学界到业界:关于数据科学的误解与事实
在从学界(粒子物理学博士后研究员)进入业界(数据科学领域)时,Emily Thompson也曾有过犹疑。而现在,在担任 Insight 项目总监10个月之后,她对数据科学家有了自己独特的看法。近日,她在一篇 文章 中就当前人们对数据科学的误解谈了自己的看法,主要涉及数据科学家的职责、应用领域、工作环境、职业发展、技能集合等方面。 误解一:“‘数据科学家’只是‘业务分析师’的一种花哨叫法,他们本质上是相同的” 在数据科学领域,业务分析师仍然占了很大一部分,而数据科学家也构建数据产品,创建软件平台,实现可视化
陆勤_数据人网
2018/02/27
8570
敲了17年代码,我现在连个面试机会都得不到
虽然全球经济正显现出逐步复苏的迹象,但科技行业的裁员仍在不断推进。在 IT 这个永远寻求下一个热门趋势的产业当中,美国软件就业市场哀鸿遍野,连技术老鸟们似乎也难以重拾竞争力——几十年的经验积累反而让他们感觉自己身处劣势。
深度学习与Python
2024/03/18
1320
敲了17年代码,我现在连个面试机会都得不到
数据科学家在美国仍然是最热门工作的3大原因
原作者 Vivian Zhang , Chris Neimeth 编译 CDA 编译团队 本文为 CDA 数据分析师原创翻译作品,转载需授权 根据美国招聘网站 Glassdoor 关于50个最热门工作岗位的报告,数据科学家毫不意外的连续第二年获得了首位。每年, Glassdoor 会根据所有工作获得的“ Glassdoor 工作得分”发布此报告。评分取决于三个关键因素:市场职位需求,工作满意度和平均年薪。 凭借着工作得分 4.8 分,工作满意度 4.4 分( 5 分为满分),平均年薪 11 万美元
CDA数据分析师
2018/02/26
7480
数据科学家在美国仍然是最热门工作的3大原因
未来什么职业最赚钱!LinkedIn 2017年美国新兴职业报告
新的职业种类对于所有水平的工作人员来说都拥有着新的可能性,这对于正在职场转型的职场人士意义更为重大。
IT阅读排行榜
2018/08/17
9680
未来什么职业最赚钱!LinkedIn 2017年美国新兴职业报告
Kaggle 2017数据科学报告:最受欢迎的工具竟然是......
摘要:数据平台 Kaggle 近日发布了2017 机器学习及数据科学调查报告,针对最受欢迎的编程语言、不同国家数据科学家的平均年龄、不同国家的平均年薪等进行深度调查。此次调查共收到16000余份回复。 正文: 2017年,我们首次进行了全行业调查,以全面了解数据科学和机器学习的生态。我们收到了超过16,000份回复,我们调查了”谁在处理数据?”,"各行业机器学习的最前沿发生了什么?”,”新进入这一领域的数据科学家如何取得突破?”等问题并获得了大量反馈信息。本文分享了我们的一些重要发现,其中的摘要内容
小莹莹
2018/04/18
8490
Kaggle 2017数据科学报告:最受欢迎的工具竟然是......
2020 年数据科学就业市场必备的五项技能
数据科学是一个竞争激烈的领域,人们正在迅速学习越来越多的技能和经验。这导致了机器学习工程师的从业要求的直线上升,因此 2020 年我的建议是,所有的数据科学家也需要成为开发人员。
AI研习社
2020/01/02
4040
推荐阅读
相关推荐
AI就业排名出炉:机器学习霸榜、薪资最高;但AI岗位需求正放缓
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档