Computer >> Máy Tính >  >> Hệ thống >> Linux

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Mạng nơ-ron có thể làm được rất nhiều thứ. Họ có thể giải thích hình ảnh, hiểu giọng nói của chúng tôi và dịch các cuộc trò chuyện. Nhưng bạn có biết chúng cũng có thể vẽ không?

Một bài báo nghiên cứu gần đây (có tựa đề "Một thuật toán thần kinh của phong cách nghệ thuật") đã khởi động một loạt các cuộc thảo luận trực tuyến với một số ví dụ trực quan nổi bật. Về cơ bản, bài báo thảo luận về một kỹ thuật đào tạo một mạng lưới thần kinh sâu để tách biệt phong cách nghệ thuật khỏi cấu trúc hình ảnh và kết hợp phong cách của một hình ảnh với cấu trúc của hình ảnh khác. Kết quả của tất cả những điều này là bạn có thể đào tạo một mạng lưới thần kinh khổng lồ để biến các bức ảnh thành "bức tranh thần kinh" trông như thể chúng được vẽ bởi các nghệ sĩ nổi tiếng - "đồ giả kỹ thuật số", có thể nói như vậy.

Dưới đây là một số ví dụ từ bài báo. Hình ảnh đầu tiên là hình ảnh gốc. Những hình ảnh sau đó là kết quả được tạo ra, với bức tranh mà từ đó phong cách được lấy mẫu được hiển thị ở dạng thu nhỏ.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Rất tiếc, các nhà nghiên cứu ban đầu đã không phát hành mã của họ. Tuy nhiên, một số lập trình viên gan dạ đã sao chép kết quả của họ trong vài ngày qua, và mã của họ có sẵn, mã nguồn mở trên Internet. Tất cả những gì bạn cần để chạy nó là một máy linux và một chút kiên nhẫn.

Hôm nay, tôi sẽ hướng dẫn bạn cách thực hiện điều đó và cho bạn thấy một số kết quả của riêng tôi. Bạn có thể coi đây là phần tiếp theo lỏng lẻo của hướng dẫn DeepDream của chúng tôi. Nó hơi phức tạp, nhưng bất kỳ ai sử dụng máy Linux đều có thể làm theo - không cần kinh nghiệm viết mã.

Thiết lập phần mềm

Trước hết, nếu bạn không quá vội hoặc không có máy Linux, bạn vẫn có thể chơi với DeepStyle bằng cách sử dụng bot DeepForger Twitter (gửi cho nó một hình ảnh và một phong cách và cuối cùng nó sẽ trả lời với kết quả của bạn. muốn). Nếu bạn muốn xử lý nhiều hình ảnh hơn một cách nhanh chóng (và kiểm soát nhiều hơn kết quả), hãy đọc hướng dẫn.

Trước hết, hãy đảm bảo rằng bạn có bản sao cập nhật của Ubuntu (14.04 là những gì tôi đã sử dụng). Bạn nên có thêm ít nhất một vài hợp đồng dung lượng ổ cứng. Để biết thêm thông tin, hãy xem hướng dẫn của chúng tôi về khởi động kép Ubuntu cùng với Windows. Bạn cũng sẽ cần các đặc quyền root, vì vậy hãy đảm bảo rằng bạn đã thực hiện trước khi tiếp tục.

Công cụ cơ bản

Đúng vậy, đây là một dự án mã nguồn mở, vì vậy chúng tôi sẽ muốn có Git Cài đặt. Git là tiêu chuẩn vàng cho phần mềm kiểm soát phiên bản. Khá nhiều dự án mã nguồn mở đáng biết đều được lưu trữ trên Github.

Để tải xuống và cài đặt Git, chỉ cần mở một thiết bị đầu cuối và nhập "

sudo apt-get install git

"và đồng ý với yêu cầu của người cài đặt.

Tiếp theo:chúng ta sẽ thiết lập một số công cụ cơ bản cần thiết để phần mềm hoạt động.

Đầu tiên, hãy cài đặt Lua. Đây là ngôn ngữ mà công cụ được viết. Nó khá đơn giản. Chỉ cần nhập "

sudo apt-get install lua5.2

"và làm theo quy trình cài đặt.

Thứ hai, chúng ta sẽ lấy Luarocks. Đây là công cụ giúp bạn cài đặt các công cụ khác dễ dàng hơn (bạn không yêu thích Linux?). Đối với cái này, hãy nhập "

sudo apt-get install luarocks

"và làm theo các bước cài đặt.

Thứ ba, chúng tôi sẽ cài đặt Luajit. Đây là một trình biên dịch phù hợp cho Lua sẽ giúp cuộc sống của chúng ta đơn giản hơn một chút. Chỉ cần nhập "

sudo apt-get install luajit

. "

Cho đến nay rất tốt.

Khung

Tiếp theo, chúng ta sẽ cài đặt Torch, một khuôn khổ máy tính và máy tính khoa học tạo nên xương sống của ứng dụng. Rất tiếc, không thể cài đặt cái này bằng apt-get (trình quản lý gói Ubuntu tiêu chuẩn).

May mắn thay, họ có một trình cài đặt một dòng sử dụng một số phép thuật dòng lệnh. Quay lại thiết bị đầu cuối của bạn và nhập "

curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash

".

Khi bạn hoàn tất, hãy nhập "

luajit -ltorch

". Thao tác này sẽ hiển thị giao diện ngọn đuốc và xác minh rằng mọi thứ đã được cài đặt chính xác.

Thoát khỏi điều đó.

Bây giờ chúng ta sẽ cài đặt loadcaffe - một gói mạng thần kinh cụ thể. Cài đặt phần phụ thuộc duy nhất của nó bằng cách nhập "

sudo apt-get install libprotobuf-dev protobuf-compiler

". Sau đó, bạn có thể cài đặt gói bằng cách sử dụng"

sudo luarocks install loadcaffe"

.

Kiểm tra hai lần Phụ thuộc

Cuối cùng, chúng tôi sẽ cập nhật trước một số nội dung chỉ để đảm bảo mọi thứ diễn ra suôn sẻ.

Nhập "

sudo luarocks install image

"để đảm bảo rằng gói hình ảnh của bạn được cập nhật. Tiếp theo, hãy nhập"

luarocks install nn

"sẽ làm tương tự cho gói 'nn' của bạn.

Cài đặt Deep Style

Ổn thỏa! Tại thời điểm này, chúng tôi đã sẵn sàng thực sự cài đặt phần mềm. Vì lợi ích của sự sạch sẽ, hãy tạo một thư mục mới trong thư mục chính của bạn ('mkdir DeepStyle'). Sau đó, nhập nó bằng cách sử dụng "

cd Deepstyle

". Bây giờ nhập"

sudo git clone https://github.com/jcjohnson/neural-style.git".

Tiếp theo, chúng tôi phải tải xuống mô hình. Pha một tách cà phê hoặc thứ gì đó, điều này sẽ mất một lúc. Quay lại thiết bị đầu cuối và nhập "

sudo sh models/download_models.sh

". Quá trình đó sẽ bắt đầu quá trình tải xuống phức tạp và lâu dài. Nếu không thành công do lỗi quyền, hãy thử cấp cho mình quyền đọc-ghi trên các thư mục có liên quan, sử dụng chmod.

Sử dụng Deep Style

Được rồi, chúng ta nên đi. Sử dụng phần mềm khá đơn giản.

Đảm bảo rằng bạn đang ở trong thư mục DeepStyle / neural-style trong thiết bị đầu cuối. Bây giờ, bạn sẽ cần một số hình ảnh để làm việc. Tải xuống chúng từ Internet (hoặc bất cứ thứ gì), sau đó sao chép chúng vào thư mục DeepStyle / neural-style bằng trình duyệt tệp.

Bây giờ bạn có thể sử dụng dòng lệnh để xử lý các hình ảnh riêng lẻ. Định dạng khá đơn giản:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg - content_image YOURPHOTOHERE.jpg -gpu -1

(Rõ ràng, bạn sẽ cần thay thế các phần trong TẤT CẢ CHỮ HOA bằng tên các tệp của bạn).

Điều đó sẽ bắt đầu mạng nơ-ron. Nó sẽ chạy trong khoảng một giờ, tạo ra các hình ảnh hội tụ một phần mới sau mỗi vài phút cho đến khi hoàn thành.

-gpu -1

cờ ngăn nó cố gắng truy cập GPU của bạn.

Sau vài giờ cố gắng (và đánh dấu hệ điều hành nhiều lần), tôi không thể làm cho Ubuntu và CUDA hoạt động tốt với GPU của mình (NVIDIA GTX 970). Nếu bạn may mắn hơn với điều đó, bạn sẽ muốn cài đặt CUDA và cudann.torch (xem github repo để biết thêm thông tin). Nếu không, điều đó tốt - nó sẽ vẫn hoạt động bằng cách sử dụng CPU của bạn; nó sẽ chậm hơn một chút.

Nếu bạn gặp bất kỳ vấn đề nào khi làm tất cả những điều này, chỉ cần hỏi tôi trong phần nhận xét và tôi sẽ cố gắng hết sức để giúp bạn.

Kết quả

Đây là một số hình ảnh tôi đã tạo trong vài ngày qua. Các kết quả khác nhau, nhưng nhiều kết quả khá ấn tượng.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Bức ảnh này là của bạn tôi Zack trong một chuyến đi bộ đường dài đến Yellowstone. Phong cách bắt nguồn từ một bức tranh trừu tượng, được tạo ra bởi Theresa Paden. Tôi tò mò muốn biết hệ thống sẽ hoạt động như thế nào khi sử dụng một hình ảnh hoàn toàn không có cấu trúc. Kết quả khá gọn gàng và bạn chắc chắn có thể thấy những điểm tương đồng với hình ảnh kiểu.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Bức tranh này do một trong những nghệ sĩ yêu thích của tôi, Charles Demuth (xem:Hương của một Nhà thờ Mới, và Hình 5 bằng vàng). Thật thú vị, Demuth là một trong những nguồn cảm hứng hình ảnh chính cho nghệ thuật của Team Fortress 2, như bạn có thể thấy từ hình ảnh phong cách.

Tôi cung cấp cho nó một hình ảnh của Thành phố Jersey mà tôi tìm thấy trên Wikimedia. Kết quả là ... khá tốt. Nó không bắt kịp sự góc cạnh trong phong cách của Demuth, nhưng nó chắc chắn có được vẻ mềm mại, kết cấu và bảng màu.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Đây là một nỗ lực để tạo ra một O'Keeffe tổng hợp, sử dụng một bức tranh khá trần tục về một số loài hoa mà tôi tìm thấy. Thành thật mà nói, kết quả là rất ngoạn mục. Về mặt thẩm mỹ, đây là một trong những kết quả yêu thích của tôi. Sự phong phú về màu sắc và hình dạng của O'Keeffe thể hiện rõ ràng. Các mép xếp lớp của cánh hoa trở thành mép của lá trên nền. Những bông hoa tự hòa tan thành màu sắc, trở nên gần như trừu tượng.

Đó sẽ là một bức tranh đẹp nếu một con người làm được điều đó. Tôi rất muốn dành vài ngày để hiển thị phiên bản có độ phân giải cao hơn của phiên bản này và đóng khung.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Đây là Shannon, bạn của tôi trong trang phục Halloween của cô ấy, trên bản in của Picasso. Điều thú vị là thiết bị đã chọn sơn phần dưới của khuôn mặt cô ấy màu trắng (tương tự như bố cục màu của tác phẩm Picasso). Tôi không chắc đây có phải là sự trùng hợp hay không, nhưng kết quả thật đáng kinh ngạc. Có vẻ như nó cũng đã xác định chính xác phần tóc của Shannon ở bên tay trái, và vẽ lại nó bằng cách sử dụng màu sắc và đường kẻ từ tóc trong hình ảnh kiểu. Ditto cho chiếc mũ của cô ấy.

Đây là một trong những điểm mà những hạn chế của kỹ thuật này bắt đầu trở nên rõ ràng. Nếu Picasso thực sự đang vẽ Shannon, ông ấy đã vứt bỏ cấu trúc khuôn mặt của cô ấy và làm lệch các đặc điểm để đạt được hiệu ứng như ý muốn. Hệ thống này không hiểu các loại khái niệm cấp cao đó và chỉ có thể bắt chước các khía cạnh bề ngoài của phong cách, chẳng hạn như các đường tối, góc cạnh và bảng màu.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Khá đơn giản:một bức ảnh về Tháp Eiffel và khác của Van Gogh Đêm đầy sao. Nó thực hiện tốt công việc hiển thị đám mây theo phong cách Van Gogh-ey, mặc dù không có mây trong hình ảnh gốc. Nó cũng thực hiện tốt công việc dịch chuyển cảnh từ ngày sang đêm.

Tôi không rõ tại sao nó lại quyết định biến phần chóp của tháp Fiffel thành một cột lửa. Nhìn thì có vẻ bắt mắt, nhưng nó không thực sự chính đáng từ dữ liệu đầu vào. Sau đó, tôi nhận ra rằng hình ảnh phong cách có 13 dải màu vàng dọc, dài trong đó, dưới dạng phản xạ trong nước. Đó là một cụm khá lớn, được cung cấp rất ít dữ liệu đào tạo. Điều đáng tiếc có lẽ đã học được rằng bất kỳ cạnh dọc nào có độ tương phản cao đều phải là một trong những hình ảnh phản chiếu đó. Bạn có thể thấy thêm các sọc dọc không liên quan mờ ảo trong mây.

Tạo các bức tranh thần kinh của riêng bạn với DeepStyle &Ubuntu

Nhấp vào đây để có giải pháp đầy đủ.

Cùng một bức tranh Van Gogh, nhưng lần này tôi đã cho nó một số ngôi sao thực tế để vẽ. Trong trường hợp này, phần trụ của tinh vân Eagle. Tôi thích kết quả - mặc dù, một lần nữa bạn có thể thấy nỗi ám ảnh của nó với các sọc màu vàng. Mọi phần thẳng đứng của cây cột trở thành một đường màu vàng sáng, lung lay. Nó cũng rõ ràng là khó chịu bởi màu xanh lá cây, điều không xuất hiện trong dữ liệu đào tạo và cố gắng hết sức để loại bỏ nó để chuyển sang màu xanh lam và đen.

Công nghệ

Một số kết quả từ điều này là cực kỳ hấp dẫn, mặc dù kỹ thuật này có những hạn chế rõ ràng. Một số hình ảnh có bố cục tệ hại và hệ thống gặp khó khăn với các nghệ sĩ trừu tượng hơn như Picasso - người nổi tiếng thích bóp méo chủ đề của mình, làm phân tán các đặc điểm của nó. Thuật toán chọn các đường góc của anh ta và màu sắc xung đột, nhưng vẫn là nô lệ cho các giá trị pixel của hình ảnh. Nó không có khả năng hiểu bạn cần phải đi quá xa so với tài liệu nguồn.

Điều làm tôi phấn khích về tất cả những điều này là tôi không nghĩ những hạn chế đó là cơ bản.

Cách tiếp cận đang được sử dụng ở đây - đào tạo một mạng trên một hình ảnh và sử dụng nó để xây dựng một hình ảnh khác - về cơ bản là một loại hack. Nó cung cấp cho mạng rất ít dữ liệu để làm việc. Phiên bản nâng cao hơn của ứng dụng này sẽ sử dụng một mạng có thông tin về nhiều bức tranh và có thể là cả hình ảnh thực, để cung cấp cho nó nhiều bối cảnh về hình ảnh mà nó đang cố gắng "vẽ".

Sự hiểu biết sâu sắc về phong cách chỉ có thể tồn tại trong một bối cảnh rộng lớn hơn. Bạn không thể lấy nó từ một hình ảnh duy nhất. Thiết kế một kiến ​​trúc cho phép hệ thống truy cập vào dữ liệu rộng hơn có thể cho phép hệ thống hiểu được hình ảnh "giống con người" hơn và cách các nghệ sĩ thể hiện các yếu tố khác nhau của thế giới thực. Một mạng lưới như vậy có thể tạo ra hình ảnh trừu tượng hơn và có bố cục tốt hơn. Các thuật toán như vậy sẽ không còn là một món đồ chơi thú vị (như thế này) và trở thành một cách để tạo ra tác phẩm thực tế, nguyên bản.

Đó là một suy nghĩ rất đặc biệt, theo một số cách.

Tạo hình ảnh của riêng bạn

Nếu bạn nhận được một kết quả đáng thất vọng, bạn có thể thử nghiệm các lựa chọn một chút để cố gắng thu được kết quả thuyết phục hơn. Danh sách đầy đủ có trên Github. Những điều quan trọng là

  • -content_weight -value Trọng số của thời hạn xây dựng lại nội dung là bao nhiêu. Mặc định là 5e0.
  • -style_weight -value: Bao nhiêu trọng lượng để cung cấp cho hình ảnh phong cách. Mặc định là 1e2.
  • -style_scale - giá trị: Hệ thống nên phân tích kích thước của các bản vá hình ảnh như thế nào (Lớn hơn trở nên trừu tượng hơn). Mặc định là 1.0.

Sau khi bạn làm mọi thứ theo ý mình, vui lòng đăng những hình ảnh thú vị nhất của bạn trong phần nhận xét. Tôi thực sự muốn xem các bạn nghĩ ra điều gì.

Tín dụng hình ảnh:họa sĩ não người qua Shutterstock