Categories
Capuchino Research Ý tưởng

[Deep Learning] Deploy flowers detection

Tình hình là hồi lâu có vọc thử cái vụ transfer learning để train máy nhận diện 5 loại hoa.

Sau đó mình muốn xây dựng thành một web app để mọi người có thể sử dụng được, cuối cùng mình quyết định dùng luôn flash python để xây web app. Đây là kết quả ^^

http://rose.dothanhlong.org:999/flower_detection

https://www.youtube.com/watch?v=DFUNUWa_aEA
]]>
Categories
Công nghệ Mẹo vặt Tài liệu

[Python] Nhận diện, tạo phụ đề tự động cho video và âm thanh autosub

Hướng dẫn cài đặt và sử dụng trên Windows và Mac OS X 

Nguồn: https://huwng.wordpress.com/2016/05/11/nhan-dien-tao-phu-de-tu-dong-cho-video-va-am-thanh/

[Cập nhật] Các bạn cài chương trình cho Windows chú ý nếu quá trình chạy bị lỗi hãy thay thế file autosub_app.py như ở bước 4.

[Cập nhật] Một số bạn gặp lỗi khi chạy lệnh python và pip trên cmd bị lỗi (‘pip’ is not recognized as an internal or external command) thì hãy thêm đường dẫn của hai thư mục C:\Python27\ và C:\Python27\Scripts (hoặc tương tự) vào biến môi trường Path nhé.

Các bạn đã bao giờ xem một bộ phim tiếng Anh nhưng chưa có phụ đề. Hay các bạn học theo một tutorial tải ở trên mạng bằng tiếng Anh, cố gắng nghe đi nghe lại nhưng không thể nghe được người ta nói gì chưa? Gần đây nhiều người có một giải pháp đó là upload video đó lên youtube và chờ youtube tạo sẵn phụ đề cho mình. Mặc dù youtube nhận diện khá tốt tuy nhiên đây là một công việc khá mất thời gian khi phải tải video lên youtube, sau đó lại xem trực tuyến trên youtube, đó là còn chưa kể đến các vấn đề về bản quyền nữa. Do đó, trong bài viết này mình sẽ hướng dẫn các bạn sử dụng công cụ Autosub để có thể nhanh chóng tạo phụ đề cho một video tiếng Anh bất kì.

Giới thiệu

Autosub là một công cụ được viết bằng ngôn ngữ lập trình Python, nguyên lý hoạt động của nó là sẽ tách phần âm thanh của video ra, sau đó upload lên mạng và sử dụng Google Web Speech API để nhận diện, tạo ra phụ đề và cuối cùng là lưu xuống máy tính của mình. Thông tin thêm về Autosub các bạn có thể tìm kiếm thêm ở đây

Môi trường

Mình chạy autosub trên hệ điều hành Ubuntu 14.04 đã cài đặt Python. Các bạn cũng có thể sử dụng Windows hoặc Mac OS X để chạy công cụ.

Hướng dẫn cài đặt

Trên Ubuntu

  1. Trước hết là máy của bạn phải cài đặt Python đã, nếu chưa, hãy chạy lệnhsudo apt-get update sudo apt-get install python python-dev sudo apt-get python pip
  2. Tiếp đến chúng ta cần phải cài đặt FFmpeg, sử dụng các lệnh sausudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ffmpeg -y
  3. Tiếp theo hãy cài đặt Autosub bằng lệnhsudo pip install autosub

Trên Windows

  1. Trước hết là máy của bạn phải cài đặt Python đã, nếu chưa, tải tại địa chỉ (chọn phiên bản 2.x.x):
    https://www.python.org/downloads/
    Các bạn lưu ý là thêm đường dẫn của hai thư mục C:\Python27\ và C:\Python27\Scripts vào biến môi trường nhé.
  2. Cài đặt FFmpeg
    2.1. Tải FFmpeg tại địa chỉ https://ffmpeg.zeranoe.com/builds/, chọn phiên bản 32bit hay 64bit tùy thuộc vào máy tính của bạn

    2.2. Giải nén file vừa tải về vào địa chỉ C:\ffmpeg, chú ý để cấu trúc file như hình

    2.3. Thêm địa chỉ của ffmpeg vào biến môi trường. Chuột phải My Computer chọn Properties-> Advanced System Settings -> Advanced-> Environments Variables… Tim đến Path ở ô System variables chọn Edit, thêm vào thư mục bin của ffmpeg
  3. Cài đặt autosub:
    3.1. Mở cmd bằng quyền admin

    3.2. Chạy lệnhpip install autosub
  4. Di chuyển tới thư mục C:\Python27\Scripts đổi tên file autosub thành autosub_app.py, nếu trong quá trình chạy mà phát sinh lỗi bạn hãy thay thế file autosub_app.py bởi file này

Trên Mac OS X

  1. Cài đặt ffmpeg bằng lệnh
    brew install ffmpeg
  2. Cài đặt autosub bằng lệnh
    pip install autosub

Hướng dẫn sử dụng để nhận diện video, âm thanh tiếng Anh

Mình sẽ hướng dẫn các bạn sử dụng công cụ qua một ví dụ, đó là bài nói chuyện TED Talks “The mind behind Linux” với sự xuất hiện của Linus Torvalds. Các bạn có thể xem video này tại đây hoặc tải về tại đây.

0. Trước hết, hãy nhìn qua hướng dẫn sử dụng một lượt đã nhé (Nếu bạn sử dụng công cụ để tạo sub tiếng Anh thì không cần quan tấm lắm đến bước này). Các bạn hãy chú ý đặc biệt đến hai tham số -S và -D, đây là hai tham số ngôn ngữ được nói trong video và ngôn ngữ của file phụ đề sẽ được xuất ra.

$ autosub -h
usage: autosub [-h] [-C CONCURRENCY] [-o OUTPUT] [-F FORMAT] [-S SRC_LANGUAGE]
               [-D DST_LANGUAGE] [--list-formats] [--list-src-languages]
               [--list-dst-languages]
               source_path
positional arguments:
  source_path           Path to the video or audio file
optional arguments:
  -h, --help            show this help message and exit
  -C CONCURRENCY, --concurrency CONCURRENCY
                        Number of concurrent API requests to make
  -o OUTPUT, --output OUTPUT
                        Output path for subtitles (by default, subtitles are
                        saved in the same directory and name as the source
                        path)
  -F FORMAT, --format FORMAT
                        Destination subtitle format
  -S SRC_LANGUAGE, --src-language SRC_LANGUAGE
                        Language spoken in source file
  -D DST_LANGUAGE, --dst-language DST_LANGUAGE
                        Desired language for the subtitles
  -K API_KEY, --api-key API_KEY
                        The Google Translate API key to be used. (Required for
                        subtitle translation)
  --list-formats        List all available subtitle formats
  --list-src-languages  List all available source languages
  --list-dst-languages  List all available destination languages

Trên Ubuntu

  1. Mở Terminal di chuyển đến thư mục chứa video
  2. Gõ lệnhautosub [tên_video]
  3. Nếu thành công, phụ đề sẽ được lưu ngay cùng với thư mục chứa video.
  4. Enjoy. Kết quả rất tốt.

Trên Windows

  1. Di chuyển đên thư muc C:\Python27\Scripts
  2. Chọn File-> Open command prompt-> Open command prompt as administrator
  3. Gõ lệnhpython autosub_app.py [tên_video]
    Nếu bạn gặp lỗi trong bước này thì hãy thay thế file autosub_app.py bởi file này.
  4. Kết quả rất tốt, tương tự như trên Ubuntu.

Hướng dẫn sử dụng để nhận diện video, âm thanh tiếng Việt

Làm tương tự như nhận dạng tiếng Anh nhưng hãy thêm hai tham số:

Trên Ubuntu

autosub [tên_video] -S vi -D vi

Trên Windows

python autosub_app.py [tên_video] -S vi -D vi

Kết quả thử nghiệm cũng rất tốt trên video bản tin.

5

Nhận xét

Autosub sử dụng Google Web Speech API  nên độ chính xác là khá cao, tốc độ thực thi tương đối nhanh, và dĩ nhiên, phụ thuộc vào tốc độ mạng của các bạn nữa. Các video từ 10 phút đổ xuống Autosub chỉ chạy trong vòng chưa đến 1 phút. Mình đã thử nghiệm nhận dạng sub cho bộ phim Big Hero 6 với độ dài 1 giờ 41 phút chương trình chạy chỉ trong vòng 4 phút. Cá nhân mình thấy Autosub rất hay, nhất là trong việc tạo sub tự động cho các video hướng dẫn chỉ bằng tiếng Anh, sẽ giúp đỡ rất nhiều trong quá trình học tập, tiếp cận thêm thông tin mà lại nhanh chóng hơn giải pháp sử dụng youtube.

Các bạn nếu trong quá trình cài đặt gặp lỗi gì hãy comment ở đây nhé, mình sẽ cố gắng giúp đỡ. Nếu bạn có giải pháp tốt hơn, hãy chia sẻ cho mình cùng biết với nhé.

]]>
Categories
Tài liệu

[Python] Text to speech – Chuyển văn bản thành giọng nói FPT Speech Synthesis

Cái này mình sưu tầm trên Viblo, lưu lại để dành đọc dần =))

https://viblo.asia/p/text-to-speech-chuyen-van-ban-thanh-giong-noi-Az45bm7qlxY

Mở đầu

Bài viết không liên quan tới machine learning. Chúng ta sẽ gọi api của fpt.

Ở bài viết này mình sẽ hướng dẫn cho các bạn tạo app text to speech. Có luôn source code để các bạn tải về dùng miễn phí hoàn toàn. Các bạn có thể dùng để nghe truyện, đọc báo hoặc tạo giọng nói cho nhà thông minh, chatbot của bạn chẳng hạn rất tiện phải không.

Xin lỗi mình không nhúng được file mp3 vào đây. bạn có thể vào link nhé Đây là một đoạn của google translate.

Google translate

Đây là api fpt

Fpt speech

Đây là phần giới thiệu của fpt

Tổng hợp tiếng nói (Speech synthesis) là bài toán cơ bản trong bài toán lớn về giao tiếp giữa người và máy (Human-Machine Interface).

Với tham vọng riêng của mình, Ban công nghệ FPT (FTI) đã nỗ lực nghiên cứu suốt gần 5 năm qua để cho ra mắt sản phẩm FPT Speech Synthesis. Sản phẩm là sự kết hợp của:

  • Ngôn ngữ học (Linguistics): âm vị học (Phonology), hình thái học (Morphology), ngữ dụng học (Pragmatics)
  • Vật lý học: âm học
  • Công nghệ: Xử lý ngôn ngữ tự nhiên (Natural Language Processing) , học máy (Machine Learning), xử lý tín hiệu số (Digital Signal Processing)

Được đánh giá là hệ thống tổng hợp tiếng nói tiếng Việt có chất lượng tốt nhất thị trường hiện nay, hệ thống tổng hợp tiếng Việt mới của FPT đang được mở trên Open FPT (http://openfpt.vn/). Các nhà phát triển có thể khai thác nguồn tài nguyên này để xây dựng ứng dụng của riêng mình trên các nền tảng khác nhau. Cho đến thời điểm này, đã có nhiều sản phẩm như “Giao thông thông minh” do FPT IS phát triển, hệ thống thông báo thông tin tài chính của VHT, hệ thống sinh ra video tự động từ bái báo điện tử, … đang sử dụng Speech Synthesis API của Open FPT và nhận được rất nhiều phản hồi tích cực từ người dùng.

Text to speech

Mình viết bằng python. Đầu tiên ta cần vào https://dev.openfpt.vn/ đăng ký tài khoản và tạo key để dùng cho app. Ok có cả phần test luôn. Các bạn có thể thử để xem chất lượng giọng nói.

Tài liệu ở đây. Chúng ta bắt đầu code.

Khởi tạo các tham số

Keys xin phép được ẩn đi. Mình chẳng tiếc nhưng sợ đông người dùng các bạn làm chậm của nhau. May cho chúng ta có phần comment của thằng bạn mình.

😄

Source code ở phía cuối bài viết, mình cũng lười không làm cái ứng dụng giao diện tử tế. Quan trọng là ý tưởng phải không .

😄

Chúng ta dùng nhiều key bởi vì fpt sẽ chặn số lượng request tính trên phút. Mình sẽ thay đổi liên tục các keys để lack vụ này .

import sys
import requests
#API Key của bạn
keys = [
        '#############################',
        '#############################',
  	'#############################',
	'#############################'
]
#Xác định các giọng đọc, voice có các giá trị là leminh (giọng nam miền bắc), male (giọng nam miền bắc),
#female (giọng nữ miền bắc), hatieumai (giọng nữ miền nam), ngoclam (giọng nữ Huế)
voice = "leminh"
# Xác định các giọng đọc, voice có các giá trị là:
# leminh (giọng nam miền bắc nghe ấm ),
# male (giọng nam miền bắc hơi già có tiếng thở),
# female (giọng nữ miền bắc trẻ, giọng trong đọc hơi chậm so với các giọng khác),
# hatieumai (giọng nữ miền nam nghe đk),
# ngoclam (giọng nữ Huế  đọc hơi bị ngắt nên cho chậm lại)
speed= "0"
#ngữ điệu 1 on. 0 off
prosody= "0"
#phần dưới này để phục vụ cho việc nhận tham số từ cmd khi sử dụng file start.py
# vd call file "start.py input" #input là input.txt lưu văn bản cần chuyển thành giọng nói
# hoặc chỉnh sửa short_direct đối với dùng jupyter notebook
# ngoài cách chạy command line có thể sử dụng jupyter notebook chủ yếu cho người phát triển
args = sys.argv
if len(args) >= 1:
    short_direct = args[1]
    direc = '{}/'.format(args[1])
# Thay ten file
short_direct = 'starttq'
direc = f'{short_direct}/'

Backup file mp3 trước đó

Mục đích tránh ghi đè mất file mp3 ở đợt trước

import os
import datetime
#backup file full.mp3
if short_direct not in os.listdir():
    os.mkdir(short_direct)
if 'full.mp3' in os.listdir('{}'.format(direc)):
    #create folder backup if not exists
    if 'backup' not in os.listdir('{}'.format(direc)):
        os.mkdir('{}backup'.format(direc))
    now = str(datetime.datetime.now()).replace(" ", "_").replace(":", "_")
    os.rename("{}full.mp3".format(direc), "{}backup/{}.mp3".format(direc, now))
    print('backup file full mp3 to {}backup/{}.mp3'.format(direc, now))
# Remove all file mp3
for item in os.listdir('{}'.format(direc)):
    if item.endswith(".mp3"):
        os.remove(os.path.join(direc, item))
print('remove all file mp3')

Kết quả

Gọi API và tải các file nhạc

Vì fpt giới hạn số lượng ký tự. Nên ta cần cắt ra thành nhiều đoạn. Cắt thế nào để không vào giữa một chữ (phải là “xin chào” chứ không thể cắt “xin ch” rồi file sau là “ào” được). Cách làm đơn giản là lấy 500 (giới hạn của fpt) lùi lại đến khi gặp dấu cách thôi rồi cắt từ đó. Mình để 480 cho chắc :D. Đối với python thì chúng ta có thư viện textwrap.

from textwrap import wrap
import time
import wget
import random
file = open("{}.txt".format(short_direct), "r", encoding="utf-8")
content = file.read()
wraptexts = wrap(content, 480)
for i in range(len(wraptexts)):
while True:
try:
text = wraptexts[i]
api_key = random.choice(keys)
print('\n', api_key)
url = "http://api.openfpt.vn/text2speech/v4?api_key={}&voice={}&speed={}&prosody={}".format(api_key, voice, speed, prosody)
response = requests.post(url, data=text.encode('utf-8'), headers={'voice':voice, 'speed':speed, 'prosody':prosody})
response = response.json()
print('\n', response['async'])
file = response['async']
print("downloading file {}/{} ".format(i+1, len(wraptexts)), "{}{:03}.mp3".format(direc, i))
except :
time.sleep(1)
continue
break
while True:
try:
wget.download(file, "{}{:03}.mp3".format(direc, i))
except :
time.sleep(0.1)
print('Co loi. Thu lai', end='')
continue
break
print('\nCOMPLETE')

Kết quả:

Gộp files

Sau bước trên ta đã tải được các file đơn bây giờ gộp lại. Trên linux thì mình nhớ có sẵn lệnh split và merge file rồi. Trước mình đã thử chia nhỏ ảnh của mình và merge lại vẫn dùng được. Còn trên windows thì không có mình dùng một cái ffmpeg để merge file audios. Còn tải ở đâu thì mình không nhớ, các bạn có thể xem tài liệu https://trac.ffmpeg.org/wiki/Concatenate, hoặc tải 3 file exe ở phần sourcecode.

#create list for merge
import subprocess
f = open("{}create_list.bat".format(direc), "w")
f.write("(for %%i in (*.mp3) do @echo file '%%i') > list.txt")
f.close()
s = "{}create_list.bat".format(direc)
os.chdir(short_direct)
print(os.listdir())
print(s)
# os.system("create_list2.bat".format(direc))
subprocess.Popen("create_list.bat")
os.chdir('..')

#merge file for create
#output: full.mp3
p = subprocess.run('ffmpeg -f concat -safe 0 -i {}list.txt -c copy {}full.mp3'.format(direc, direc))

Vậy là xong. Bạn muốn thưởng thức thì quay lại phần đầu mở audio lên.

]]>
Categories
GIS Sói's Tutorials

Ipython (Jupyter notebook) và Google Collaboratory

https://colab.research.google.com

Trước tiên, mình phải cười mình cái đã =))

Sói said :v

Chuyện là mấy hôm trước cắm cúi cài Jupyter Notebook để vọc Python

https://dothanhlong.org/?s=jupyter+notebook

https://dothanhlong.org/cai-dat-geo-notebook-docker/
https://dothanhlong.org/mot-so-note-ve-jupyter-notebook/
https://dothanhlong.org/cai-lai-vps-cai-jupyter-notebook/
https://dothanhlong.org/cai-2-version-python-vao-jupyter-notebook/

Và bị đau đầu nhiều nhất đó là cài thư viện GDAL cho Python. Sau khi đã cài xong xuôi hết rồi thì nay tình cờ đọc được một bình luận trên J2team về show code lập trình cái bánh chưng (nghe méo liên quan lắm nhỉ :v ) thì thấy có một bạn dùng python và viết trên cái “gì gì mà giao diện gần giống Jupyter Notebook“. Xem lại đường dẫn thì hóa ra là Google Collaboratory (Mình hay gọi là Google Cola cho dễ nhớ =))

Ồ, hóa ra Google cung cấp một công cụ miễn phí (dưới dạng Jupyter Notebook customize) cho mọi người sài chơi. Ngon quá! Thế thì mình test thử

Truy cập địa chỉ Google Colab:

https://colab.research.google.com


có hỗ trợ Python2 lẫn Python 3

Ồ, nó có hỗ trợ Python2 lẫn Python 3 luôn này

Viết thử vài đoạn code trên Google Collaboratory

Google Collaboratory

Chạy ngon lành :v

Xem thử cái này phải chạy trên linux không và test cấu hình

Xem cấu hình Google Collaboratory


Xem cấu hình Google Collaboratory

Xem cấu hình Google Collaboratory

Quá ngon, Google cho mình vọc nguyên một con máy ảo chạy Linux luôn, cấu hình cũng ngon hơn con VPS của mình nhiều =)), thông tin như sau:

RAM ~ 14Gb (13022)

Ổ cứng: 40Gb

Ôi, chạy phê luôn.

Test thử có cài sẵn thư viện Gdal chưa (Mình làm GIS và cái này là cái cần đối với mình nhưng cũng chua nhất khi phải cài nó @@)


Google Collaboratory vs Python Gdal

Ok, không lỗi. há há (đã được cài sẵn Gdal cho Python 2 và Python 3 luôn, vui quá xá!)

Há há, thế thì vọc thử cho đọc file hdf (ảnh viễn thám xem nào)

GDal đọc file HDF

Cái này sẽ lưu file Jupyter trên Google drive của mình, còn data khác thì phải upload lên cái VPS này

Upload dữ liệu lên Server Google Collaboratory

Tạo thư mục soiqualang
Download dữ liệu vào thư mục đó
Giải nén

Test thử gọi gdal ra đọc file ảnh

Đọc ngon lành

Hiển thị ảnh bằng gdal python

Ok, vậy là mãn nguyện rồi. kaka

Một vài tính năng khác Google Collaboratory

Cho phép xuất ra Github, Drive,..

Có hỗ trợ chạy GPU (Card đồ họa) để train machine learning


Có hỗ trợ chạy GPU (Card đồ họa) để train machine learning

Có hỗ trợ chạy GPU (Card đồ họa) để train machine learning

Mình nghĩ, với RAM 14Gb thì ngon rồi. Nhưng có một số nhược điểm mình nhận thấy là:

Không treo máy chạy liên tục 12h được

Máy ảo mình được Google cấp cho sẽ random, do vậy data mình up lên không có nghĩa là lần sau truy cập vô vẫn còn đó, chỉ có file ipython trên Google Drive của mình là còn.

Và cái này hơi cá nhân mình tí thì cái này cài Geonotebook chắc hơi gian nan :v

Tuy nhiên, dùng nó để học hay xử lý cái dữ liệu gì ngốn Ram thì Ok^^

À, mình đang vọc python từ đầu. Hồi trước có học mà ko đụng vô nên quên hết oy =))

Ai thích học thì có thể học chung ở đây^^

https://github.com/soiqualang/colab

https://github.com/soiqualang/colab

-soiqualang_chentreu-

]]>
Categories
GIS Linux Tài liệu

Note install GDAL cho python trên Linux

How to install GDAL

domlysz edited this page on Jul 13 · 22 revisions

GDAL is a popular and powerful geospatial data processing library. GDAL is available as a set of commandline utilities (ready to use binaries files). The developer oriented library is available as a C/C++ API. Bindings in other languages, including Python, are also available.

GDAL is an optional dependency, most of the functionalities of BlenderGIS are available without it. If the addon does not works as expected, installing GDAL will not solve the issue. GDAL can be useful for advanced users who need more support for GIS specific fomats and reprojection tasks directly in Blender. However, if you want to deal with heterogeneous data formats, projections or extents, the most straightforward strategy is to preprocess your data with QGIS before trying the import into Blender. QGIS is a powerful open source desktop GIS software, this is an essential tool for working with BlenderGIS because it will help prepare the data for a smooth import. Futhermore, installing GDAL with Blender can be really tricky because Blender bundle it’s how Python installation.

Linux

GDAL binary and Python binding are available through ubuntugis repository

sudo add-apt-repository ppa:ubuntugis-unstable

sudo apt-get install gdal-bin

sudo apt-get install python3-gdal

sudo apt-get install python3-numpy

Install Blender from a repository instead of ready to use tarballs from blender.org.

sudo add-apt-repository ppa:thomas-schiex/blender

Installing through this way, Blender will use the version of Python existing on the system instead of it’s own bundle version.

Warning : Currently, Numpy will fails if your distribution does not support Python 3.6. It can be solved by reinstalling Numpy with pip :

sudo apt-get install python-pip python3-pip

sudo pip3 install -U numpy

Windows

On Windows, the most easiest way to install GDAL Python Binding is to use the packages build by Christoph Gohlke and available here. Choose the package that match the version of Python bundle with Blender, you can determine it by opening the Python console in Blender. In the following screenshoot this is Python 3.5.3, the corresponding package is named GDAL-2.2.4-cp35-cp35m-win_amd64.whl.

The *.whl package file contains a stand alone GDAL installation including all needed files (binaries, libraries, Python binding…), so you don’t need to install any other file.

Blender bundle it’s own Python executable at blender_install_folder\2.7x\python\bin\python.exe, after downloading the whl file, put it in this directory and then open a new Windows terminal from this folder. To do this, in the file explorer right click while maintaining shift key and choose open command window here.

You need pip utility to install *.whl package files, so the first step is to install pip with the following command :

python.exe -m ensurepip

Then you can install the wheel file:

python.exe -m pip install GDAL-2.2.4-cp35-cp35m-win_amd64.whl

GDAL will be installed into blender_install_folder\2.7x\python\lib\site-packages\osgeo

GDAL Python binding needs Numpy to correctly working. Numpy is already included with Blender Python installation, but most of time this version does not match the one used to compile GDAL module. So, to ensure the best compatibility it’s more careful to also install Christoph Gohlke’s Numpy wheel package.

After dowloading the file, install it in the same way as previously :

python.exe -m pip install numpy-1.14.5+mkl-cp35-cp35m-win_amd64.whl

To finalize the installation, it’s necessary to define a new Windows environment variable named GDAL_DATA and pointing the following directory : blender_install_folder\2.7x\python\lib\site-packages\osgeo\data\gdal

To test the install open Blender Python console and type:

from osgeo import gdal

from osgeo import gdalnumeric

These statements should not return error.

For testing if GDAL_DATA environment variable is correctly setup type :

from osgeo import osr

osr.SpatialReference().ImportFromProj4(‘+init=epsg:3857’)

The second statement must return zero, a value >0 refers to an error code.

Mac Osx

Tested on Yosemite 10.10 and Blender 2.74

  1. Install Xcode and Macports from this link : https://www.macports.org/install.php
  2. Install gdal and gdal python bindings Open a terminal from spotlight or from Applications => Utilities => Terminal Then type with administratives rights :

sudo port install gdal py34-gdal

  1. Copy osgeo folder from python bindings to blender

cp -rf /opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/osgeo /**where_you_put_blender_on_your_mac**/Blender/blender.app/Contents/Resources/2.74/scripts/modules/

Replace where_you_put_blender_on_your_mac with the path where you run or install Blender

Test it in Blender Python console like windows installation.

https://github.com/domlysz/BlenderGIS/wiki/How-to-install-GDAL

]]>
Categories
Linux Sói's Tutorials

Một số Note về Jupyter Notebook

Trước giờ mình chỉ cài Jupyter Notebook trên Window để sử dụng cá nhân. Hôm nay cài Jupyter Notebook trên VPS và mở port ra Internet để có thể truy cập mọi nơi nên note lại một số cái =))

Cài đặt PIP

sudo apt-get install python-pip

Cài đặt môi trường ảo

pip install virtualenv

Update PIP

pip install –upgrade pip

Update môi trường ảo

pip install –upgrade virtualenv

Tạo máy ảo để cài Jupyter

virtualenv jupyter

Truy cập môi trường ảo

source jupyter/bin/activate

Cài đặt Jupyter

pip install jupyter

Khởi động Jupyter

jupyter notebook –allow-root

Khởi động Jupyter với port xác định

jupyter notebook –allow-root

Shutdown Jupyter

Trong cửa sổ terminal nhấn Ctrl + C

Cấu hình Jupyter port ra ngoài internet

Tạo file config

jupyter notebook –generate-config

Vị trí file config sẽ nằm ở đường dẫn

/root/.jupyter/jupyter_notebook_config.py

Cho phép truy cập từ bên ngoài vào Jupyter

Mở file jupyter_notebook_config.py sửa thông tin c.NotebookApp.ip thành

c.NotebookApp.ip = ‘0.0.0.0’

Vô start Jupyter lại và tận hưởng

Lúc login vô nhớ đổi pass, khi đổi pass sẽ cần đoạn mã hash, để biết đoạn mã đó thì gõ lệnh sau

jupyter notebook list

Ghi chú khác

Khi cài có thể sẽ gặp lỗi sau:

ImportError: Tornado requires an up-to-date SSL module. This means Python 2.7.9+ or 3.4+ (although some distributions have backported the necessary changes to older versions)

Để giải quyết mình đã dùng cách sau:

Latest tornado library doesn’t support your interpreter version. You have two options.
Either install old tornado (recommended):

pip install tornado==4.*
pip install jupyter

https://stackoverflow.com/questions/51000512/import-error-tornado-requires-an-updated-ssl-module-on-ubuntu-14-04

Or install new python. Ubuntu doesn’t provide an official package for it, so you have to use community package:

sudo add-apt-repository ppa:jonathonf/python-2.7
sudo apt-get update
sudo apt-get install python2.7
pip install jupyter

https://stackoverflow.com/questions/51000512/import-error-tornado-requires-an-updated-ssl-module-on-ubuntu-14-04

Tham khảo:

https://jupyter-notebook.readthedocs.io/en/stable/public_server.html

]]>
Categories
GIS Linux Tài liệu

How to Run GeoPySpark in a GeoNotebook with Docker

How to Run GeoPySpark in a GeoNotebook with Docker

Nguồn: https://www.azavea.com/blog/2017/09/29/how-to-run-geopyspark-in-a-geonotebook-with-docker/

First time using GeoPySpark

The purpose of this blog is to walk you through the easiest possible path to enable the use of GeoPySpark interactively in a Jupyter notebook. GeoPySpark is a Python library designed to support the processing of large geospatial data.

The target audience for this blog is someone who has some knowledge of both Python and GIS. Although to really take advantage of GeoPySpark you will need a deep knowledge of at least one of them, if not both.

I will still walk you through the concepts with the assumption that they are all new to you.

The technologies and concepts that I will discuss, to varying depth:

  1. Docker
  2. Jupyter notebook
  3. GeoNoteBook
  4. GeoTrellis
  5. GeoPySpark
  6. Weighted Raster Overlay

If you complete the tutorial you will be able to produce something that looks like this. You will be able to change the weights, colors, and datasets, interactively:

Getting started:

Docker

If you have not used Docker, there is no shortage of resources and tutorials to explore. I will keep it high level here: Docker is extremely valuable for its ability to create self-contained environments with all the necessary software dependencies, so ideally, an application will just work. The first link points to Docker’s documentation site, and is very thorough. But find a tutorial that suits your style to learn what docker is and how to install it.

Before moving on, confirm Docker is working correctly on your computer by running docker run hello-world in your terminal. You’ll know if its working if you get a Hello from Docker! message returned. You are ready to run your first docker image.

Jupyter

From their official documentation:

Notebook documents are both human-readable documents containing the analysis description [e.g. python code] and the results (figures, tables, [also maps] etc..) as well as executable documents which can be run to perform data analysis.

Notebooks provide an interface for interactive and exploratory analysis. This is a valuable tool for interacting with GeoTrellis via its python binding project: GeoPySpark.

GeoNotebook

From their GitHub:

GeoNotebook is an application that provides client/server environment with interactive visualization and analysis capabilities using Jupyter, GeoJS and other open source tools. Jointly developed by Kitware and NASA Ames.

The GeoTrellis team at Azavea has worked closely with the Kitware team to develop a strategy for working together to enable big data processing in GeoNotebooks. This tutorial relies on GeoNotebooks for visualization.

GeoTrellis

GeoTrellis is an open source, geographic data processing library designed to work with large geospatial raster data sets. It is is written in Scala and has an open-source Apache 2.0 license.

Scala is an imperative and functional programming language and offers many benefits for execution in a distributed processing environment. However. There is a significantly larger community of geospatial Python developers than Scala developers. Which is why we created GeoPySpark

GeoPySpark

GeoPySpark provides access to a portion of GeoTrellis features through Python.

A previous blog covers the technical accomplishments of creating python binding for a Scala project.

This tutorial exposes a minimal amount of GeoPySpark’s functionality. Take a look at the documentation to learn more.

Weighted Raster Overlay

This is a commonly used tool in geospatial analysis. Its purpose is to enable a user to interactively modify the “weight” of different criteria to determine priorities based on geospatial features. In the demo that follows, we will look at three factors (bars, cafes, transit stops) in San Francisco that might influence where you want to buy a home or set up a business. The tool will allow you to prioritize these features based on proximity. The model incorporates roads to provide a more realistic estimation of a proximity based on accessibility in a city where we travel on streets.

Into the notebook

Run this command from your terminal:

docker run -it –rm –name geopyspark -p 8000:8000 quay.io/geodocker/jupyter-geopyspark:blog

It should only take a couple of minutes to download the image.

This command does several things:

  1. Downloads the image from quay.io, a host for container images. This image contains a build of GeoPySpark + GeoNotebook + the tutorial packaged together.
  2. It maps the docker container’s 8000 port to your system’s 8000 port. This makes the container available to your host system’s web browser.
  3. -it Flags are commonly used when launching docker containers and are necessary, but their precise meaning is beyond the scope of this blog.
  4. –rm option cleans up the notebook after you exit the process.
  5. Now the notebook is available for use, type http://localhost:8000into your browser.
  6. You will need to login to the notebook, user: hadoop | password: hadoop

After logging in you will see one notebook called “sanfranmvp.ipynb.” Open it. You should see this screen:

Click on the first cell. It has a number of dependencies. “shift + enter” will execute the cell.

The notebook is meant to walk you through an example workflow to understand the different components of GeoPySpark.

The comments in each of the cells provide a brief explanation of what is happening in each of the cells.

GeoPySpark was designed to enable it to leverage distributed computation on large datasets. But it also supports more interactive development workflows on a single machine with smaller datasets. These workflows can then be scaled up to run on larger datasets. This can be accomplished through the use of an AWS service such as EMR.

I meant to keep this demo as simple as possible to introduce you to the tools necessary to get GeoPySpark running in a GeoNotebook. There are many more possibilities that will be explored in future blog posts.

]]>
Categories
GIS Sói's Tutorials WebGIS

Cài đặt Geo Notebook Docker

Đã cài được

Into the notebook

https://www.azavea.com/blog/2017/09/29/how-to-run-geopyspark-in-a-geonotebook-with-docker/

Run this command from your terminal:

docker run -it --rm --name geopyspark -p 8000:8000 quay.io/geodocker/jupyter-geopyspark:blog

It should only take a couple of minutes to download the image.

This command does several things:

  1. Downloads the image from quay.io, a host for container images. This image contains a build of GeoPySpark + GeoNotebook + the tutorial packaged together.
  2. It maps the docker container’s 8000 port to your system’s 8000 port. This makes the container available to your host system’s web browser.
  3. -it Flags are commonly used when launching docker containers and are necessary, but their precise meaning is beyond the scope of this blog.
  4. --rm option cleans up the notebook after you exit the process.
  5. Now the notebook is available for use, type http://localhost:8000into your browser.
  6. You will need to login to the notebook, user: hadoop | password: hadoop

http://dev.dothanhlong.org:8000/user/hadoop/notebooks/sanfranmvp.ipynb

Vui tóa! há há há

(Cơ mà cái do cái này khởi động từ docker nên chỉ khi nào mở “máy ảo” này thì mới sài được :v)

-soiqualang_chentreu-

]]>
Categories
Capuchino GIS Sói's Tutorials WebGIS

Thử cài Geo Notebook

Download ở đây

https://github.com/OpenGeoscience/geonotebook

Kiểm tra xem VPS đã cài python chưa

Tạo môi trường ảo

Xem thêm tạo môi trường ảo trong python ở đây

https://viblo.asia/p/gioi-thieu-virtual-environment-trong-python-l5y8RrQbvob3

virtualenv geonotebook

Lỗi chưa cài Virtual Environments

Cài đặt Virtual Environments

pip install virtualenv

Lỗi chưa cài pip =))

Cài đặt pip

sudo apt-get install python-pip

https://community.vpssim.vn/viewtopic.php?t=67
Chọn Y để cài pip

Khi cài xong bạn có pip và wheel. Giờ dùng pip cài môi trường ảo nào

pip install virtualenv

Tạo Môi trường ảo cho Geo Notebook

Tạo môi trường ảo cho Geo Notebook

Sau khi tạo môi trường ảo thì chũng ta sẽ có một thư mục như sau

Nó chỉ mới bao gồm các packges của python đang được cài sẵn trên máy thôi.

Khởi động môi trường ảo để cài Geo Notebook

source geonotebook/bin/activate

Khởi động môi trường ảo để cài Geo Notebook

Thấy có dòng (geonotebook) phía trước là ok

Download Geo Notebook

git clone https://github.com/OpenGeoscience/geonotebook.git

Lỗi chưa cài git

Cài git

apt-get install git

Do nãy mình tạo môi trường ảo tên geonotebook nên giờ git clone về không được. Mình đành đổi thư mục và kết sẽ sau khi  git clone về như sau

cd geonotebook

virtualenv geonotebook

source geonotebook/bin/activate

pip install -r prerequirements.txt

pip install -r requirements.txt

Fail quá fail rồi, lỗi nhiều quá ><

Tạm dừng ở đây :’)

]]>
Categories
Research Viễn thám Ý tưởng

Batch tools to download Landsat Images

Tool tải ảnh Viễn thám Landsat

https://dothanhlong.org/landsat_download/
Tình hình là hôm nay K – đồng nghiệp trong phòng cần tải tự động ảnh Viễn Thám LandSat, K đã tìm được một tool khá hay tên là “LANDSAT-Download” của Olivier Hagolle (Cảm ơn Olivier Hagolle). Tool này được viết bằng Python và phải chạy bằng dòng lệnh (command line) với các tham số khi gọi help như sau:
Options:
  -h, --help            show this help message and exit
  -o OPTION, --option=OPTION
                        scene or liste
  -l FIC_LISTE, --liste=FIC_LISTE
                        list filename
  -s SCENE, --scene=SCENE
                        WRS2 coordinates of scene (ex 198030)
  -d START_DATE, --start_date=START_DATE
                        start date, fmt('20131223')
  -f END_DATE, --end_date=END_DATE
                        end date, fmt('20131223')
  -c CLOUDS, --cloudcover=CLOUDS
                        Set a limit to the cloud cover of the image
  -u USGS, --usgs_passwd=USGS
                        USGS earthexplorer account and password file
  -p PROXY, --proxy_passwd=PROXY
                        Proxy account and password file
  -z UNZIP, --unzip=UNZIP
                        Unzip downloaded tgz file
  -b BIRD, --sat=BIRD   Which satellite are you looking for
  --output=OUTPUT       Where to download files
  --outputcatalogs=OUTPUTCATALOGS
                        Where to download metadata catalog files
  --dir=DIR             Dir number where files  are stored at USGS
  --collection=COLLECTION
                        Landsat collection
  --station=STATION     Station acronym (3 letters) of the receiving station
                        where the file is downloaded
  -k UPDATECATALOGFILES, --updatecatalogfiles=UPDATECATALOGFILES
                        Update catalog metadata files
Do chạy bằng command nên những người không hay dùng sẽ rất khó sử dụng, thế là mình nảy sinh ý định viết một cái tool nhỏ để thêm giao diện thêm các tham số cho tool của Olivier Hagolle, mục đích nhằm tạo sẵn file batch (*.bat) để chạy cái tool download ảnh landsat theo các tham số mà tool yêu cầu luôn, người dùng chỉ cần download về và chạy thôi.

Tada, kết quả tool download ảnh Viễn thám

Giao diện của tool Gen batch tool download Landsat Images [caption id="attachment_909" align="alignnone" width="1275"]Giao diện của tool Gen batch tool download Landsat Images Giao diện của tool Gen batch tool download Landsat Images[/caption] Tool này cho phép bạn nhập các điều kiện tải ảnh như:
Loại vệ tinh Ngày bắt đầu, ngày kết thúc Path/row của sence ảnh Giới hạn độ phủ mây (cloud cover)

Hướng dẫn tool download ảnh Viễn thám Landsat

Hi vọng tool này có thể giúp ích được mọi người trong quá trình tải hàng loạt ảnh Landsat một cách tự động

Lưu ý:

Path/row khu vực phải theo định dạng 3 chữ số (tổng cộng là 6 chữ số). Ví dụ Toulouse, thay vì viết 19830 thì phải viết 198030 Các tên thư mục không có khoảng trắng, viết liền, không dấu
-soiqualang_chentreu-]]>