澳门新萄京3522

张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

如何用Python识别停车位?

2019-01-29 10:30 次阅读

【导语】今天这篇文章的选题非常贴近生活。营长生活在北京,深知开车出门最怕的就是堵车和找不到停车位。记得冬至那个周末,几个小伙伴滑雪回来找了一家饺子馆吃饺子,结果七拐八拐,好不容易才找到一个停车位。看到这篇技术文章,马上就想要学习一下,分享给大家,希望有助于解决大家这个痛点问题,春节出行没准就可以用得上了。

作者通过相机结合深度学习算法,基于 Python 语言建立一个高精度的停车位的通知系统,每当有新停车位时就会发短信提醒我。听起来好像很复杂,真的方便实用吗?但实际上所使用的工具都是现成的,只要将这些工具进行有机的组合,就可以快速、简便的实现。

下面我们就开始学习整个工程流程:

分解问题

解决一个复杂的问题,首先第一步是要把问题分解成几个简单子任务。然后,针对每个子任务,运用机器学习中不同的方法来分别解决每个问题。最后把这些子任务贯穿起来,形成整套解决方案。

下面是检测开放停车位的流程图:

输入:普通摄像头采集的视频流

有了输入数据后,接下来我们需要知道图像的哪一部分是停车位,而且停车位是没有人使用的。

第一步:检测视频帧中所有可能的停车位。

第二步:检测每一帧视频中的所有车辆。可以跟踪每辆车从一帧到另一帧的运动。

第三步:确定目前有哪些停车位被占用,哪些没有被占用。这需要结合第一步和第二步的结果。

最后一步:当停车位变成可用时,系统发出通知。

其实可以使用多种不同的方法来完成这些步骤。不同的方法将具有不同的优势和缺点。接下来具体来看:

一、探测停车位

相机视图如下图所示:

需要扫描图像,并得到有效停车区域,如下面黄色标识出来的位置:

一个懒办法是程序写死每个停车场的位置,而不是自动检测停车场。但是如果移动摄像机,探测不同街道上的停车位,就必须再次手动定位停车位置。这样看来这个方法一点都不好,还是要采用自动检测停车位的方法。

其中一个想法是识别停车计时器并假设每个计时器旁边都有一个停车位:

但是这种方法也有一些问题。首先,并不是每个停车位有一个停车计时器,而且我们最想先找到免费停车位。第二,知道停车计时器的位置还不能告诉我们确切的停车位置点。

另一个想法是搭建一个目标检测模型,找到在马路上画的停车位记号,就像下图标识出来的:

这种方法也有两个难点。首先,从远处看,停车位线的标志很小,很难看到,增加了识别难度;其次,道路上还有各种交通标记线,比如车道线、人行道斑马线,这也给识别增加了难度。

或许还可以换个思维方式,回避一些技术挑战。重新思考停车位到底是什么呢?无非是一个车需要停放一定时间的位置。所以我们可能根本不需要检测停车位,只要检测出长时间不动的车,并假设它们的位置就是停车位。

所以,如果我们能检测出汽车,并找出哪些车在视频帧之间没有移动,就可以推断停车位的位置。

二、在图像中检测汽车

在视频中检测车辆是一个经典的目标检测问题。有很多机器学习方法可以实现。下面列出了一些最常见的目标检测算法:

1、通过 HOG(梯度方向直方图)目标检测器检测出所有的车。这种非深度学习方法运行起来相对较快,但它无法处理汽车在不同方向上的旋转问题。

2、通过 CNN(卷积神经网络)目标检测器检测所有的车。这种方法是准确的,但是效率比较低,因为同一张图像必须扫描多次,以检测到所有的汽车。虽然它可以很容易地对不同旋转方向的汽车定向,但是比 HOG 方法需要更多的训练数据。

3、使用新的深度学习方法,如 Mask R-CNN,Faster R-CNN 或者 YOLO 算法,兼容准确性和运行效率,大大加快了检测过程。一旦有大量的训练数据,在 GPU 上运行也很快。

通常来说,我们希望选择最简单可行的算法和最少的训练数据,而不是一定要用那些流行的新的算法。基于目前这种特殊场景下,Mask R- CNN 是一个不错的选择。

Mask R-CNN 架构就是在整个图像中检测对象,不使用滑动窗口的方式,所以运行速度很快。有了 GPU 处理器,我们能够每秒处理多帧的高分辨率视频,从中检测到车辆。

Mask R-CNN 为我们提供了很多检测到的信息。大多数目标检测算法只返回每个对象的边框。但是 Mask R-CNN 不仅会给我们每个对象的位置,也会给出一个对象的轮廓,像这样:

为了训练 Mask R-CNN 模型,我们需要很多这类检测物体的图片。可以花几天的时间出去拍摄照片,不过已经存在一些汽车图像的公共数据集。有一个很流行的数据集叫做COCO(Common Objects In Context的缩写),它里面已经有超过 12000 张汽车的图片。下面就是一个 COCO 数据集中的图像:

这些数据可以很好的训练 Mask R-CNN 模型,而且已经有很多人使用过 COCO数据集,并分享了训练的结果。所以我们可以直接使用一些训练好的模型,在本项目中使用 Matterport 的开源模型。

不仅能识别车辆,还能识别到交通灯和人。有趣的是,它把其中一棵树识别成“potted plant”。对于图像中检测到的每个对象,我们从 MaskR-CNN 模型得出以下 4 点:

(1)不同对象的类别,COCO 模型可以识别出 80 种不同的物体,比如小轿车和卡车。

(2)目标识别的置信度,数字越大,说明模型识别对象的精准度越高。

(3)图像中物体的边界框,给定了 X/Y 像素的位置。

(4)位图“mask”说明了边框内哪些像素是对象的一部分,哪些不是。使用“mask”数据,我们也可以算出物体的轮廓。

下面是 Python 代码,使用 Matterport 的 Mask R-CNN 的训练模型和 OpenCV 来检测汽车边框:

1import os  2import numpy as np  3import cv2  4import mrcnn.config  5import mrcnn.utils  6from mrcnn.model import MaskRCNN  7from pathlib import Path  8  9 10# Configuration that will be used by the Mask-RCNN library 11class MaskRCNNConfig(mrcnn.config.Config): 12    NAME = "coco_pretrained_model_config" 13    IMAGES_PER_GPU = 1 14    GPU_COUNT = 1 15    NUM_CLASSES = 1 + 80  # COCO dataset has 80 classes + one background class 16    DETECTION_MIN_CONFIDENCE = 0.6 17 18 19# Filter a list of Mask R-CNN detection results to get only the detected cars / trucks 20def get_car_boxes(boxes, class_ids): 21    car_boxes = [] 22 23    for i, box in enumerate(boxes): 24        # If the detected object isn't a car / truck, skip it 25        if class_ids[i] in [3, 8, 6]: 26            car_boxes.append(box) 27 28    return np.array(car_boxes) 29 30 31# Root directory of the project 32ROOT_DIR = Path(".") 33 34# Directory to save logs and trained model 35MODEL_DIR = os.path.join(ROOT_DIR, "logs") 36 37# Local path to trained weights file 38COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5") 39 40# Download COCO trained weights from Releases if needed 41if not os.path.exists(COCO_MODEL_PATH): 42    mrcnn.utils.download_trained_weights(COCO_MODEL_PATH) 43 44# Directory of images to run detection on 45IMAGE_DIR = os.path.join(ROOT_DIR, "images") 46 47# Video file or camera to process - set this to 0 to use your webcam instead of a video file 48VIDEO_SOURCE = "test_images/parking.mp4" 49 50# Create a Mask-RCNN model in inference mode 51model = MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=MaskRCNNConfig()) 52 53# Load pre-trained model 54model.load_weights(COCO_MODEL_PATH, by_name=True) 55 56# Location of parking spaces 57parked_car_boxes = None 58 59# Load the video file we want to run detection on 60video_capture = cv2.VideoCapture(VIDEO_SOURCE) 61 62# Loop over each frame of video 63while video_capture.isOpened(): 64    success, frame = video_capture.read() 65    if not success: 66        break 67 68    # Convert the image from BGR color (which OpenCV uses) to RGB color 69    rgb_image = frame[:, :, ::-1] 70 71    # Run the image through the Mask R-CNN model to get results. 72    results = model.detect([rgb_image], verbose=0) 73 74    # Mask R-CNN assumes we are running detection on multiple images. 75    # We only passed in one image to detect, so only grab the first result. 76    r = results[0] 77 78    # The r variable will now have the results of detection: 79    # - r['rois'] are the bounding box of each detected object 80    # - r['class_ids'] are the class id (type) of each detected object 81    # - r['scores'] are the confidence scores for each detection 82    # - r['masks'] are the object masks for each detected object (which gives you the object outline) 83 84    # Filter the results to only grab the car / truck bounding boxes 85    car_boxes = get_car_boxes(r['rois'], r['class_ids']) 86 87    print("Cars found in frame of video:") 88 89    # Draw each box on the frame 90    for box in car_boxes: 91        print("Car: ", box) 92 93        y1, x1, y2, x2 = box 94 95        # Draw the box 96        cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 1) 97 98    # Show the frame of video on the screen 99    cv2.imshow('Video', frame)100101    # Hit 'q' to quit102    if cv2.waitKey(1) & 0xFF == ord('q'):103        break104105# Clean up everything when finished106video_capture.release()107cv2.destroyAllWindows()

运行该脚本后,将会看到在图像中识别到的汽车和边框:

同时会得到检测的每辆车的像素坐标:

这样我们已经成功地在图像中检测到了汽车。接下来到了下一个步骤。

三、探测空车位

知道图像中每辆车的像素位置后,通过观察连续多帧视频,可以很容易地算出哪帧里汽车没有移动。但我们如何检测到汽车何时离开停车位?经观察,图像中汽车的边框部分有所重叠:

如果假设每个边界框代表一个停车场空间,这个区域即使有车开走了,但是仍可能被另外汽车部分占据。因此我们需要一种方法来测量重叠,检查出“大部分为空”的框。我们使用的度量方法称为 Intersection Over Union(IoU)。通过计算两个物体重叠的像素量,然后除以两个物体所覆盖的像素:

有了这个值,接下来就可以很容易确定一辆车是否在停车位。如果 IoU 测量值低,比如 0.15,表示汽车并没有占据大部分的停车位空间。但是如果测量值很高,比如 0.6,就表示汽车占据了大部分的停车位,因此可以确定停车位已被占用。

IoU 是计算机视觉中常用的一种测量方法,提供了现成的代码。Matterport 的Mask R-CNN 库可以直接调用这个函数 mrcnn.utils.compute_overlaps()。假设我们有一个表示停车位边界框的列表,要检识别到的车辆是否在这些边界内框很简单,只需添加一两行代码:

1    # Filter the results to only grab the car / truck bounding boxes2    car_boxes = get_car_boxes(r['rois'], r['class_ids'])34    # See how much cars overlap with the known parking spaces5    overlaps = mrcnn.utils.compute_overlaps(car_boxes, parking_areas)67    print(overlaps)

结果显示为:

在二维数组中,每一行表示一个停车位边界框。同样的,每一列表示停车场被汽车所覆盖的程度。1.0 分意味着汽车完全占据了,而 0.02 这样的低分数,意味着有重叠区域,但不会占据大部分空间。

要找到无人使用的停车位,只需要计算出这个数组。如果所有的数都是 0 或者很小,也就表示空间没有被占用,因此一定是空停车位。

尽管 Mask R-CNN 非常精确,但目标检测并不能做到完美。有时也会在一段视频中漏掉一两辆车。所以在定位到一个空车位时,还应该检测在一段时间内都是空的,比如 5或10帧连续视频。这也可以避免视频本身出现故障而造成误检。一旦看到几个连续视频中都有空车位,马上发送提醒通知!

四、发送消息

最后一步是发送 SMS 提醒消息。利用 Twilio 通过 Python 发送 SMS 消息非常简单,基本上几行代码就可以实现。当然,Twilio 只是这个项目中用到的方法,你也可以用其他方式实现。

要使用 Twilio,先要注册一个试用帐户,创建一个 Twilio 电话号码并获取您的帐户凭证。然后,您需要安装 Twilio Python 客户端库:

下面是发送 SMS 消息的 Python 代码 (需用自己的帐户信息替换这些值):

1from twilio.rest import Client 2 3# Twilio account details 4twilio_account_sid = 'Your Twilio SID here' 5twilio_auth_token = 'Your Twilio Auth Token here' 6twilio_source_phone_number = 'Your Twilio phone number here' 7 8# Create a Twilio client object instance 9client = Client(twilio_account_sid, twilio_auth_token)1011# Send an SMS12message = client.messages.create(13    body="This is my SMS message!",14    from_=twilio_source_phone_number,15    to="Destination phone number here"16)

在添加 SMS 发送功能时要注意,不要连续发送已经识别过的空车位信息。可以用一个 flag 来跟踪已经发过的短信,除非是设定一段时间后再次提醒或是检测到新的空车位。

五、把所有流程串在一起

现在将每个步骤集成一个Python脚本。下面是完整代码,要运行这段代码,需要安装Python 3.6+,Matterport 的 Mask R-CNN 和 OpenCV:

1import os  2import numpy as np  3import cv2  4import mrcnn.config  5import mrcnn.utils  6from mrcnn.model import MaskRCNN  7from pathlib import Path  8from twilio.rest import Client  9 10 11# Configuration that will be used by the Mask-RCNN library 12class MaskRCNNConfig(mrcnn.config.Config): 13    NAME = "coco_pretrained_model_config" 14    IMAGES_PER_GPU = 1 15    GPU_COUNT = 1 16    NUM_CLASSES = 1 + 80  # COCO dataset has 80 classes + one background class 17    DETECTION_MIN_CONFIDENCE = 0.6 18 19 20# Filter a list of Mask R-CNN detection results to get only the detected cars / trucks 21def get_car_boxes(boxes, class_ids): 22    car_boxes = [] 23 24    for i, box in enumerate(boxes): 25        # If the detected object isn't a car / truck, skip it 26        if class_ids[i] in [3, 8, 6]: 27            car_boxes.append(box) 28 29    return np.array(car_boxes) 30 31 32# Twilio config 33twilio_account_sid = 'YOUR_TWILIO_SID' 34twilio_auth_token = 'YOUR_TWILIO_AUTH_TOKEN' 35twilio_phone_number = 'YOUR_TWILIO_SOURCE_PHONE_NUMBER' 36destination_phone_number = 'THE_PHONE_NUMBER_TO_TEXT' 37client = Client(twilio_account_sid, twilio_auth_token) 38 39 40# Root directory of the project 41ROOT_DIR = Path(".") 42 43# Directory to save logs and trained model 44MODEL_DIR = os.path.join(ROOT_DIR, "logs") 45 46# Local path to trained weights file 47COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5") 48 49# Download COCO trained weights from Releases if needed 50if not os.path.exists(COCO_MODEL_PATH): 51    mrcnn.utils.download_trained_weights(COCO_MODEL_PATH) 52 53# Directory of images to run detection on 54IMAGE_DIR = os.path.join(ROOT_DIR, "images") 55 56# Video file or camera to process - set this to 0 to use your webcam instead of a video file 57VIDEO_SOURCE = "test_images/parking.mp4" 58 59# Create a Mask-RCNN model in inference mode 60model = MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=MaskRCNNConfig()) 61 62# Load pre-trained model 63model.load_weights(COCO_MODEL_PATH, by_name=True) 64 65# Location of parking spaces 66parked_car_boxes = None 67 68# Load the video file we want to run detection on 69video_capture = cv2.VideoCapture(VIDEO_SOURCE) 70 71# How many frames of video we've seen in a row with a parking space open 72free_space_frames = 0 73 74# Have we sent an SMS alert yet? 75sms_sent = False 76 77# Loop over each frame of video 78while video_capture.isOpened(): 79    success, frame = video_capture.read() 80    if not success: 81        break 82 83    # Convert the image from BGR color (which OpenCV uses) to RGB color 84    rgb_image = frame[:, :, ::-1] 85 86    # Run the image through the Mask R-CNN model to get results. 87    results = model.detect([rgb_image], verbose=0) 88 89    # Mask R-CNN assumes we are running detection on multiple images. 90    # We only passed in one image to detect, so only grab the first result. 91    r = results[0] 92 93    # The r variable will now have the results of detection: 94    # - r['rois'] are the bounding box of each detected object 95    # - r['class_ids'] are the class id (type) of each detected object 96    # - r['scores'] are the confidence scores for each detection 97    # - r['masks'] are the object masks for each detected object (which gives you the object outline) 98 99    if parked_car_boxes is None:100        # This is the first frame of video - assume all the cars detected are in parking spaces.101        # Save the location of each car as a parking space box and go to the next frame of video.102        parked_car_boxes = get_car_boxes(r['rois'], r['class_ids'])103    else:104        # We already know where the parking spaces are. Check if any are currently unoccupied.105106        # Get where cars are currently located in the frame107        car_boxes = get_car_boxes(r['rois'], r['class_ids'])108109        # See how much those cars overlap with the known parking spaces110        overlaps = mrcnn.utils.compute_overlaps(parked_car_boxes, car_boxes)111112        # Assume no spaces are free until we find one that is free113        free_space = False114115        # Loop through each known parking space box116        for parking_area, overlap_areas in zip(parked_car_boxes, overlaps):117118            # For this parking space, find the max amount it was covered by any119            # car that was detected in our image (doesn't really matter which car)120            max_IoU_overlap = np.max(overlap_areas)121122            # Get the top-left and bottom-right coordinates of the parking area123            y1, x1, y2, x2 = parking_area124125            # Check if the parking space is occupied by seeing if any car overlaps126            # it by more than 0.15 using IoU127            if max_IoU_overlap < 0.15:128                # Parking space not occupied! Draw a green box around it129                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 3)130                # Flag that we have seen at least one open space131                free_space = True132            else:133                # Parking space is still occupied - draw a red box around it134                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 0, 255), 1)135136            # Write the IoU measurement inside the box137            font = cv2.FONT_HERSHEY_DUPLEX138            cv2.putText(frame, f"{max_IoU_overlap:0.2}", (x1 + 6, y2 - 6), font, 0.3, (255, 255, 255))139140        # If at least one space was free, start counting frames141        # This is so we don't alert based on one frame of a spot being open.142        # This helps prevent the script triggered on one bad detection.143        if free_space:144            free_space_frames += 1145        else:146            # If no spots are free, reset the count147            free_space_frames = 0148149        # If a space has been free for several frames, we are pretty sure it is really free!150        if free_space_frames > 10:151            # Write SPACE AVAILABLE!! at the top of the screen152            font = cv2.FONT_HERSHEY_DUPLEX153            cv2.putText(frame, f"SPACE AVAILABLE!", (10, 150), font, 3.0, (0, 255, 0), 2, cv2.FILLED)154155            # If we haven't sent an SMS yet, sent it!156            if not sms_sent:157                print("SENDING SMS!!!")158                message = client.messages.create(159                    body="Parking space open - go go go!",160                    from_=twilio_phone_number,161                    to=destination_phone_number162                )163                sms_sent = True164165        # Show the frame of video on the screen166        cv2.imshow('Video', frame)167168    # Hit 'q' to quit169    if cv2.waitKey(1) & 0xFF == ord('q'):170        break171172# Clean up everything when finished173video_capture.release()174cv2.destroyAllWindows()

这段代码写的比较简洁,实现了基本的功能。大家也可以试着修改代码以适应不同的场景。仅仅更改一下模型参数,出现的效果就可能完全不同,在不同应用中尽情发挥想象力!

原文标题:春节停车难?用Python找空车位

文章出处:【微信号:rgznai100,微信公众号:AI科技大本营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

第一届中国AI与机器学习研讨会

活动内容  人工智能技术将在未来对传统产业产生重大颠覆性影响,人工智能将在各行各业为创新设计带来新的动力,它也将催生新的
发表于 03-29 00:00 62次 阅读
第一届中国AI与机器学习研讨会

用Python轻松做一个智能聊天机器人

伴随着自然语言技术和机器学习技术的发展,越来越多的有意思的自然语言小项目呈现在大家的眼前,聊天机器人....
的头像 澳门新萄京3522工程师 发表于 04-25 19:21 184次 阅读
用Python轻松做一个智能聊天机器人

全自动驾驶芯片:我,最强,打钱

FSD 芯片的另一个卖点是 32MB 的SRAM缓存,32MB 也许听起来小的可怜,但这是 SRAM....
的头像 汽车工程师 发表于 04-25 17:30 137次 阅读
全自动驾驶芯片:我,最强,打钱

机器学习竞争其实是一场数据上的竞争

那些热衷竞争实施机器学习的公司现在惊讶地发现,其实,实施一些算法使机器变得对某一数据或问题更加智能并....
的头像 人工智能学家 发表于 04-25 16:44 67次 阅读
机器学习竞争其实是一场数据上的竞争

仓储物流机器人公司“Syrius炬星”完成数千万元 Pre-A 轮融资

该公司创始人蒋超表示,Syrius炬星目前的核心业务有三:机器人核心技术研发,包括传感器、算法、集群....
的头像 机器人前沿 发表于 04-25 15:22 67次 阅读
仓储物流机器人公司“Syrius炬星”完成数千万元 Pre-A 轮融资

AI死亡启示录

今天Reddit机器学习板块最火的话题,莫过于一个“亡于AI”的帖子,作者分享了发生在自己公司的一个....
的头像 重庆人工智能 发表于 04-25 14:46 69次 阅读
AI死亡启示录

基于400多项运动训练了一个循环神经网络和一个深度卷积生成对抗网络,旨在创造一种全新的原创运动

“GPU技术帮助我们将训练和生成阶段缩减到原来的一小部分,” Webb表示。“如果没有这样的速度,我....
的头像 英伟达NVIDIA中国 发表于 04-25 11:42 220次 阅读
基于400多项运动训练了一个循环神经网络和一个深度卷积生成对抗网络,旨在创造一种全新的原创运动

使用泰坦尼克号乘客数据预测生存死亡

用随机森林解决泰坦尼克号沉没问题
发表于 04-25 07:13 14次 阅读
使用泰坦尼克号乘客数据预测生存死亡

C++的框架、库和代码分析的64222葡京的网址大全

C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛....
发表于 04-24 18:29 15次 阅读
C++的框架、库和代码分析的64222葡京的网址大全

SAP智慧设备云1902版本的功能更新

在 SAP Predictive Maintenance and Service(PdMS)预测性维....
的头像 SAP天天事 发表于 04-24 18:17 557次 阅读
SAP智慧设备云1902版本的功能更新

汽车正快速进入全新的ADAS世界

据估计,自动驾驶功能的验证需要在实际道路上进行数百万甚至十亿公里的驾驶测试,如果再考虑到对道路上行人....
的头像 智车科技 发表于 04-24 18:08 645次 阅读
汽车正快速进入全新的ADAS世界

目前数据分析师的招聘需求如何?评价待遇如何?

从薪资来看,数据分析师确实是高薪职位,基本上是10k起步,能开30k的公司也不少。从薪资分布区域来看....
的头像 澳门新萄京3522工程师 发表于 04-24 17:32 165次 阅读
目前数据分析师的招聘需求如何?评价待遇如何?

分析并比较五种非常有用的深度学习框架的优点及应用。

我喜欢TensorFlow的原因有两点:它完全是开源的,并且有出色的社区支持。TensorFlow为....
的头像 澳门新萄京3522工程师 发表于 04-24 17:26 165次 阅读
分析并比较五种非常有用的深度学习框架的优点及应用。

利用进化后的反向传播算法实现快速、高效的训练

研究人员提出了一种离线型端到端训练的鉴别目标跟踪方法。在Python中可以使用PyTorch实现,新....
的头像 澳门新萄京3522工程师 发表于 04-24 17:23 192次 阅读
利用进化后的反向传播算法实现快速、高效的训练

近年来机器学习研究蒸蒸日上 人脸识别技术也得到了极大的改善

由于深度学习的普及,近年来机器学习研究蒸蒸日上,人脸识别技术也得到了极大的改善。在一个典型的用例中,....
发表于 04-24 16:14 80次 阅读
近年来机器学习研究蒸蒸日上 人脸识别技术也得到了极大的改善

教你如何使用Python搭一个Transformer

与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因....
的头像 澳门新萄京3522工程师 发表于 04-24 15:00 122次 阅读
教你如何使用Python搭一个Transformer

几个常用算法的适应场景及其优缺点!

通常情况下,如果是小训练集,高偏差/低方差的分类器(例如,朴素贝叶斯NB)要比低偏差/高方差大分类的....
的头像 澳门新萄京3522工程师 发表于 04-24 14:08 163次 阅读
几个常用算法的适应场景及其优缺点!

深度学习时代,能否实现照片“隐写术”?

传统的AR(增强现实)就是这么做的。但这需要联网,而且对于纹理不丰富的图片,检索效果很差,也没有很好....
的头像 澳门新萄京3522工程师 发表于 04-24 10:46 157次 阅读
深度学习时代,能否实现照片“隐写术”?

人工智能风头正劲却逃不过“博眼球”的帽子

想要知道对方想什么”,通过科技手段或许能实现,这不,在普林斯顿大学,研究者们正在探索大脑的奥秘,他们....
的头像 澳门新萄京3522工程师 发表于 04-24 10:34 290次 阅读
人工智能风头正劲却逃不过“博眼球”的帽子

AI人才集中在美中英大国,美国远超中国4倍

不难发现,全球互联网的巨头都在布局AI,即便如此,BAT的AI人才存量仍然不够,常常会面临“无人可用....
的头像 澳门新萄京3522工程师 发表于 04-24 10:24 244次 阅读
AI人才集中在美中英大国,美国远超中国4倍

过拟合,欠拟合以及模型的判断

python-学习曲线,判断过拟合,欠拟合
发表于 04-24 10:23 13次 阅读
过拟合,欠拟合以及模型的判断

Python中五种略高级特征的使用方法

Python 多好用不用多说,大家看看自己用的语言就知道了。但是 Python 隐藏的高级功能你都 ....
的头像 澳门新萄京3522工程师 发表于 04-24 10:12 163次 阅读
Python中五种略高级特征的使用方法

东京大学团队开源了一款名为「neural collage」的图像编辑工具

sCBN 是一种特殊形式的条件批正则化方法 (CBN),作为批正则化方法 (BN) 的变体,它能够对....
的头像 嵌入式资讯精选 发表于 04-23 16:32 276次 阅读
东京大学团队开源了一款名为「neural collage」的图像编辑工具

苹果拟开设“材料回收”实验室 利用机器人技术和机器学习来拆解设备

苹果公司今日表示,将开设一个“材料回收”实验室,研究利用机器人技术和机器学习来拆解设备,回收铜、铝和....
的头像 人工智能 发表于 04-23 15:45 374次 阅读
苹果拟开设“材料回收”实验室 利用机器人技术和机器学习来拆解设备

关于AI文本生成动画模型的论文

将文本转换为动画并不是一项简单的任务,大多数将文本转换为视频的工具不能处理复杂句子,因为输入的句子和....
的头像 人工智能爱好者社区 发表于 04-23 13:47 139次 阅读
关于AI文本生成动画模型的论文

旷视把开辟基础算法新路的斧头交给了28岁的年轻人

张祥雨认为,70%的AI从业者依然从事着能被机器替代的重复性工作,AutoML这项看似会让AI从业者....
的头像 新智元 发表于 04-23 10:45 362次 阅读
旷视把开辟基础算法新路的斧头交给了28岁的年轻人

机器学习和统计的主要区别在于它们的目的

首先,我们必须明白,统计和统计建模是不一样的。统计是对数据的数学研究。除非有数据,否则无法进行统计。....
的头像 澳门新萄京3522工程师 发表于 04-22 17:11 323次 阅读
机器学习和统计的主要区别在于它们的目的

有意义的机器学习来自于不同的数据

人工智能的三大发展要素已经是老生常谈了。算法、算力和数据对机器学习的重要性和声望不亚于“谦哥”的喝酒....
的头像 嵌入式资讯精选 发表于 04-22 15:35 268次 阅读
有意义的机器学习来自于不同的数据

到2023年,AI和机器学习数据准备解决方案市场达12亿美元

在未来两年内,所有竞争对手的数据准备工具都将以机器学习增强智能作为核心。
的头像 人工智能 发表于 04-22 15:23 253次 阅读
到2023年,AI和机器学习数据准备解决方案市场达12亿美元

CMU王赟写在入职Facebook之前的八年博士生涯心路历程

第二个组织,叫做 Pittsburgh pLayboycLub。这是CMU和隔壁匹大的几个学生组建的....
的头像 将门创投 发表于 04-22 14:34 191次 阅读
CMU王赟写在入职Facebook之前的八年博士生涯心路历程

谈谈Python那些不为人知的冷知识

因为当你在同一行里,同时给两个变量赋同一值时,解释器知道这个对象已经生成,那么它就会引用到同一个对象....
的头像 澳门新萄京3522工程师 发表于 04-22 13:40 169次 阅读
谈谈Python那些不为人知的冷知识

什么是智能内容生成?万字讲述智能内容生成实践

事实上,Data2Seq领域在工业界有着非常大的应用价值,应用领域如天气预报、体育报道、财经新闻和医....
的头像 澳门新萄京3522工程师 发表于 04-22 11:52 271次 阅读
什么是智能内容生成?万字讲述智能内容生成实践

设计了一个强强联合型模型来预测股票价格,为什么这么形容?

首先,要了解什么因素会影响 GS 的股票价格波动,需要包含尽可能多的信息(从不同的方面和角度)。将使....
的头像 澳门新萄京3522工程师 发表于 04-22 11:38 330次 阅读
设计了一个强强联合型模型来预测股票价格,为什么这么形容?

邓力荣获学术界的盛高荣誉:入选加拿大国家工程院院士

即便几经挫败,邓力也始终在进行着统计模型和计算人工神经网络在内的相关研究,并在加入加拿大滑铁卢大学任....
的头像 新智元 发表于 04-22 11:27 449次 阅读
邓力荣获学术界的盛高荣誉:入选加拿大国家工程院院士

再下一城!机器学习引擎Lc0赢得计算机国际象棋锦标赛

机器学习国际象棋引擎Lc0上周末赢得了Chess.com计算机国际象棋锦标赛,成为历史上第一个获得此....
的头像 澳门新萄京3522工程师 发表于 04-22 11:20 374次 阅读
再下一城!机器学习引擎Lc0赢得计算机国际象棋锦标赛

在OFC 2019上展示了用于大规模5G连接的光网络技术

5G也推动了超大规模云数据中心对400 Gb /s光网络连接的需求。Acacia Communica....
的头像 IEEE电气电子工程师学会 发表于 04-22 09:44 384次 阅读
在OFC 2019上展示了用于大规模5G连接的光网络技术

机器学习应用及数据集

本文介绍了包括图像分类、交易预测、情感分类、推荐系统、股票预测等在内的若干个机器学习应用及数据集。
的头像 中国人工智能学会 发表于 04-21 11:01 397次 阅读
机器学习应用及数据集

Marvin Minsky在计算机科学领域的传奇故事

上世纪 50 到 60 年代,Marvin Minsky 带领他的学生们在人工智能这片新开垦的知识领....
的头像 新智元 发表于 04-21 09:32 355次 阅读
Marvin Minsky在计算机科学领域的传奇故事

公司业务引入AI一定能成功吗?一个真实的故事

就像现在流行的那样,这个团队是数据科学组织的一部分,绕过 CIO 和任何技术或商业副总裁,直接向 C....
的头像 新智元 发表于 04-21 09:25 272次 阅读
公司业务引入AI一定能成功吗?一个真实的故事

深度学习到底是什么卷积神经网络的结构你了解吗

在很多人眼里,深度学习是一个非常神奇的技术,是人工智能的未来,是机器学习的圣杯。今天大恒图像带您一起....
的头像 澳门新萄京3522工程师 发表于 04-20 09:36 274次 阅读
深度学习到底是什么卷积神经网络的结构你了解吗

深度学习与传统计算机视觉到底是怎么样的关系

如今,深度学习在众多领域都有一席之地,尤其是在计算机视觉领域。尽管许多人都为之深深着迷,然而,深网就....
的头像 澳门新萄京3522工程师 发表于 04-20 09:28 222次 阅读
深度学习与传统计算机视觉到底是怎么样的关系

以线性回归算法来对三种梯度下降法进行比较

从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果样本数....
的头像 Imagination Tech 发表于 04-19 17:03 234次 阅读
以线性回归算法来对三种梯度下降法进行比较

卷积神经网络四种卷积类型

有些消息来源使用名称deconvolution,这是不合适的,因为它不是解卷积。为了使事情更糟,确实....
的头像 Imagination Tech 发表于 04-19 16:48 219次 阅读
卷积神经网络四种卷积类型

机器学习的特征工程是将原始的输入数据转换成特征

对于类别数量很多的分类变量可以采用特征哈希(Hashing Trick),特征哈希的目标就是将一个数....
的头像 Imagination Tech 发表于 04-19 16:42 374次 阅读
机器学习的特征工程是将原始的输入数据转换成特征

利用机器学习和大数据何建立信用评分的模型

利用Logistic回归拟合信用评分卡模型
发表于 04-19 16:27 92次 阅读
利用机器学习和大数据何建立信用评分的模型

基于Python3对携程网页上北京五星级酒店列表的爬取

Python3 爬取携程网[1] 根据好评优先顺序,获取北京五星级酒店列表...
发表于 04-19 16:25 56次 阅读
基于Python3对携程网页上北京五星级酒店列表的爬取

从多个角度对TensorFlow和PyTorch进行了对比,哪个会成为最有话语权的深度学习框架

从上图可以看出,TensorFlow在star、fork、watch和贡献者4个方面活跃度均是最高,....
的头像 新智元 发表于 04-19 14:41 265次 阅读
从多个角度对TensorFlow和PyTorch进行了对比,哪个会成为最有话语权的深度学习框架

决策树和随机森林模型

我们知道决策树容易过拟合。换句话说,单个决策树可以很好地找到特定问题的解决方案,但如果应用于以前从未....
的头像 新智元 发表于 04-19 14:38 213次 阅读
决策树和随机森林模型

FAIR何恺明团队近日发表神经结构搜索NAS方面的最新力作

在这一趋势的推进中,神经结构搜索 (neural architecture search, NAS)....
的头像 新智元 发表于 04-19 14:34 285次 阅读
FAIR何恺明团队近日发表神经结构搜索NAS方面的最新力作

Python之父也坐不住了放狠话谁再不停止996,就别想再用Python!

程序员李海刚毕业时是在一传统行业当开发,工作时长正常,是标准的965。工作一年后他跳到互联网公司,刚....
的头像 新智元 发表于 04-19 14:31 298次 阅读
Python之父也坐不住了放狠话谁再不停止996,就别想再用Python!

组合29个简单Python代码块,自动发现新算法

本文提出了一种基于演化算法的搜索策略,将其AAD中实现。AAD可以基于Python的子集作为语法结构....
的头像 新智元 发表于 04-19 13:47 159次 阅读
组合29个简单Python代码块,自动发现新算法

博士生求职AI岗位的经验分享

别指望这段时间能完成多少工作。正如一位同事所言:“当你听到这个或那个招聘人员的反馈时,你的大脑一直在....
的头像 新智元 发表于 04-19 13:36 246次 阅读
博士生求职AI岗位的经验分享

基于ssh协议的key验证的工具PSSH

基于SSH-key验证的运维管理工具-PSSH
发表于 04-19 12:05 24次 阅读
基于ssh协议的key验证的工具PSSH

源码python文件解析

21小时上手深度学习3-Neural Song
发表于 04-18 15:34 25次 阅读
源码python文件解析

如何利用Python对Ginkgo USB- CAN进行发送和接收数据

Python版本:硬件版本3.5.3 两套Ginkgo USB-CAN 接口:VTG203B 硬件连接: ITEM1    ITEM2 ...
发表于 04-18 12:04 341次 阅读
如何利用Python对Ginkgo USB- CAN进行发送和接收数据

基于HTTP间谍抓包插件分析有道翻译反爬机制

python实战:利用chrome抓包插件HTTP间谍分析有道翻译反爬机制...
发表于 04-15 11:41 32次 阅读
基于HTTP间谍抓包插件分析有道翻译反爬机制

请问如何利用Python对Ginkgo USB- CAN进行发送和接收数据

Python版本:硬件版本3.5.3 两套Ginkgo USB-CAN 接口:VTG203B 硬件连接: ITEM1    ITEM2 ...
发表于 04-13 09:35 76次 阅读
请问如何利用Python对Ginkgo USB- CAN进行发送和接收数据

机器学习的推荐系统运作假设

吴恩达机器学习笔记——推荐系统
发表于 04-12 07:09 35次 阅读
机器学习的推荐系统运作假设