Stream摄像头内容到浏览器

需求: 将网络摄像头的流截取下来,进行处理如人脸识别等以后,重新发布到浏览器中直接通过浏览器访问。

本文采用了一个简单的容易实现的方案,使用java语言springboot 框架实现,其它语言应该也是类似。示例代码webcamera-stream-demo


1. 实现思路

使用websocket,客户端和服务器端建立一个长连接,服务器端以固定时间间隔发送一帧(一帧图片的jpeg的base64编码)给前端通过<img>展示。具体流程:

  1. 通过opencv 读取摄像头的RTSP视频流。RTSP协议被大多数网络摄像头支持,摄像头的RTSP流的url可以搜索一下各主流摄像头的rtsp地址格式
  2. 对读取的帧进行想要的操作
  3. 通过websocket发布操作后的帧

2. 具体实现

  • PreviewController.java greeting()方法会每隔50ms(20fps)调用一次,每次将最新的一帧发布出去
  • Camera.java 创建一个后台进程不断读取摄像头的视频流
  • resources/static/index.html(app.js) 客户端订阅socket接收帧,每接收到一帧就更新一次图片,20fps可以达到流畅的视频效果。
2018/5/11 posted in  engineering

linux入门与服务器使用指南

深度学习的体系依托于python,在linux系统繁华,希望从事深度学习研究非常有必要对linux有一个很好的了解。

本教程并非一个从零开始或者完全指南,你需要以下能力:

1. 了解linux 文件结构
2. 能使用命令行在各个路径下自由切换,查看文件夹和文件属性等
3. 了解什么是环境变量. 
4. 了解两个重要的文件的作用: /etc/profile, ~/.bashrc
5. 使用过pip安装package,在自己代码中使用过自己安装的package

看完本教程你将会掌握一下能力

1. 在无root权限的情况下自由的使用服务器
2. 自己编译软件,拥有不google也可以解决依赖各种不对应的问题的能力。
3. 使用conda管理自己的环境,管理自己的依赖包
Read more   2018/10/15 posted in  linux

lvm cache配置 -- 用固态硬盘提升大的存储盘的性能

Read more   2017/11/3 posted in  linux

[阅读笔记] Recursive Recurrent Nets with Attention Modeling for OCR in the Wild

1. 简介

论文提出了 \(R^2AM\) 模型用来在自然图片中的OCR。
主要有三个贡献:

i. 用recursive cnn 来用同样多的参数却增加了网络的层数,即增加了特征提取能力。
ii. 用RNN来model character-level language。
iii. 用 soft-attention来选择更好的特征组合,并且可以end-to-end的backpropagation训练。
Read more   2017/9/24 posted in  paper reading deep learning

Ubuntu 配置静态ipv6地址

在网上搜了很多ipv6配置教程,然而重启以后并不会生效。解决办法:

vim etc/sysctl.d/10-ipv6-privacy.conf
将内容改为:

net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
Read more   2017/9/6 posted in  linux

Recurrent Neural Networks前馈反馈推导

Read more   2017/5/16 posted in  theory

centos 安装shadowsocks,proxychains,genpac科学上网

本文说明的是如何让centos系统能够翻墙,而不是作为ss服务器。
shadowsocks 翻墙客户端
proxychains 让命令行可以通过ss代理
genpac生成proxy.pac文件以达到局部代理效果

Read more   2017/2/13 posted in  linux

深度学习、caffe简要入门指南

近年来,深度学习是机器学习的一大潮流。它在计算机视觉CV,自然语言处理NLP等领域取得了极大的成就。本文以深度学习框架Caffe作为工具简要讲解深度学习入门。

对深度学习和CNN比较了解的可以直接跳至第四节,对caffe比较了解的可以直接跳过本教程。

Read more   2017/1/15 posted in  deep learning

centos7.0安装配置,cuda,cudnn安装,anaconda安装,深度学习框架caffe,torch,theano,tensorflow安装

深度学习在linux上面会比windows上面方便很多,在windows上那叫个折腾。本文将会介绍centos7.0 的
安装,cuda和cudnn的安装,anaconda安装,以及各种深度学习框架的安装。

深度学习是计算密集型任务,不推荐在虚拟机中运行,装cuda和cudnn需要有nvidia显卡。

Read more   2016/12/7 posted in  linux deep learning

Double Jpeg detection with the same quantization matrix (Notes)

1. Introduction

介绍一下几篇论文中等质量双压缩检测的方法,备忘。State of the-art double jepg compression detection with the same quantization matrix.

2. Methods

2.1 Proposed by Fangjun et al.

Detecting Double JPEG Compression With the Same Quantization Matrix

2.1.1 jpeg压缩和解压缩过程导致的三种误差

i. 量化误差 压缩过程中,DCT系数量化导致的误差
ii. 截断误差 解压缩过程中,IDCT变换可能导致值在[0,255]之外,需要截断到0或者255
iii. 舍入误差 解压缩, IDCT变换得到的值为浮点数,需要舍入为最接近的整数

2.1.2 jpeg多重压缩统计特征

\(J_n\)代表压缩n次的Jpeg图片,\(D_n\)代表 \(J_n\)和\(J_{n+1}\)中JPEG系数(量化后的DCT系数)不一样的个数,\(S_n\)代表\(J_n\)中非0 JPEG系数的个数。
统计特征:随着n增加,\(D_n\)单调减小

Read more   2016/7/31 posted in  Digital Image Forensics

Digital image forensics: a booklet for beginners

1. Introduction

  • Digital image forensics(DIF)
    • two principal research paths:
      1. attempt at answering question a)(device captured the image as declared), by performing some kind of ballistic analysis to identify the device that captured the image, or at least to determine which devices did not capture it.
      2. exposing traces of semantic manipulation (i.e. forgeries) by studying inconsistencies in natural image statistics.

2. the role of digital image forensics in multimedia security

  • acquisition process and the tampering techniques leave subtle traces

    • active protection: watermarking

    - passive protection: tools in digital image forensics

Read more   2016/7/31 posted in  Digital Image Forensics